2 Replies Latest reply on Jan 7, 2006 6:07 PM by leathurman

    Upgrade 3.0.6 to 4.0.2 NoSuchMethodException on EJB Call

    leathurman

      Hi All,

      I am trying to move to 4.0.2 from 3.0.6 and am getting a NoSuchMethodException when I make a remote EJB call.

      I have pinned it down to the class which is passed in this call. Without any parameters the calls works ok.

      I am now thinking it is related to changes in the classloader architecture. Is the classloading architecture for 4.0.2 the same as 4.0.1? I can only find the documentation for 4.0.1.

      As a side question ..i n the past we have isolated each of our ears using a loader-repository entry in each jboss-app.xml. Does this still apply to 4.0.2?

      I did not really understand the classloading document on the WIKI, but I will reread if this is likely to be the source of the problem.

      Regards
      Lea Thurman.

        • 1. Re: Upgrade 3.0.6 to 4.0.2 NoSuchMethodException on EJB Call
          starksm64

          There are no changes to the class loader architecture. There have been changes to default configurations of the class loader architecture in various versions and are discussed in the release notes.

          • 2. Re: Upgrade 3.0.6 to 4.0.2 NoSuchMethodException on EJB Call
            leathurman

            The problems seems to be because the class I am passing in the remote call comes from two different classloaders.

            We are using Spring and if I instantiate the class in the WAR controller and dump the classloader it comes out as below:

            23:00:29,807 INFO [STDOUT] WebappClassLoader
             delegate: false
             repositories:
            ----------> Parent Classloader:
            java.net.FactoryURLClassLoader@9c008d
            


            When I instantiate the same class in the EJB it comes out as follows:

            23:00:29,907 INFO [STDOUT] org.jboss.mx.loading.UnifiedClassLoader3@10eb20{ url=file:/usr/local/jboss-4.0.2/server/default/tmp/deploy/tmp5306102-os-onevehiclecheck.ear ,addedOrder=45}
            


            However I have other classes in this ejb jar that do come from the same classloader and their EJB calls are successful.

            When we were on 3.0.6 we were on Jetty and now we are moving to Tomcat. Are there any differences here?

            Help is much appreciated.