8 Replies Latest reply on Jul 26, 2007 5:05 PM by zebathon

    ClassCastException while while class transfering from ear to

    zebathon

      Hello,
      I'm getting ClassCastException while while class (AccountManagerBean) loading from my ear to a war. I'm pretty sure that I don't have two versions of my class floating around (which I know can cause such an exception). Any help at all would be appreciated.

      Here is the code from the servlet in the war.

      Object object = EJB3Finder.lookup(AccountManager.class, AccountManagerBean.JNDI_LOCAL_BINDING);
      
       AccountManagerBean accountManager = (AccountManagerBean) object;


      I'm not doing any scoped class loading. This is a default jboss4.2.1 install with no changes to the class loading mechanism. The requesting code is in a servlet class in a war. The war is in the ear. WindowsXP.

      I've confirmed by the ucl log that my class (AccountManagerBean) is being found and loaded by the ear loader, and followed immediately by the ClassCaste as shown below.

      [453359,RepositoryClassLoader,http-127.0.0.1-80-1] loadClass org.jboss.mx.loading.UnifiedClassLoader3@a70122{ url=file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear ,addedOrder=45} name=com.garmin.mb.account.manager.AccountManagerBean, loadClassDepth=0
      [453359,RepositoryClassLoader,http-127.0.0.1-80-1] Loaded class from cache, com.garmin.mb.account.manager.AccountManagerBean@8a58a5<CodeSource: (file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/activity-1.0-SNAPSHOT.jar <no signer certificates>)>
      [453359,RepositoryClassLoader,http-127.0.0.1-80-1] loadClass org.jboss.mx.loading.UnifiedClassLoader3@a70122{ url=file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear ,addedOrder=45} name=com.garmin.mb.account.manager.AccountManagerBean class=class com.garmin.mb.account.manager.AccountManagerBean cl=org.jboss.mx.loading.UnifiedClassLoader3@a70122{ url=file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear ,addedOrder=45}
      [453375,RepositoryClassLoader,http-127.0.0.1-80-1] loadClass org.jboss.mx.loading.UnifiedClassLoader3@a70122{ url=file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear ,addedOrder=45} name=java.lang.jaxws.ClassCastExceptionBean, loadClassDepth=0


      Here are my class loading configs in tomcat
      <attribute name="Java2ClassLoadingCompliance">false</attribute>
       <attribute name="UseJBossWebLoader">false</attribute>
       <attribute name="FilteredPackages">javax.servlet</attribute>


      Here is the report for a class search via UnifiedRepository mbean in the jmx console, which proves there is only one instance correct?

      com.garmin.mb.account.manager.AccountManagerBean Information
      Repository cache version:
      com.garmin.mb.account.manager.AccountManagerBean(8a58a5).ClassLoader=org.jboss.mx.loading.UnifiedClassLoader3@a70122{ url=file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear ,addedOrder=45}
      ..org.jboss.mx.loading.UnifiedClassLoader3@a70122{ url=file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear ,addedOrder=45}
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/activity-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/analyzer-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/dao-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/identifier-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/measurement-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/upload-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/kml-xjc-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/commons-logging-1.0.4.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/commons-lang-2.1.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/ehcache-1.2.4RC.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/stax-api-1.0.1.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/gpx-xjc-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/axm-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/persistence-api-1.0.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/stax-1.2.0.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/axm-xjc-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/tcx-xjc-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/sql-1.0-SNAPSHOT.jar
      ....file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/wannabecool-1.0-SNAPSHOT-exp.war/
      ..org.jboss.system.server.NoAnnotationURLClassLoader@5d173
      ..sun.misc.Launcher$AppClassLoader@92e78c
      ....file:/C:/Program%20Files/Java/jdk1.5.0_11/lib/tools.jar
      ....file:/C:/dev/jboss-4.2.1.GA/bin/run.jar
      ..sun.misc.Launcher$ExtClassLoader@9fbe93
      ....file:/C:/Program%20Files/Java/jdk1.5.0_11/jre/lib/ext/dnsns.jar
      ....file:/C:/Program%20Files/Java/jdk1.5.0_11/jre/lib/ext/localedata.jar
      ....file:/C:/Program%20Files/Java/jdk1.5.0_11/jre/lib/ext/localedata.pack
      ....file:/C:/Program%20Files/Java/jdk1.5.0_11/jre/lib/ext/sunjce_provider.jar
      ....file:/C:/Program%20Files/Java/jdk1.5.0_11/jre/lib/ext/sunpkcs11.jar
      ++++CodeSource: (file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/activity-1.0-SNAPSHOT.jar )
      Implemented Interfaces:
      ++interface com.garmin.mb.account.manager.AccountManager(16e2e5)
      ++++ClassLoader: org.jboss.mx.loading.UnifiedClassLoader3@a70122{ url=file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear ,addedOrder=45}
      ++++CodeSource: (file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear-contents/activity-1.0-SNAPSHOT.jar )

      ### Instance0 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@a70122{ url=file:/C:/dev/jboss-4.2.1.GA/server/default/tmp/deploy/tmp31419motionbased-1.0-SNAPSHOT.ear ,addedOrder=45}


        • 1. Re: ClassCastException while while class transfering from ea
          zebathon

          I should add that I posted in here because could there be an error in my deployment, or jboss config?

          • 2. Re: ClassCastException while while class transfering from ea
            zebathon

            I guess i should also add the exception heh

            2007-07-25 19:26:35,390 ERROR [org.codehaus.xfire.handler.DefaultFaultHandler] Fault occurred!
            java.lang.ClassCastException: $Proxy94
            at com.ifyouwannabecool.impl.ApiClientWSImpl.addApiClient(ApiClientWSImpl.java:61)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:585)
            at org.codehaus.xfire.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:54)
            at org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessage(ServiceInvocationHandler.java:271)
            at org.codehaus.xfire.service.binding.ServiceInvocationHandler$1.run(ServiceInvocationHandler.java:84)
            at org.codehaus.xfire.service.binding.ServiceInvocationHandler.execute(ServiceInvocationHandler.java:132)
            at org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:107)
            at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
            at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
            at org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
            at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:278)
            at org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:130)
            at org.codehaus.xfire.spring.remoting.XFireServletControllerAdapter.handleRequest(XFireServletControllerAdapter.java:67)
            at org.codehaus.enunciate.modules.xfire.EnunciatedXFireExporter.handleRequest(EnunciatedXFireExporter.java:121)
            at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
            at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:717)
            at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:658)
            at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)
            at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:357)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)


            • 3. Re: ClassCastException while while class transfering from ea
              trumml

              Is the AccountManagerBean an interface?

              • 4. Re: ClassCastException while while class transfering from ea
                trumml

                Is the AccountManagerBean an interface?

                • 5. Re: ClassCastException while while class transfering from ea
                  zebathon

                  No, however when I first got the error I was using an interface (AccountManager), and I was getting passed the bean (AccountManagerBean). I read in the wiki that this could be a problem and changed it, but unfortunately still getting the error.

                  • 6. Re: ClassCastException while while class transfering from ea
                    zebathon

                    I should also say that i have gone over these two pages with a fine tooth comb.
                    http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossClassLoadingUseCases
                    http://wiki.jboss.org/wiki/Wiki.jsp?page=ClassLoadingConfiguration

                    I've also tried setting true which still produced the error.

                    • 7. Re: ClassCastException while while class transfering from ea
                      zebathon

                      I meant to say i've tried, this which didn't succeed.

                      <attribute name="UseJBossWebLoader">true</attribute>


                      • 8. Re: ClassCastException while while class transfering from ea
                        zebathon

                        We'll I've gotten around the issue by using ejb remotes. (Before I was trying to access a local). I still wonder how I was getting the ClassCastException, since I would prefer to use locals while the war is inside the ear.