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



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

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

现在我想要实现的是writeApplication写入一些东西到会话中,然后readApplication启动并从会话中读取这些信息。

在两个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)中,我像这样写入会话:
HttpSession session = req.getSession();
session.setAttribute("test", "myString");

就像希望JSESSIONID -Cookie写入"/"一样https://my.application.com/.

在我的readApplication(一个GWT应用程序)中,我想通过使用

从会话中读取此信息:
HttpSession httpSession = getThreadLocalRequest().getSession();
String myString = (String) httpSession.getAttribute("test");

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

如果我通过readApplication写入内容,路径与writeApplication中的路径相同,但如果我想要读取,我无法获得我使用servlet添加的信息。

它不应该这样工作吗?

这通常是不能做到的,正如这个问题所讨论的。

然而,使用会话的一种常见替代方法(甚至被认为比使用会话更可取)是写入数据库。对于两个不同的Java web应用程序来说,通常可以共享相同的数据库,甚至相同的表。你可以让你的两个webapps从一个公共数据库中读写共享状态

最新更新