You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Ju...@gmx.de on 2002/08/07 14:55:09 UTC

ClassLoaderProblem ObjectInputStream

Hello,

probably we have a problem with the class loaders from Tomcat.

We use several applications over the Tomcat 4.0.3 (also over 4.0.4)

The shared resources (.jar-files) are in the directory '$CATALINA_HOME/lib'.
The apllication-specific resources are in the directory (of each
application): /WEB-INF/lib/

The applications run without problems.

Our problem arose with the use of the ObjectInputStream.

The class (a.class) in which the de-serialization proceed is just like the
serialized classes (b.class and c.class) in the directory '/WEB-INF/lib/' 
(webapp/WEB-INF/lib --> x.jar --> a.class b.class c.class)

The problem is that not the class loader for the applications
(org.apache.catalina.loader.WebappClassLoader)is used but the standard class loader
(org.apache.catalina.loader.StandardClassLoader)!

This class loader doesn't know of the existence of the apllication-specific
resources! So, a ClassNotFoundException is thrown:

 at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:1127)
 at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:992)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:195)
 at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:654)
 at
java.io.ObjectInputStream.inputClassDescriptor(ObjectInputStream.java:918)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:366)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
 at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1186)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
 at com.sun.java.util.collections.Hashtable.readObject(Hashtable.java:773)
 at java.lang.reflect.Method.invoke(Native Method)
 at
java.io.ObjectInputStream.invokeObjectReader(ObjectInputStream.java:2213)
 at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1410)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
 at java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:2262)
 at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:519)
 at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1411)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236) 
.
.
.
.
.

Thanks,
Jürgen

-- 
GMX - Die Kommunikationsplattform im Internet.
http://www.gmx.net


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>