Java 两个应用程序的会话维护
我有一个web应用程序Java 两个应用程序的会话维护,java,servlets,session-state,sessionid,Java,Servlets,Session State,Sessionid,我有一个web应用程序比如说a, 当我登录此应用程序时,其主页包含一个链接 当我点击该链接时,我将登录到另一个web应用程序Say B,它将在a的主页中的iframe中打开。 这两个应用程序都部署在不同的服务器上 现在,当我单击B应用程序中的任何链接/按钮时,B应用程序的会话将过期 为了维护会话,我通过将会话id添加到B应用程序的url中来重写它 这样做就是登录 但是,当我使用request.getSession()时,我总是得到新对象 我想要上一个会话对象,因为会话对象中有值 他们有什么办法让
比如说a
,
当我登录此应用程序时,其主页包含一个链接
当我点击该链接时,我将登录到另一个web应用程序Say B
,它将在a的主页中的iframe
中打开。
这两个应用程序都部署在不同的服务器上
现在,当我单击B应用程序中的任何链接/按钮时,B应用程序的会话将过期
为了维护会话,我通过将会话id添加到B应用程序的url中来重写它
这样做就是登录
但是,当我使用request.getSession()
时,我总是得到新对象
我想要上一个会话对象,因为会话对象中有值
他们有什么办法让我能维持会议吗
谢谢将会话看作是为web应用程序上的每个用户创建的映射 也就是说,属于WebApp-A的会话1是该应用程序的本地会话,而属于WebApp-B的会话2是该应用程序的本地会话 您在URL中看到的jsessionId是应用程序服务器用于标识该webapp的会话对象的键 因此,在您的情况下,您需要考虑通过其他方式共享数据:
希望能有所帮助。这个问题讨论了一些相关的事情
您似乎需要在应用程序中再注入一层,某种会话管理器。由于您无法修改
应用程序B
,因此您应该修改“应用程序A”。但在这种情况下,你将成为形势的人质。另一件坏事是,如果再添加一个app C
,你该怎么办
嗯,Harsha R已经提到了SSO解决方案。正如我前面所说,您可以在
应用程序A
级别的某个会话管理器上实现一个。例如,通过特殊的Servlet
与Filter
功能合作请求app B
,您可以替换Http头
,以支持无缝JSESSIONID
(和另一个会话保持功能)在不同的应用程序之间进行管理。如果会话跟踪模式为COOKIE
,您可以尝试更改COOKIE名称,以便两个应用程序的COOKIE名称不同:
<session-config>
<session-timeout>30</session-timeout>
<cookie-config>
<!-- change below -->
<name>web-app-A</name>
<path>/</path>
<http-only>true</http-only>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
30
web-app-A
/
真的
曲奇
您使用什么框架和服务器?我使用的是tomcat、sturts1,我无法访问应用程序A的代码