我在同一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应用程序从一个公共数据库中写入和读取共享状态。