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

Re-deploy of a Tomcat application causes the active sessions to be dropped

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

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

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

谁能告诉我这是怎么回事?我不完全理解为什么它首先以这种方式部署。

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

但是当您 re-deploy 您的应用程序时,会发生两件事:

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

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

或者两个词 - tomcat 删除 un-deploy 上保存的会话。我想这是因为:

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

  • 从安全角度来说更好