tomcat部署战争而不会丢失会话

时间:2015-01-14 08:31:50

标签: java java-ee tomcat7

我正在研究java Web应用程序部署。我有要求,我们将继续在tomcat应用程序中部署新版本的war文件。我的要求是当用户登录时,当我在tomcat web应用程序中部署新的战争时,它会覆盖旧战争并且我会松开会话。

我应该向用户展示新版本而不会失去他的会话。

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

tomcat中有没有办法存储会话?

jboss,weblogic或websphere等其他服务器怎么样?

2 个答案:

答案 0 :(得分:7)

如Gas所述,请参阅http://tomcat.apache.org/tomcat-7.0-doc/config/manager.html#Persistence_Across_Restarts

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

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

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

答案 1 :(得分:2)

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

使用Redisson Java客户端,您可以配置RedissonSessionManager,它将Redis中的所有Tomcat会话数据持久化。

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

此方法还有其他优点,它是在不同的Tomcat实例之间共享会话数据的一种非常方便的方法,使您可以将它们群集在负载均衡器后面,而不会造成会话粘滞(例如nginx)。

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

https://dzone.com/articles/redis-based-tomcat-session-management

祝你好运!