2017-03-07 68 views
0

我有4个web应用程序添加(部署)到apache tomcat 7服务器。服务器将在任何时间点仅托管这些应用程序,即,tomcat仅用于托管这4个应用程序。我们没有在ROOT中部署任何东西。在apache tomcat 7中监听上下文路径的变化

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

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

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

  1. 会话保持跨所有应用程序保持一致。因此, 会很容易处理。
  2. 我听的应用程序更改Web服务器( 方面的变化/容器,我相信),然后创建,验证或 无效会话。

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

  1. 是否有可能跨所有应用程序 (容器)具有相同的会话?
  2. 是否有可能听apache更改应用程序 (容器)?

如果答案是YES 上述任何疑问,请指导我该怎么办呢?如果两种方法都是不可能,请提出更好的方法?

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

如果您需要任何其他信息,请让我知道。

在此先感谢。

回答

0

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

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

+0

好的。但我认为,即使采用这种方法,我们也无法在不同的应用程序上下文中使用同一个会话对象,对吧? –

+0

@GaganVerma是的,你不能使用同一个会话对象,但是你可以在另一个会话中验证一个会话的sessionid。这是最好的hacky。您正在寻找的是典型的SSO。你最好实施像Tomcat内置的SSO阀门或者像SAML这样的框架 –