我有一个tomcat应用程序,通过将新的my-project.war
文件放入服务器上的/var/lib/tomcat8/webapps/
目录(通过scp
)来进行部署。
每次执行此操作时,新副本都会在几秒钟后生效。唯一的问题是它将删除所有会话。
我能找到的所有文档都告诉我Tomcat应该默认还原会话。重新启动Tomcat服务时似乎确实是这种情况,但是当我重新部署...时却不是这样。
谁能告诉我这是怎么回事?我不完全理解为什么首先部署这种方式会起作用。
答案 0 :(得分:1)
默认会话管理器-StandardManager
将会话保存在<tomcat-home>/work/<app-name>/SESSIONS.ser
中。当您停止tomcat时,会话将被序列化到该文件中。启动时-它们是从中加载的。
但是当您重新部署应用程序时,会发生两件事:
Tomcat un-deploys
旧应用程序并删除 <tomcat-home>/work/<app-name>/
文件夹,从而删除保存的会话
Tomcat部署新应用并创建新文件夹
或者用两个词-Tomcat在取消部署时删除已保存的会话。我想这是因为:
重新部署是作为取消部署->部署实现的。即“取消部署”步骤不知道是否将部署该应用程序的新版本,因此请确保在启动后正确进行清理。
从安全角度来看更好