Heim >Backend-Entwicklung >PHP-Tutorial >session冲突怎么解决

session冲突怎么解决

PHPz
PHPzOriginal
2016-06-06 20:41:242357Durchsuche

解决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中文网

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn