我正在研究java Web应用程序部署。我有要求,我们将继续在tomcat应用程序中部署新版本的war文件。我的要求是当用户登录时,当我在tomcat web应用程序中部署新的战争时,它会覆盖旧战争并且我会松开会话。
我应该向用户展示新版本而不会失去他的会话。
当我用Google搜索时,我开始了解tomcat并行部署。但我的经理要求不遵循该解决方案并要求查看任何其他解决方案。但我没有得到任何其他解决方案。
tomcat中有没有办法存储会话?
jboss,weblogic或websphere等其他服务器怎么样?
答案 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
祝你好运!