A note before I start: I have found quite a few people out there asking about
this same question but have not found my solution.  This might mean I have
trouble with finding the correct search terms or something entirely
different.

The ultimate issue is that from time to time Tomcat (we are using v 5.0.28)
throws an exception while starting which we think causes sessions to be lost
for our various users every time we research Tomcat.  This is an issue since
we would like the users to not loose data and be required to restart
whenever we need to restart the system.  The exception is as follows:

INFO: Starting Servlet Engine: Apache Tomcat/5.0.28
Mar 1, 2007 4:35:23 PM org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
Mar 1, 2007 4:35:24 PM org.apache.catalina.session.StandardManager doLoad
SEVERE: ClassNotFoundException while loading persisted sessions:
java.lang.ClassNotFoundException: com.formos.toolkit.data.IPersistentDO
java.lang.ClassNotFoundException: com.formos.toolkit.data.IPersistentDO
        at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:854)
        at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:721)
        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.resolveProxyClass(ObjectInputStream.java:646)
        at
java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1494)
        at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1457)
        at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
        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.apache.catalina.session.StandardSession.readObject(StandardSession.java:1342)
        at
org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:885)
        at
org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:416)
        at
org.apache.catalina.session.StandardManager.load(StandardManager.java:343)
        at
org.apache.catalina.session.StandardManager.start(StandardManager.java:657)
        at
org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:499)
        at
org.apache.catalina.startup.ContextConfig.managerConfig(ContextConfig.java:315)
        at
org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:635)
        at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:216)
        at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4290)
        at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
        at
org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
        at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
        at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
        at
org.apache.catalina.core.StandardService.start(StandardService.java:480)
        at
org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
Mar 1, 2007 4:35:25 PM org.apache.catalina.session.StandardManager start
SEVERE: Exception loading sessions from persistent storage
java.lang.ClassNotFoundException: com.formos.toolkit.data.IPersistentDO
        at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:854)
        at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:721)
        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.resolveProxyClass(ObjectInputStream.java:646)
        at
java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1494)
        at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1457)
        at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
        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.apache.catalina.session.StandardSession.readObject(StandardSession.java:1342)
        at
org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:885)
        at
org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:416)
        at
org.apache.catalina.session.StandardManager.load(StandardManager.java:343)
        at
org.apache.catalina.session.StandardManager.start(StandardManager.java:657)
        at
org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:499)
        at
org.apache.catalina.startup.ContextConfig.managerConfig(ContextConfig.java:315)
        at
org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:635)
        at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:216)
        at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4290)
        at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
        at
org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
        at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
        at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
        at
org.apache.catalina.core.StandardService.start(StandardService.java:480)
        at
org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)

I have been given the task to fix this and have come across the magical
world of <Context> and <Manager> which is where I think the solution lies.

Prior to any work on this task our <Context> in server.xml was as follows:

<Context path="/thisPath" reloadable="true"
docBase="C:\devel\java\thisPath\context"/>

This method as I understand it will default to the Standard Manager
Implementation as described here:
http://tomcat.apache.org/tomcat-5.0-doc/config/manager.html

This method saves sessions but not in a manner of saving them once Tomcat
has been restarted.  The Persistent Manager Implementation sounds more like
what I need to partake in.  So I updated my server.xml to handle such a
method.  It now looks like this in the <Context>:

<Context path="/thisPath" reloadable="true"
docBase="C:\devel\java\thisPath\context">
        <Manager className="org.apache.catalina.session.PersistentManager"
saveOnRestart="true">
                <Store className="org.apache.catalina.session.FileStore"/>
        </Manager>
</Context>

This method should save the sessions in a manner of FileStore (to disk)
after Tomcat has be restarted.  Here is where my current problem is.  I
think the sessions are being written just fine when I stop Tomcat.  When I
restart it, the log seems just fine (no unusual messages).  Then when I
start reusing the app for a session that should be saved, I get this
exception:

INFO: Server startup in 6859 ms
Mar 1, 2007 4:22:31 PM org.apache.catalina.session.PersistentManagerBase
swapIn
SEVERE: Error deserializing Session A9B8C8714E8DC421692B63CA531873AD:
java.lang.ClassNotFoundException: com.formos.toolkit.data.IPersistentDO
Mar 1, 2007 4:22:31 PM org.apache.coyote.tomcat5.CoyoteAdapter service
SEVERE: An exception or error occurred in the container during the request
processing
java.lang.IllegalStateException: Error deserializing Session
A9B8C8714E8DC421692B63CA531873AD: java.lang.ClassNotFoundException:
com.formos.toolkit.data.IPersis
tentDO
        at
org.apache.catalina.session.PersistentManagerBase.swapIn(PersistentManagerBase.java:805)
        at
org.apache.catalina.session.PersistentManagerBase.findSession(PersistentManagerBase.java:629)
        at
org.apache.coyote.tomcat5.CoyoteRequest.doGetSession(CoyoteRequest.java:2252)
        at
org.apache.coyote.tomcat5.CoyoteRequest.getSession(CoyoteRequest.java:2116)
        at
org.apache.coyote.tomcat5.CoyoteRequestFacade.getSession(CoyoteRequestFacade.java:526)
        at
org.apache.catalina.authenticator.AuthenticatorBase.getSession(AuthenticatorBase.java:692)
        at
org.apache.catalina.authenticator.AuthenticatorBase.getSession(AuthenticatorBase.java:675)
        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:423)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:595)

I was wondering if I was on the right path or just way off.  Either way, can
anybody see what I am doing wrong here?  I would really appreciate any
feedback anybody could give me.

Thank you for your time and energy.
Dustin
-- 
View this message in context: 
http://www.nabble.com/Tomcat-Persistent-Session-Issues-tf3330946.html#a9262012
Sent from the Tomcat - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to