1 Reply Latest reply: Jan 10, 2012 1:27 PM by Ron Sigal RSS

unable to call EJB services in 4.0.5 installation from 5.1

max Shestopalov Newbie

Hi,

 

For a while we had 2 instances of 4.0.5 running where instance A was calling EJB services of instance B. We upgraded instance A to 5.1 and at that point started getting the InvokationException with the serial number mismatch between classes in the 2 different versions of jbossas-client.jar.

 

After doing a little research I started bringing up instance A with the property -Djboss.remoting.pre_2_0_compatible=true and the error I started seeing was

 

java.lang.Exception: Can not make remoting client invocation due to

not being connected to server.

       org.jboss.remoting.Client.invoke(Client.java:1729)

       org.jboss.remoting.Client.invoke(Client.java:629)

       org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:55)

       org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)

       org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)

       org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)

       org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)

       org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)

       org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:77)

       org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)

       org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102)

       $Proxy351.searchForExperiments(Unknown Source)

       gov.nih.nci.caintegrator2.external.caarray.CaArrayUtils.getExperiment(CaArrayUtils.java:168)

 

When I googled this I found a seemingly helpful thread speaking about

the new req in remoting 2.x that connect() be called before invoke()

and how this did not use to be required in remoting 1.x

 

here is the thread: http://community.jboss.org/message/368917#368917

 

but I actually can't figure out how we are doing this since

we aren't writing a client and invoking from the container.

 

also, fyi, as a test upgrading instance B to 5.1 as well... everything works fine.

 

Any help would be greatly appreciated.

  • 1. Re: unable to call EJB services in 4.0.5 installation from 5.1
    Ron Sigal Master

    Hi Max,

     

    What you say is very plausible.  When you download an EJB, you're downloading a proxy with an invocation handler, so you're running an invocation handler targeted to Remoting 1.4.x and executing it in an environment where it's calling Remoting 2.4/2.5. 

     

    You are correct that the Remoting call in the EJB invocation handler isn't accessible to you.

     

    When I do a Remoting release, I run a test suite that ensures that the new version is compatible with the old version, but the compatibility is at the Remoting level.  Your issue occurs outside of Remoting.

     

    Given that the missing Client.connect() call is in the EJB invocation handler, I would suggest that you pose the question in the EJB forum.  I know that there are compatibility test suites somewhere, but I don't remember what they guarantee regarding AS 4 and AS 5.  It might be something like, AS 4 can make invocations on  AS 5 but not vice versa.  By the way, EJB2 and EJB3 are separate subsystems, so be sure to pose the question on the appropriate forum.

     

    One suggestion I can make would be to replace the jboss-remoting.jar that comes with AS 5.1 with the one in AS 4.0.5.  I can't guarantee that you won't discover other problems.  For example, JBossMessaging, EJB2, and EJB3 all use Remoting, and it's possible that JBossMessaging depends on Remoting 2.4/2.5.  If you're not using JBossMessaging, you might be OK.

     

    In the end, you might have to upgrade instance B, the server.

     

    Sorry I couldn't give you a simpler answer.

     

    -Ron