【问题标题】:Re-deploy of a Tomcat application causes the active sessions to be dropped重新部署 Tomcat 应用程序会导致活动会话被丢弃
【发布时间】:2019-10-27 16:18:44
【问题描述】:

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

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

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

谁能告诉我这里发生了什么?我不完全理解为什么首先以这种方式进行部署。

【问题讨论】:

    标签: session tomcat deployment tomcat8


    【解决方案1】:

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

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

    1. Tomcat un-deploys 旧应用程序并删除 <tomcat-home>/work/<app-name>/ 文件夹,从而删除保存的会话

    2. Tomcat 部署新应用并创建新文件夹

    或者用两个词 - tomcat 在取消部署时删除保存的会话。我猜这是因为:

    • 重新部署实现为取消部署 -> 部署。 IE。 “取消部署”步骤不知道是否会部署新版本的应用程序,因此它会确保自行正确清理。

    • 从安全角度来看会更好

    【讨论】:

    • 我明白了。谢谢,那很有帮助。那么您是否希望通过设置会话存储到的路径来解决此问题?这取决于会话是在运行时存储在磁盘中,还是仅存储用于重新启动。我能想到的另一种选择是实现我自己的管理器(或使用非标准管理器)。
    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    相关资源
    最近更新 更多