我有一个tomcat应用程序,我通过将新的my-project.war
文件放入服务器上的/var/lib/tomcat8/webapps/
目录中(通过scp
(来部署该应用程序。
每次我这样做时,新副本都会在几秒钟后生效。唯一的问题是它会丢弃所有会话。
我能找到的所有文档都告诉我,默认情况下Tomcat应该恢复会话。当我重新启动 Tomcat 服务时,情况似乎确实如此,但当我重新部署时并非如此......
谁能告诉我这里发生了什么?我不完全明白为什么首先以这种方式部署是有效的。
默认会话管理器 - StandardManager
将会话保存在 <tomcat-home>/work/<app-name>/SESSIONS.ser
中。停止 tomcat 时,会话将序列化到该文件中。当您启动它时 - 它们从中加载。
但是,当您重新部署应用程序时,会发生两件事:
-
Tomcat
un-deploys
旧应用程序并删除<tomcat-home>/work/<app-name>/
文件夹,从而删除保存的会话 -
Tomcat 部署新应用并创建新文件夹
或者用两个词 - tomcat 在取消部署时删除保存的会话。我想这是因为:
-
重新部署实现为取消部署 -> 部署。 即"取消部署"步骤不知道是否会部署新版本的应用程序,因此它确保在自身之后正确清理。
-
从安全角度来看更好