对两个 tomcat 应用程序使用相同的 session

Use same session with two tomcat applications

我有两个应用程序位于同一个 tomcat7 服务器上:

  1. https://my.application.com/writeApplication
  2. https://my.application.com/readApplication

现在我想要实现的是 writeApplication 将一些东西写入 session,然后 readApplication 开始并从 session.

中读取此信息

在我插入的两个 web.xml 文件中:

<session-config>
    <session-timeout>720</session-timeout>
    <cookie-config>
        <name>JSESSIONID</name>
        <path>/</path>
        <http-only>true</http-only>
    </cookie-config>
</session-config>

writeApplication(一个简单的 servlet)中,我写入 session,如:

HttpSession session = req.getSession();
session.setAttribute("test", "myString");

就像希望的那样 JSESSIONID-Cookie 被写入 "/" 所以 https://my.application.com/.

在我的 readApplication(一个 GWT 应用程序)中,我想使用以下方法从 session 中读取此信息:

HttpSession httpSession = getThreadLocalRequest().getSession();
String myString = (String) httpSession.getAttribute("test");

在这种情况下,我总是收到 null

如果我通过 readApplication 写一些东西,路径与 writeApplication 中的相同,但如果我想阅读,我可以'获取我使用 servlet 添加的信息。

不应该这样吗?

这通常是做不到的,因为this SO question discusses

但是,使用会话的一种常见替代方法(甚至被认为比使用会话更可取)是写入数据库。 两个不同的 Java Web 应用程序通常可以共享同一个数据库,甚至是同一个 table。您可以让您的两个 Web 应用程序从公共数据库写入和读取共享状态。