解决session冲突的方法:首先找到“context.xml”文件;然后删除该配置文件;接着对每个项目单独配置session保存名;最后修改“server.xml”文件即可。
session冲突怎么解决?
session冲突问题的解决
错误一:
[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>
问题解决.
更多相关技术文章,请访问PHP中文网!