【问题标题】:Use same session with two tomcat applications对两个 tomcat 应用程序使用相同的会话
【发布时间】:2016-09-12 14:38:42
【问题描述】:

我有两个应用程序位于同一个 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 session tomcat gwt tomcat7


    【解决方案1】:

    这一般是做不到的,如this SO question discusses

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

    【讨论】:

    • 我希望避免这种情况。在这种情况下,我必须在 url 中提供一个带有 db 条目 id 的参数。我怎么能确定只有调用 writeApplication 的人才能从数据库中读取这些信息。
    • @mxlse 扮演魔鬼的拥护者,如果要在两个 Web 应用程序之间共享会话,Tomcat(或 JBoss 等)如何管理?
    • 好的,谢谢。我想我会在我的实现中使用自己的 cookie 来解决它。
    猜你喜欢
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    相关资源
    最近更新 更多