Session 重新部署Tomcat应用程序会导致删除活动会话

Session 重新部署Tomcat应用程序会导致删除活动会话,session,tomcat,deployment,tomcat8,Session,Tomcat,Deployment,Tomcat8,我有一个tomcat应用程序,我通过将新的my project.war文件放入服务器上的/var/lib/tomcat8/webapps/目录(通过scp)来部署它 每次我这样做,新的副本都会在几秒钟后生效。唯一的问题是它会删除所有会话 我能找到的所有文档都告诉我,Tomcat默认情况下应该恢复会话。当我重新启动Tomcat服务时,情况似乎确实如此,但当我重新部署 有人能告诉我这是怎么回事吗?我不完全理解为什么一开始就可以这样部署。默认会话管理器-StandardManager将会话保存在/wo

我有一个tomcat应用程序,我通过将新的
my project.war
文件放入服务器上的
/var/lib/tomcat8/webapps/
目录(通过
scp
)来部署它

每次我这样做,新的副本都会在几秒钟后生效。唯一的问题是它会删除所有会话

我能找到的所有文档都告诉我,Tomcat默认情况下应该恢复会话。当我重新启动Tomcat服务时,情况似乎确实如此,但当我重新部署


有人能告诉我这是怎么回事吗?我不完全理解为什么一开始就可以这样部署。

默认会话管理器-
StandardManager
将会话保存在
/work//sessions.ser
中。当您停止tomcat时,会话被序列化到该文件中。当您启动它时,它们将从中加载

但当您重新部署应用程序时,会发生两件事:

  • Tomcat
    取消部署
    旧应用程序并删除
    /work/
    文件夹,从而删除保存的会话

  • Tomcat部署新的应用程序并创建一个新文件夹

  • 或者换句话说,tomcat在取消部署时删除保存的会话。我想这是因为:

    • 重新部署实现为取消部署->部署。也就是说,“取消部署”步骤不知道是否将部署新版本的应用程序,因此它确保在部署后正确清理

    • 从安全的角度来看更好


    我明白了。谢谢,那很有帮助。那么,您是否希望通过设置会话的存储路径来解决这个问题?这将取决于会话是在运行时存储在磁盘中,还是仅为重新启动而存储。我能想到的另一个选择是实现我自己的管理器(或使用非标准的管理器)。