我有一个 tomcat 应用程序,通过将新的 my-project.war
文件放入服务器上的 /var/lib/tomcat8/webapps/
目录来部署该应用程序(通过 scp
)。
每次我执行此操作时,新副本都会在几秒钟后生效。唯一的问题是它会丢弃所有 session 。
我能找到的所有文档都告诉我 Tomcat 应该默认恢复 session 。当我重新启动 Tomcat 服务时似乎确实是这样,但当我重新部署时却不是这样......
谁能告诉我这是怎么回事?我一开始并不完全理解为什么要以这种方式部署。
最佳答案
默认 session 管理器 - StandardManager
将 session 保存在<tomcat-home>/work/<app-name>/SESSIONS.ser
中。当您停止 tomcat 时, session 将序列化到该文件中。当您启动它时 - 它们会从中加载。
但是当您重新部署应用程序时,会发生两件事:
Tomcat
un-deploys
旧应用程序并删除<tomcat-home>/work/<app-name>/
文件夹,从而删除保存的 sessionTomcat 部署新应用程序并创建新文件夹
或者用两个词来说 - tomcat 会在取消部署时删除保存的 session 。我想这是因为:
重新部署是通过取消部署 -> 部署来实现的。 IE。 “取消部署”步骤不知道是否会部署应用程序的新版本,因此它确保在其自身之后正确清理。
从安全角度来看更好
关于session - 重新部署 Tomcat 应用程序会导致事件 session 被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56574258/