重启Eclipse中的Tomcat(或非插件) 使Session失效(非持久化)的解决方法

重启Eclipse中的Tomcat(或非插件) 使Session失效(非持久化)的解决方法

非插件,就是直接启动Tomcat


今天我有一个应用场景

我把用户的一些关键信息保存在了session中

如用户id 用户权限等信息

但是当我重启服务器Eclipse中的Tomcat插件,然后我刷新页面

发现session还在

这就导致了很严重的安全性

所以需要解决,解决方法如下

打开eclipse的工程目录下,对应项目的context.xml这个文件,下面的地址是完全的地址

D:\Program Files\eclipseJ2EE\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\conf

以上地址可能和您的地址不一样,一样的部分是

workspace\.metadata\.plugins\org.eclipse.wst.server.core   以及conf目录

所以请仔细查找

然后我们打开conf下的context.xml这个文件

注意在准备修改这个文件前,请您一定先行备份


查找如下注释

<!-- Uncomment this to disable session persistence across Tomcat restarts -->


需要修改的完整代码是


    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

    <!-- Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) -->
    <!--
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
    -->
以上代码的意思是说,如果您把注释去掉掉,那么在Tomcat重启时,session将不会持久化,如果您继续注释,那么在重启Tomcat时,session将会继续持久化


也就是说,您去掉注释,session将在tomcat重启时被所有的参数值

修改后的代码如下


    <!-- Uncomment this to disable session persistence across Tomcat restarts -->

    <Manager pathname="" />


    <!-- Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) -->

    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />

此外,如果不是在eclipse中以插件的形式启动Tomcat

而是直接启动Tomcat的话,修改方法一样的

需要修改的文件详细地址如下

D:\Program Files\Apache Software Foundation\Tomcat 8.0\conf\context.xml

注意修改前,一定要先行备份。


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img