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 &quot;%r&quot; %s %b" />
       </Host>

   

问题解决. 

发布了107 篇原创文章 · 获赞 29 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/zhangyingchengqi/article/details/86584206