[URGENT] Classloading issue
beugeair Jul 12, 2006 11:22 AMHello all,
I'm experiencing trouble with jboss class loading mechanism.
My J2EE application structure :
WebApp[jar in /WEB-INF/lib] <==> Ear[ejb-jar in /, jar in /APP-INF/lib]
I try JBoss 4.0.3SP1 and 4.0.4 with same exception.
Struts actions in the webApp call some Facade EJB which delegate call to other Worker EJB. All the Facade EJB are in one ejb-jar module inside the EAR bundle, each Worker EJB are in one ejb-jar module inside the EAR bundle
Scenario :
When I'm calling one action, all is fine, but when I'm calling another action, I get this exception :
java.lang.ClassNotFoundException: No ClassLoaders found for: si3si.metier.quartierforce.client.vo.VoAdrEml at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:212) at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:511) at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:405) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:242) at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:574) at org.jboss.invocation.MarshalledValueInputStream.resolveClass(MarshalledValueInputStream.java:109) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1538) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1585) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1293) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339) at org.jboss.invocation.MarshalledValue.get(MarshalledValue.java:91) at org.jboss.invocation.InvokerInterceptor.invokeLocalMarshalled(InvokerInterceptor.java:294) at org.jboss.invocation.MarshallingInvokerInterceptor.invoke(MarshallingInvokerInterceptor.java:61) at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61) at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70) at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112) at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100) ... 47 more
The class si3si.metier.quartierforce.client.vo.VoAdrEml appears one and only one time in one ejb-jar insde the ear and also one and only one time inside the webApp.
I've been looking after the best JBoss class loading strategy, I finally use the isolated one, the webApp and the ear are isolated and the CallByValue is enabled.
The classpath of the webApp seems to be good, the ear classpath too.
I can't understand why it works in another way and not in taht way ...
Please help !