3 Replies Latest reply on Feb 16, 2012 2:17 PM by shep

    Problems using jboss-as-web-7.0.1.Final and Jackson 1.7.1

    shep

      Recently I upgraded to the jboss-as-web-7.0.1.Final release and I had some issues.  I was running under the 7.0.0 release with no issues in respects to my jackson jars and my application finding them.  Once I upgraded, I am experiencing what seems to be classloading issues.

       

      I am deploying an expoded ear (not by choice but necessity) which contains a lib directory with my jackson1.7.1 jars.  My manifest has an entry for each as well.  Now when my war is deployed and my context listener is started, I get the following error:

       

      13:43:41,104 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/]] (MSC service thread 1-7) Exception sending context initialized event to listener instance of class com.vocollecthealthcare.yosemite.servlet.VocollectServletContextListener: java.lang.NoSuchMethodError: org.codehaus.jackson.type.JavaType.<init>(Ljava/lang/Class;I)V
      at org.codehaus.jackson.map.type.TypeBase.<init>(TypeBase.java:13) [jackson-mapper-asl-1.7.1.jar:]
      at org.codehaus.jackson.map.type.SimpleType.<init>(SimpleType.java:45) [jackson-mapper-asl-1.7.1.jar:]
      at org.codehaus.jackson.map.type.SimpleType.<init>(SimpleType.java:40) [jackson-mapper-asl-1.7.1.jar:]
      at org.codehaus.jackson.map.type.TypeBindings.<clinit>(TypeBindings.java:20) [jackson-mapper-asl-1.7.1.jar:]
      at org.codehaus.jackson.map.type.TypeFactory._fromType(TypeFactory.java:538) [jackson-mapper-asl-1.7.1.jar:]
      at org.codehaus.jackson.map.type.TypeFactory.type(TypeFactory.java:63) [jackson-mapper-asl-1.7.1.jar:]
      at org.codehaus.jackson.map.ObjectMapper.<clinit>(ObjectMapper.java:182) [jackson-mapper-asl-1.7.1.jar:]
      at com.vocollecthealthcare.yosemite.conversion.jackson.JacksonConverter.<clinit>(Unknown Source) [app_core.jar:]
      at com.vocollecthealthcare.yosemite.db.hibernate.JSONValueEntryType.nullSafeGet(Unknown Source) [app_server.jar:]
      at org.hibernate.type.CustomType.nullSafeGet(CustomType.java:128) [hibernate-3.3.2.jar:]
      at org.hibernate.type.AbstractType.hydrate(AbstractType.java:105) [hibernate-3.3.2.jar:]
      at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2114) [hibernate-3.3.2.jar:]
      at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1404) [hibernate-3.3.2.jar:]
      at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1332) [hibernate-3.3.2.jar:]
      at org.hibernate.loader.Loader.getRow(Loader.java:1230) [hibernate-3.3.2.jar:]
      at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603) [hibernate-3.3.2.jar:]
      at org.hibernate.loader.Loader.doQuery(Loader.java:724) [hibernate-3.3.2.jar:]
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) [hibernate-3.3.2.jar:]
      at org.hibernate.loader.Loader.doList(Loader.java:2232) [hibernate-3.3.2.jar:]
      at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129) [hibernate-3.3.2.jar:]
      at org.hibernate.loader.Loader.list(Loader.java:2124) [hibernate-3.3.2.jar:]
      at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401) [hibernate-3.3.2.jar:]
      at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363) [hibernate-3.3.2.jar:]
      at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) [hibernate-3.3.2.jar:]
      at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149) [hibernate-3.3.2.jar:]
      at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) [hibernate-3.3.2.jar:]
      at com.vocollecthealthcare.yosemite.manager.GenericManagerHibernate.runQueryWithLockCheck(Unknown Source) [app_server.jar:]
      at com.vocollecthealthcare.yosemite.manager.GenericManagerHibernate.executeNamedListQuery(Unknown Source) [app_server.jar:]
      at com.vocollecthealthcare.yosemite.manager.SiteManagerHibernate.listAll(Unknown Source) [app_server.jar:]
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_25]
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_25]
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_25]
      at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_25]
      at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) [spring-2.5.6.jar:]
      at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) [spring-2.5.6.jar:]
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) [spring-2.5.6.jar:]
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) [spring-2.5.6.jar:]
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) [spring-2.5.6.jar:]
      at com.vocollecthealthcare.yosemite.manager.FinderIntroductionInterceptor.invoke(Unknown Source) [app_server.jar:]
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) [spring-2.5.6.jar:]
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) [spring-2.5.6.jar:]
      at $Proxy15.listAll(Unknown Source) at com.vocollecthealthcare.yosemite.util.SiteUtil.retreiveSiteData(Unknown Source) [app_core.jar:]
      at com.vocollecthealthcare.yosemite.util.SiteUtil.findSite(Unknown Source) [app_core.jar:]
      at com.vocollecthealthcare.yosemite.util.LogCustomizer.activateOptions(Unknown Source) [app_core.jar:]
      at com.vocollecthealthcare.yosemite.util.LogCustomizer.append(Unknown Source) [app_core.jar:]
      at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251) [log4j-1.2.16.jar:]
      at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66) [log4j-1.2.16.jar:]
      at org.apache.log4j.Category.callAppenders(Category.java:206) [log4j-1.2.16.jar:]
      at org.apache.log4j.Category.forcedLog(Category.java:391) [log4j-1.2.16.jar:]
      at org.apache.log4j.Category.info(Category.java:666) [log4j-1.2.16.jar:]
      at com.vocollecthealthcare.yosemite.servlet.VocollectServletContextListener.createAppContextInServletContext(Unknown Source) [classes:]
      at com.vocollecthealthcare.yosemite.servlet.VocollectServletContextListener.contextInitialized(Unknown Source) [classes:]
      at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3368) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3821) [jbossweb-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.1.Final.jar:7.0.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
      at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_25]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_25]
      at java.lang.Thread.run(Thread.java:662) [:1.6.0_25]

      13:43:41,237 ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-7) Error listenerStart

       

      What changed with this last Final release that would cause this issue now when it was working fine.  It was working fine in 7.0.0-CR1 as well but now doesn't. 

        • 1. Re: Problems using jboss-as-web-7.0.1.Final and Jackson 1.7.1
          shep

          Ok.  I was able to fix this by

          -  adding my jackson-[ * ]-1.7.1.jar files to the accociated directories under modules/org/codehaus/jackson/<jackson dir>/main directories

          -  and modifying the jackson module.xml files under modules/org/codehaus/jackson/<jackson dir>/main directories to load the new jars.

           

          Server started and appears to be working fine.

          • 2. Re: Problems using jboss-as-web-7.0.1.Final and Jackson 1.7.1
            jaikiran

            That's actually not the right way to do it. Looks like your application requires a different version of that jar. Can you explain a bit more about your application, it's packaging and the dependencies?

            • 3. Re: Problems using jboss-as-web-7.0.1.Final and Jackson 1.7.1
              shep

              I am packaging the application and deploying via an exploded ear directory.  I have created a lib directory at the ear level for dependency jars and have the individual application modules in their own jars under the war directories WEB-INF/lib directory.

               

              I believe my issue had something to do with the classloader.

               

              Why are the changes that I made to implement a newer version of one of the modules incorrect?  Is it just due to what the code was certified with?  The changes resolved the issue and there are no problems with my JBoss server.  Just want to understand as much as I can about this environment why I should be doing this or that.