对两个 tomcat 应用程序使用相同的 session
Use same session with two tomcat applications
我有两个应用程序位于同一个 tomcat7 服务器上:
现在我想要实现的是 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 应用程序从公共数据库写入和读取共享状态。
我有两个应用程序位于同一个 tomcat7 服务器上:
现在我想要实现的是 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 应用程序从公共数据库写入和读取共享状态。