session - 重新部署 Tomcat 应用程序会导致事件 session 被删除

标签 session tomcat deployment tomcat8

我有一个 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 将序列化到该文件中。当您启动它时 - 它们会从中加载。

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

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

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

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

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

  • 从安全角度来看更好

关于session - 重新部署 Tomcat 应用程序会导致事件 session 被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56574258/

相关文章:

sql-server - SQL Server 架构演变(迁移)

python - Django 1.6 : 'instancemethod' object has no attribute '__getitem__'

Tomcat 堆使用行为

javascript - 通过 JQuery ajax 提交带有键的数组

Tomcat7连接问题

bash - 在 bash 脚本中使用 .env 属性

PHP: session.auto_start

android - 从 Android Webview 获取 session

java - 预登录 session ID?

eclipse - 如何在tomcat上部署angular2?