2 Replies Latest reply on Nov 22, 2004 11:52 AM by Matthew Lumsden

    Accessing EJBs on different JBoss Versions: 3.0.x & 3.2.x

    Matthew Lumsden Newbie

      From what I am reading from searches on the Forums, it looks as if it is not possible to have a single client application using jbossall-client.jar communicate via JNDI with EJBs deployed on different versions of the JBoss App Server. Any official word from JBOSS organization on this matter would be appreciated.

      Now, my client application has been built and depends on jbossall-client.jar. What I've found is the client app requires the JBoss specific version of jbossall-client.jar at run-time in order to operate properly with the specific JBoss version. Here is the matrix of combinations I've tried with jbossall-client.jar and the client app:

      Case Build Runtime JBOSS Result
      1 3.0.7 3.0.7 3.0.7 Works
      2 3.0.7 3.2.6 3.0.7 Fails
      3 3.0.7 3.0.7 3.2.6 Fails
      4 3.0.7 3.2.6 3.2.6 Works
      
      5 3.2.6 3.0.7 3.0.7 Works
      6 3.2.6 3.2.6 3.0.7 Fails
      7 3.2.6 3.0.7 3.2.6 Fails
      8 3.2.6 3.2.6 3.2.6 Works
      


      Now, I believe the jbossall-client.jar is responsible for providing implementations for:

      -Djava.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
      -Djava.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

      I was hoping Case 1 and 3 would work and I'd be good. However, I have not been successful. In general, the Exception encountered is one of the following and depends on which way I'm going:

      1) Root cause: javax.naming.CommunicationException [Root exception is java.io.InvalidClassException: org.jboss.proxy.ejb.GenericEJBInterceptor; local class incompatible: stream classdesc serialVersionUID = 3844706474734439975, local class serialVersionUID = 4582256576523491346]

      OR

      2) Root cause: javax.naming.CommunicationException [Root exception is java.io.InvalidClassException: org.jboss.proxy.ejb.GenericEJBInterceptor; local class incompatible: stream classdesc serialVersionUID = 4582256576523491346, local class serialVersionUID = 3844706474734439975]

      So, this boils down to the client application requiring the JBOSS specific version of the jbossall-client.jar in order to communicate to that specific version of JBOSS. Given this, it will be impossible for my application to work. This seems ludicrous. There must be a way.

      I've got to believe I'm not the first developer who has needed to work with 2 different versions of the JBOSS server in a single client application.

      Thanks in advance for any light that can shed on this matter.
      Matt