Java 在ApacheTomcat7中侦听上下文路径的更改

Java 在ApacheTomcat7中侦听上下文路径的更改,java,apache,session,tomcat,servlets,Java,Apache,Session,Tomcat,Servlets,我在ApacheTomcat7服务器上添加(部署)了4个web应用程序。服务器将在任何时间点仅承载这些应用程序,即tomcat仅用于承载这4个应用程序。我们没有在根目录中部署任何东西 现在,我面临着会话管理的问题 问题是,我为每个应用程序获得不同的会话(如果我是正确的,这是因为每个应用程序都有不同的容器) 我可以想出两种可能的方法: 会话在所有应用程序中保持一致。因此,它将 易于处理会话 我倾听web服务器的应用程序更改(更改 上下文/容器),然后创建、验证或 使会话无效 这里我有两个问题与这两

我在ApacheTomcat7服务器上添加(部署)了4个web应用程序。服务器将在任何时间点仅承载这些应用程序,即tomcat仅用于承载这4个应用程序。我们没有在根目录中部署任何东西

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

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

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

  • 会话在所有应用程序中保持一致。因此,它将 易于处理会话
  • 我倾听web服务器的应用程序更改(更改 上下文/容器),然后创建、验证或 使会话无效
  • 这里我有两个问题与这两种方法相对应

  • 是否可以在所有应用程序中使用相同的会话 (集装箱)
  • 是否可以监听apache以更改应用程序 (集装箱)
  • 如果上述任何问题的答案为“是”,请指导我如何做?如果两种方法都不可能,请建议一种更好的方法

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

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


    提前感谢。

    应用程序容器和上下文非常隔离,但是有机会进行跨上下文通信。见和


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

    OK。但我认为即使采用这种方法,我们也无法在不同的应用程序上下文中使用相同的会话对象,对吗?@GaganVerma是的,您不能使用相同的会话对象,但您可以在另一个会话中验证一个会话的sessionid。这充其量只是一个骇客。您正在寻找的是一个典型的SSO。最好实现Tomcat内置SSO阀或SAML之类的框架