3

我有一个网络应用程序say A,当我登录这个应用程序时,它的主页包含一个链接,

当我单击该链接时,我正在登录另一个 Web 应用程序Say B,它在iframeA 的主页中打开。

这两个应用程序都部署在不同的服务器上

现在,当我单击 B 应用程序的 B 应用程序中的任何链接/按钮时,B(iframe in A) session应用程序就会过期。

为了维护会话,我通过将会话ID 附加到 B 应用程序的 url 来重写它。

通过这样做,它是登录。

但是,当我request.getSession()总是使用时,我会得到新的对象

我想要以前的会话对象,因为我在会话对象中有值。

他们有什么办法让我可以维持会话吗????

谢谢

4

4 回答 4

0

如果会话跟踪模式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>
于 2013-11-15T09:04:15.837 回答
0

将会话视为为 Web 应用程序上的每个用户创建的地图。

这意味着,属于 WebApp-A 的 session1 对于该应用程序是本地的,而属于 WebApp-B 的 session2 对于该应用程序是本地的。

您在 URL 中看到的 jsessionId 是应用程序服务器用来标识该 we​​bapp 的会话对象的键。

因此,就您而言,您需要考虑通过其他方式共享数据:

  1. 如果您只想访问某个键/值对,则将其作为请求参数通过 URL 传递。
  2. 如果你想访问一个对象,那么考虑使用共享存储——比如数据库;或分布式缓存
  3. 如果您只想让用户同时登录这两个应用程序,那么您需要一个单点登录解决方案

从您的问题的外观来看,您只希望用户通过一个挑战登录到两个应用程序。阅读 SSO 解决方案。

会话对象会有所不同。

希望有帮助。

于 2013-11-15T08:19:16.800 回答
0

这个 Stackoverflow 问题讨论了一些相关的事情。

如何将会话从一台 Tomcat 服务器转移到另一台?

于 2013-11-15T08:22:16.967 回答
0

似乎您需要在应用程序中再注入一层,某种会话管理器。由于您没有修改的能力app B,您应该修改您的“应用程序 A”。但是在这种情况下,您将成为局势的人质。另一件坏事是,如果再添​​加一个,你必须做什么app C

好吧,Harsha R 已经提到了 SSO 解决方案。app A正如我之前所说,您可以在级别上实现一个会话管理器。例如,app B通过您的特殊Servlet功能请求Filter您可以替代Http-Headers支持JSESSIONID不同应用程序之间的无缝(和另一个会话保存内容)管理。

于 2013-11-15T08:55:58.923 回答