我有两个应用程序位于同一台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添加的信息。
它不应该这样工作吗?
这通常是不能做到的,正如这个问题所讨论的。
然而,使用会话的一种常见替代方法(甚至被认为比使用会话更可取)是写入数据库。对于两个不同的Java web应用程序来说,通常可以共享相同的数据库,甚至相同的表。你可以让你的两个webapps从一个公共数据库中读写共享状态