错误一:
[ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.session.StoreBase.processExpires Session: AEDFB48D37A77C31457092995AA26B03;
java.lang.ClassNotFoundException: com.yc.bean.User
错误二:
21-Jan-2019 20:04:56.528 SEVERE [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.session.StoreBase.processExpires Session: B7F7F7CD26D2661EE08C0CA48865D527;
java.lang.ClassNotFoundException: com.yc.vo.ListClassPage
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.catalina.util.CustomObjectInputStream.resolveClass(CustomObjectInputStream.java:74)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1613)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at java.util.ArrayList.readObject(ArrayList.java:791)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1900)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at org.apache.catalina.session.StandardSession.doReadObject(StandardSession.java:1627)
at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1090)
at org.apache.catalina.session.FileStore.load(FileStore.java:268)
at org.apache.catalina.session.StoreBase.processExpires(StoreBase.java:154)
at org.apache.catalina.session.PersistentManagerBase.processExpires(PersistentManagerBase.java:440)
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:555)
at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5625)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1377)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1349)
at java.lang.Thread.run(Thread.java:745)
问题分析:
1. 在同一个tomcat布署了多个项目,且原配置了 context.xml文件:
<Manager className="org.apache.catalina.session.PersistentManager"
saveOnRestart="true"
minIdleSwap="1200"
maxIdleSwap="2400"
maxIdleBackup="0">
<Store className="org.apache.catalina.session.FileStore" directory="../session" />
</Manager>
配置这个文件原来的想法是 将session缓存到磁盘上的 session目录中,
当是一个项目时没有问题。 而当有多个项目安装上来,且这些项目中有些类的包路径及名字完成相同时,这个session就有冲突了。 所以将这个配置去掉。
另外,对每个项目单独配置session保存名 : 修改 server.xml文件, 加入:
<Host name="www.hyycinfo.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="ROOT" reloadable="false" crossContext="true" />
<Context path="/Examination2.0" docBase="/usr/tomcat/tomcat8/webapps/Examination2.0" debug="0" reloadable="true" sessionCookieName="examinationSession">
<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="true" mminIdleSwap="1200" maxIdleSwap="2400" maxIdleBackup="0" >
<Store className="org.apache.catalina.session.FileStore" directory="../examinationSession"/>
</Manager>
</Context>
<Context path="/PayMentSystem" docBase="/usr/tomcat/tomcat8/webapps/PayMentSystem" debug="0" reloadable="true" sessionCookieName="paymentsystemSession">
<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="true" mminIdleSwap="1200" maxIdleSwap="2400" maxIdleBackup="0" >
<Store className="org.apache.catalina.session.FileStore" directory="../paymentSystemSession"/>
</Manager>
</Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="hyycinfo_access_log"
suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
</Host>
问题解决.