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


https://my.application.com/writeApplication
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中添加的信息。

它不应该这样工作吗?

最佳答案

通常不能这样做,如this SO question discusses

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

07-24 09:37
查看更多