I'm trying to use PersistentManager with FileStore to load sessions from
disk. Serialization goes ok but when the session is loaded I get an
exception deserializing one of my application's classes.

[2020-05-12 09:08:52] [SEVERE] Session:
6325A48BA1D2FC79105C7F4B0A76CB74.worker1;
java.lang.ClassNotFoundException: com.mycompany.MyClass
        at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
        at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at
org.apache.catalina.util.CustomObjectInputStream.resolveClass(CustomObjectInputStream.java:159)
        at
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620)
        at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521)
        at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1781)
        at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
        at
org.apache.catalina.session.StandardSession.doReadObject(StandardSession.java:1576)
        at
org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1048)
        at org.apache.catalina.session.FileStore.load(FileStore.java:234)

Looking into the classpath when the exception occurs I see that every jar
in ${catalina.base}/lib is loaded plus those explicitly mentioned in the
run command, but none of my application's jars. My application is deployed
in ${catalina.base}/myapp/. I tried to add a ${catalina.base}/myapp/
META-INF/context.xml file, but that wasn't loaded. Then I tried to add
<Resources>

     <JarResources
className="org.apache.catalina.webresources.JarResourceSet"
base="${catalina.base}/mycompany/WEB-INF/lib/my.jar" webAppMount="/" />
</Resources>

to context.xml but that didn't help either. It makes sense that Tomcat is
separating my application from the rest of the classpath but then how do I
include the required class?

Reply via email to