首页 >后端开发 >php教程 >session冲突怎么解决

session冲突怎么解决

PHPz
PHPz原创
2016-06-06 20:41:242336浏览

解决session冲突的方法:首先找到“context.xml”文件;然后删除该配置文件;接着对每个项目单独配置session保存名;最后修改“server.xml”文件即可。

session冲突怎么解决

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

   

问题解决. 

更多相关技术文章,请访问PHP中文网

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn