[jboss-user] [Beginners Corner] - loading classes by unregistered classloader
fuzebest
do-not-reply at jboss.com
Fri Feb 16 06:28:57 EST 2007
I really don't know where to post this message, so post it here.
I have an ear containing sar archive. Ear uses own classloader repository defined in META-INF/jboss-app.xml. Sar contains MBean exporting service via RMI, all dependant classes are in the server lib directory.
If I put ear into deploy directory and start Jboss (v 4.0.4, the same applies to 4.0.5) everything works fine.
But if I redeploy ear, Jboss gives me NullPointerException (actually ClassNotFoundException) loading one of my classes.
Detailed stack trace
| java.lang.NullPointerException
| at org.jboss.mx.loading.RepositoryClassLoader.findClass(RepositoryClassLoader.java:620)
| at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
| at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:464)
| 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 sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:154)
| at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620)
| at org.jboss.system.JBossRMIClassLoader.loadClass(JBossRMIClassLoader.java:91)
| at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247)
| at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197)
| at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1544)
| 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.readObject(ObjectInputStream.java:348)
| at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
| at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:375)
| at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
| 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)
| at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
| at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
| at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:343)
| at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
| at org.springframework.remoting.rmi.RmiServiceExporter.prepare(RmiServiceExporter.java:256)
|
(Yes, it's spring RMI exporter)
After class loading log investigation I've found
| [2961838,RepositoryClassLoader,ScannerThread] Unregistering cl=org.jboss.mx.loading.UnifiedClassLoader3 at 1171d93{ url=file:/opt/jboss-4.0.4.GA/server/default/tmp/deploy/tmp34664arch.ear ,addedOrder=33}
| [2961838,UnifiedLoaderRepository3,ScannerThread] UnifiedLoaderRepository removed(true) org.jboss.mx.loading.UnifiedClassLoader3 at 1171d93{ url=file:/opt/jboss-4.0.4.GA/server/default/tmp/deploy/tmp34664arch.ear ,addedOrder=33}
|
| ..............
|
| [3014174,RepositoryClassLoader,RMI TCP Connection(1)-10.0.5.7] loadClass org.jboss.mx.loading.UnifiedClassLoader3 at 1171d93{ url=null ,addedOrder=33} name=org.springframework.remoting.rmi.RmiInvocationWrapper_Stub, loadClassDepth=0
| [3014174,RepositoryClassLoader,RMI TCP Connection(1)-10.0.5.7] loadClassImpl, name=org.springframework.remoting.rmi.RmiInvocationWrapper_Stub, resolve=false [3014174,RepositoryClassLoader,RMI TCP Connection(1)-10.0.5.7] findClass, name=org.springframework.remoting.rmi.RmiInvocationWrapper_Stub
| [3014175,RepositoryClassLoader,RMI TCP Connection(1)-10.0.5.7] loadClass org.jboss.mx.loading.UnifiedClassLoader3 at 1171d93{ url=null ,addedOrder=33} name=org.springframework.remoting.rmi.RmiInvocationWrapper_Stub not found
|
In first section - class loader destroyed, in second used again to load classes (between these two steps there is not classloading recreation)
My guess - usage of unregistered classloader. Is it true? And how can I fix it?
Thank you!
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4017554#4017554
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4017554
More information about the jboss-user
mailing list