【问题标题】:Listening to change of context path in apache tomcat 7在 apache tomcat 7 中监听上下文路径的变化
【发布时间】:2017-07-27 07:40:39
【问题描述】:

我有 4 个 Web 应用程序添加(部署)到 apache tomcat 7 服务器。服务器将在任何时间点仅托管这些应用程序,即 tomcat 仅用于托管这 4 个应用程序。而且我们没有在 ROOT 中部署任何东西。

现在,我正面临 会话管理问题

问题是我为每个应用程序获得了不同的会话(如果我是正确的,那是因为每个应用程序都有不同的容器)。

我可以想到两种可能的方法:

  1. 会话在所有应用程序中保持一致。因此,它将 易于处理会话。
  2. 我监听 Web 服务器的应用程序更改(更改 上下文/容器,我想)然后创建、验证或 使会话无效。

这里我有两个问题对应于这两种方法。

  1. 是否可以在所有应用程序中拥有相同的会话 (容器)?
  2. 是否可以监听 apache 更改应用程序 (容器)?

如果上述任何问题的答案是,请指导我如何做到这一点?如果这两种方法都不可能,请提出更好的方法?

目前的方法:我在切换到另一个应用程序之前使会话无效,并且在切换之后,我将为相应的应用程序创建一个新会话。在这里,如果用户通过 UI 浏览,一切都会按预期工作,但如果用户在一个应用程序中,然后直接尝试通过 URL(网址)访问另一个应用程序,问题仍然存在。

如果您需要任何其他信息,请告诉我。

提前致谢。

【问题讨论】:

    标签: java apache session tomcat servlets


    【解决方案1】:

    应用程序容器和上下文非常孤立,但是有机会进行跨上下文通信。请参阅herehere

    或者,您可以使用自定义标头和拦截器进行自己的自定义会话管理

    【讨论】:

    • 好的。但我认为即使采用这种方法,我们也无法在不同的应用程序上下文中使用相同的会话对象,对吧?
    • @GaganVerma 是的,您不能使用相同的会话对象,但您可以在另一个会话中验证一个会话的 sessionid。这充其量是hacky。您正在寻找的是典型的 SSO。您最好实现类似 Tomcat 内置 SSO 阀或类似 SAML 的框架
    猜你喜欢
    • 2011-02-06
    • 2013-02-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2023-04-06
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多