[jboss-user] [JNDI/Naming/Network] - Why does JBoss4.0.5GA not compatible with JBoss4.2.1GA while

Herculesx do-not-reply at jboss.com
Tue Aug 28 23:47:15 EDT 2007


  I have an application EAR package that deployed in a JBoss4.0.5GA server, the EAR have lots of EJB2.1 style beans and a WAR. Now I need to call a remote EJB3 style bean in another JBoss4.2.1GA server. My JNDI configuration is:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
  | java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
  | java.naming.provider.url=10.100.x.x
  But when it invoke lookup(), cause exceptions:
javax.naming.CommunicationException [Root exception is java.io.InvalidClassException: org.jboss.remoting.InvokerLocator; local class incompatible: stream classdesc serialVersionUID = -4977622166779282521, local class serialVersionUID = -2909329895029296248]
  | 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722)
  | 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
  | 	at javax.naming.InitialContext.lookup(InitialContext.java:351)
  | 	at com.xued.ejb3.ejb.SSOBeanClient.main(SSOBeanClient.java:15)
  | Caused by: java.io.InvalidClassException: org.jboss.remoting.InvokerLocator; local class incompatible: stream classdesc serialVersionUID = -4977622166779282521, local class serialVersionUID = -2909329895029296248
  | 	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.readOrdinaryObject(ObjectInputStream.java:1699)
  | 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
  | 	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
  | 	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
  | 	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
  | 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
  | 	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
  | 	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
  | 	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
  | 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
  | 	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
  | 	at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
  | 	at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72)
  | 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:652)
  | 	... 3 more
  But when I use jbossall-client.jar in JBoss4.2.1GA to run a client program with the same code, it is nomal. I try to copy the jbossall-client.jar from JBoss4.2.1GA in my EAR directory, and make this jar in ejb jar class path, but the default ClassLoader doesn't load this jar. So I modified the jboss-app.xml, use HeirarchicalLoaderRepository3 to load local jar file first, as this:
<?xml version="1.0" encoding="UTF-8"?>
  | <jboss-app>
  |    <loader-repository loaderRepositoryClass='org.jboss.mx.loading.HeirarchicalLoaderRepository3'>
  |       sso:loader=sso.ear
  |       <loader-repository-config configParserClass='org.jboss.mx.loading.HeirarchicalLoaderRepository3ConfigParser'>
  |          java2ParentDelegaton=true
  |       </loader-repository-config>
  |    </loader-repository>
  | </jboss-app>
   Then the situation even get worse, the EJB2.1 beans deploy failed!
WARN  [ServiceController] Problem creating service jboss.j2ee:jndiN
  | ame=ejb/AsyncSender,service=EJB
  | java.lang.ClassCastException: $Proxy70
  |         at org.jboss.ejb.plugins.local.BaseLocalProxyFactory.getEJBLocalHome(Bas
  | eLocalProxyFactory.java:243)
  |         at org.jboss.ejb.Container.createService(Container.java:803)
  |         at org.jboss.ejb.SessionContainer.createService(SessionContainer.java:16
  | 0)
  |         at org.jboss.system.ServiceMBeanSupport.jbossInternalCreate(ServiceMBean
  | Support.java:260)
  |         at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMB
  | eanSupport.java:243)
  |         at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
  | sorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
  | er.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.system.ServiceController$ServiceProxy.invoke(ServiceControl
  | ler.java:978)
  |         at $Proxy0.create(Unknown Source)
  |         at org.jboss.system.ServiceController.create(ServiceController.java:330)
  | ...
   So, is there any way to call Jboss 4.2.1GA EJB3 bean from a JBoss 4.0.5GA EAR application?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4078994#4078994

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4078994



More information about the jboss-user mailing list