我有两个war文件,例如war1和war2
如果要登录该应用程序,则将在war1中创建会话,然后从该位置导航到war2,那么我需要相同的会话数据。
我尝试在服务器的context.xml中使用crossContext = true,因为我可以通过将数据存储在ServletContext中来访问数据。 但是问题是,一旦我以chrome登录屏幕,会话数据将存储在servletContext中,并且数据将一直保持到应用程序运行为止。
如果也在另一个类似IE的浏览器中提供相同的URL,我可以获取servletContext数据,因此无需导航到登录页面,而是可以打开相应的屏幕
请建议我如何克服Java中的这个问题?
有什么方法可以找出Java中浏览器的切换方式或浏览器的隐身窗口模式吗? 注意:我正在使用tomcat服务器
答案 0 :(得分:1)
我从未处理过您的确切配置问题,但是即使您可以在单个Tomcat实例上完成此工作,但是如果您的两个Web应用程序曾经分布在多个Tomcat实例上,则可能会遇到问题。
因此,我建议您实际上使用数据库来存储状态,该状态需要以安全可靠的方式在两个应用程序之间传递。请注意,只要您有一个逻辑数据库,数据库方法也可以在分布式环境中很好地扩展。
答案 1 :(得分:0)
虽然会话复制确实可以在Tomcat中完成(请参阅here),但我确实建议您通过完全消除会话来避免此类问题。
此会话复制是一种在15到10年之前很普遍的方法,但是如今,当我们有许多并行运行的服务器来满足用户请求并具有弹性集群时,这种方法还不够好,因为基本上伸缩性不好。
但是,有很多方法可以实现您想要的: