Java tomcat在不丢失会话的情况下部署war

Java tomcat在不丢失会话的情况下部署war,java,jakarta-ee,tomcat7,Java,Jakarta Ee,Tomcat7,我正在从事java web应用程序部署。我有这样的要求,我们将继续在tomcat应用程序中部署新版本的war文件。我的要求是,当用户登录时,当我在tomcat web app中部署新war时,它会覆盖旧war,我会释放会话 我应该向用户显示新版本,而不会丢失其会话。 当我在谷歌上搜索时,我开始了解tomcat并行部署。但我的经理要求不遵循该解决方案,并要求查看是否有其他可用的解决方案。但我没有得到任何其他的解决办法 tomcat中是否有存储会话的方法 其他服务器如jboss、weblogic或w

我正在从事java web应用程序部署。我有这样的要求,我们将继续在tomcat应用程序中部署新版本的war文件。我的要求是,当用户登录时,当我在tomcat web app中部署新war时,它会覆盖旧war,我会释放会话

我应该向用户显示新版本,而不会丢失其会话。

当我在谷歌上搜索时,我开始了解tomcat并行部署。但我的经理要求不遵循该解决方案,并要求查看是否有其他可用的解决方案。但我没有得到任何其他的解决办法

tomcat中是否有存储会话的方法

其他服务器如jboss、weblogic或websphere怎么样?

如Gas所述,请参阅

使用一些显式路径名配置
。默认情况下,会话存储在web应用程序的工作目录中。取消部署web应用程序时,将删除工作目录

如果将
pathname
属性显式配置为指向在取消部署时未删除的某个目录,则会话将继续存在


请注意,您可以在配置中使用${catalina.base}和其他系统属性。

您熟悉Redis吗?它是一个开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理

使用Redisson java客户机,您可以配置Redisson SessionManager,它将Tomcat的所有会话数据保存在Redis中

这样,如果重新启动Tomcat实例,它将在会话启动后从Redis恢复会话

这种方法还有一个额外的优点,即它是在不同Tomcat实例之间共享会话数据的一种非常方便的方式,允许您将它们聚集在负载平衡器后面,而不会产生会话粘性(如nginx)

您可以在此处阅读有关使用RedissonSessionManager配置tomcat的更多信息:


祝你好运

不确定,但也许您可以在关机时序列化会话,并在启动时再次加载它?我想也许ApacheWicket和SpringMVC支持这一点。但这需要您的会话对象是serializableSearch for persistent sessions。正如您所注意到的,完整的JavaEE服务器通常通过持久会话来支持这一点。另一种想法是,存储会话并使用侦听器来检测战争何时部署/取消部署