Problem accessing CommandServiceBean from external client
karstendausb Aug 11, 2007 4:41 PMHello,
I am encountering problems accessing jbpm 3.2.1. on jboss, and I don't understand what is going wrong.
I am using the following sample code:
Properties props = new Properties(); props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.naming.client"); props.setProperty(Context.PROVIDER_URL, "jnp://localhost:1099"); props.setProperty("j2ee.clientName", "jboss-client-test"); InitialContext initialContext = new InitialContext(props); Object homeref = initialContext.lookup("ejb/CommandServiceBean"); RemoteCommandServiceHome remoteCommandServiceHome = (RemoteCommandServiceHome) avax.rmi.PortableRemoteObject.narrow(homeref, RemoteCommandServiceHome.class); RemoteCommandService remoteCommandService= remoteCommandServiceHome.create();
Trying the sample command
VariablesCommand vc=new VariablesCommand(); Object result=remoteCommandService.execute(vc);
seems to work well, at least the server logs
==> jboss-4.0.4.GA/server/default/log/server.log <== 2007-08-11 22:03:39,389 DEBUG [org.jbpm.ejb.impl.CommandServiceBean] handing over the command execution to the command service 2007-08-11 22:03:39,390 DEBUG [org.jbpm.configuration.JbpmContextInfo] creating jbpm context with service factories '[tx, message, scheduler, logging, persistence, authentication]' 2007-08-11 22:03:39,390 DEBUG [org.jbpm.JbpmContext] creating org.jbpm.JbpmContext@135df99 2007-08-11 22:03:39,390 DEBUG [org.jbpm.ejb.impl.CommandServiceBean] executing org.jbpm.command.VariablesCommand@1eaf3fa 2007-08-11 22:03:39,390 DEBUG [org.jbpm.JbpmContext] closing JbpmContext
But when I try to use any other Command which utilizes AbstractGetObjectBaseCommand , like GetProcessDefinitionsCommand for example:
GetProcessDefinitionsCommand vc=new GetProcessDefinitionsCommand(); Object result=remoteCommandService.execute(vc);
an exception is thrown which includes the following segment:
Caused by: java.io.InvalidClassException: org.jbpm.command.AbstractGetObjectBaseCommand; local class incompatible: stream classdesc serialVersionUID = 4676683671013111655, local class serialVersionUID = -7037309091658557544
The full stacktrace is shown below (nothing in the logs on server side).
I doublechecked that both (client and server) use the same jbpm-jpdl-version (3.2.1). The server is a Jboss 4.0.4 GA with an unmodified jbpm-ear.
Anybody seen this behaviour before? I am not an ejb nor an rmi expert, so I don't understand where the problem is. There are many entries in the forum concerning classcastexceptions, but this topic does not seem to be covered?
Thanks in advance,
Karsten
Here is the full stacktrace:
java.rmi.MarshalException: MarshalException; nested exception is: org.jboss.invocation.JBossLazyUnmarshallingException: getArguments failed at org.jboss.ejb.Container.invoke(Container.java:1004) at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) at org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke(JRMPInvoker.java:819) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:420) at sun.reflect.GeneratedMethodAccessor106.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294) at sun.rmi.transport.Transport$1.run(Transport.java:153) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:149) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707) at java.lang.Thread.run(Thread.java:595) Caused by: org.jboss.invocation.JBossLazyUnmarshallingException: getArguments failed at org.jboss.invocation.MarshalledInvocation.getArguments(MarshalledInvocation.java:513) at org.jboss.ejb.Container.invoke(Container.java:918) ... 20 more Caused by: java.io.InvalidClassException: org.jbpm.command.AbstractGetObjectBaseCommand; local class incompatible: stream classdesc serialVersionUID = 4676683671013111655, local class serialVersionUID = -7037309091658557544 at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:546) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1634) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at org.jboss.invocation.MarshalledValue.get(MarshalledValue.java:91) at org.jboss.invocation.MarshalledInvocation.getArguments(MarshalledInvocation.java:509) ... 21 more