[jboss-user] [JBoss Remoting] - How to verify that an remote interface on client and server side is the same?

windigo do-not-reply at jboss.com
Thu Nov 1 11:46:09 EDT 2012


windigo [https://community.jboss.org/people/windigo] created the discussion

"How to verify that an remote interface on client and server side is the same?"

To view the discussion, visit: https://community.jboss.org/message/773459#773459

--------------------------------------------------------------
Hi,
I've a fatclient consuming a @Remote ejb-service at jboss 6.1.0. Both client and server are sharing the same remote-interface.
To get a proxyobject for the service on client-side looks something like this:

Context context = new ...
EJBService service = context.lookup("jndiurl");

Since the EJBservice was sucessfully deployed at jboss and the jndi-url is sucessfully published I will always get a valid proxy-object on client side. The problem I'm facing quite often is that we update our cilentcode and forget to redeploy the updated server-application which is using this changed EJBService. 
For.example after changing a method signature or add a new method in the interface its still possible on client-side to lookup a valid remote-proxy-object from an outversioned @Remote-EJBService on server-side. Only after invoking the changed methods on client side I got a stacktrace like this:

Exception in thread "main" java.lang.NullPointerException
          at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:345)
          at org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53)
          at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91)
          at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
          at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:967)
          at org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:791)
          at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:744)
          at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:586)
          at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:234)
          at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:218)
          at org.jboss.remoting.Client.invoke(Client.java:2070)
          at org.jboss.remoting.Client.invoke(Client.java:879)
          at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:60)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:77)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.ejb3.async.impl.interceptor.AsynchronousClientInterceptor.invoke(AsynchronousClientInterceptor.java:143)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
          at $Proxy8.invoke(Unknown Source)
          at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:185)
          at $Proxy7.bla(Unknown Source)
          at EJBServiceClient.main(EJBServiceClient.java:33)
          at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:72)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:77)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.ejb3.async.impl.interceptor.AsynchronousClientInterceptor.invoke(AsynchronousClientInterceptor.java:143)
          at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
          at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
          at $Proxy8.invoke(Unknown Source)
          at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:185)
          at $Proxy7.bla(Unknown Source)
          at EJBServiceClient.main(EJBServiceClient.java:33)

Is it possible to check wether the packaged interface in the application-jars/ears/wars on client and server side are the same - something like the serialversionUID on entities?

thanks 
Felix
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/773459#773459]

Start a new discussion in JBoss Remoting at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2050]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20121101/f90ac1d8/attachment-0001.html 


More information about the jboss-user mailing list