当前位置: 首页 > 面试题库 >

有什么方法可以在tomcat中的不同应用程序之间共享会话状态?

农永宁
2023-03-14
问题内容

我们希望将一个正在运行的应用程序拆分为两个不同的.war文件,以便能够更新一个应用程序而不影响另一个应用程序。每个Web应用程序将具有不同的UI,不同的用户和不同的部署时间表。

最简单的路径似乎是共享同一会话,因此如果应用程序A设置了session.setAttribute("foo", "bar")应用程序B,则可以看到它。

有没有办法HttpSession在同一个Tomcat实例中共享两个应用程序的状态?

我们的应用程序在专用的Tomcat 5.5上运行,在同一tomcat实例上没有其他应用程序在运行,因此,有关会话共享的任何安全问题都不会成为问题。我们正在运行多个Tomcat实例,但是平衡器正在使用粘性会话。

如果不可能,或者此会话共享不是一个好主意,请发表评论。


问题答案:

你不应该共享HttpSession;但你可以共享其他对象。例如,你可以通过JNDI注册对象,并在所有应用程序中访问同一对象(数据库使用此对象来池化连接)。



 类似资料:
  • 我有一个简单的有状态会话bean(一个单操作堆栈计算器): 这个servlet工作正常: 除了容器在不同的会话中提供相同的bean之外,这种方法工作得很好。我知道会话不一样,因为我打印会话ID,并且在不同的机器上使用不同的客户端。我知道bean是相同的,因为它具有相同的instanceID值和相同的堆栈内容。 我希望如果在不同的机器上运行客户机,我会得到一个新的计算器实例。 我尝试了WildFly

  • 问题内容: 我的公司接管了一些旧的php应用程序。由于我们偏爱ASP.net且由于以前的开发人员缺少任何文档,因此我们不想在PHP开发上花费大量资源。为了实现新功能,我们将创建一个Asp.net应用程序,其外观与用户相同。我们要开发一种“共存”的Web应用程序。因此,我们必须在PHP和Asp.net Web应用程序项目之间共享会话,因为现有的MySQL数据库涉及用户管理。 (例如,链接“ A”指向

  • 问题内容: 我目前在两个不同的端口上运行两个单独的节点应用程序,但是共享同一个后端数据存储。我需要在两个应用程序之间共享用户会话,以便当用户通过一个应用程序登录时,他们的会话可用,并且他们似乎登录了另一个应用程序。在这种情况下,它是面向公众的网站和管理后端。 我们的设置如下: 快速节点 护照正用于通过本地策略处理身份验证 我们正在使用connect-redis来允许我们通过Redis共享会话。 我

  • 我有一个简单的pojo,其中有一个字段: 现在,我使用两个不同的浏览器窗口(firefox和chrome)作为两个不同的用户登录到我的web应用程序。令我惊讶的是,当我从一个会话设置配额的值(使用)时,新的值将可用于另一个会话(当调用时)。我希望每个用户会话都有自己的bean实例;这不是spring中会话作用域bean的用途吗? 我一定错过了什么。可能是什么? 编辑: 实现类如下所示: 最后,这里

  • 问题内容: 是否有使用节点,表达和redis / predis共享PHPSESSID的最新指南(或示例代码)? 我发现有1-2年的一些教程,它们都使用旧版本的Express或不使用Express。 Express cookie解析器也已弃用。 https://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share- redi/

  • 问题内容: 我们在同一子域上部署了两个Django应用程序。一些高级用户需要在这些应用程序之间切换。我注意到,每次他们在应用程序之间跳动时,其会话cookie都会从Django接收一个新的会话ID。 除了在一个复杂的工作流程中,我很少使用Django会话表。如果用户在此工作流程中在应用程序之间跳动,则他们将失去会话并必须重新开始。 我浏览了Django会话代码,发现: django.conf.se