2013-04-16 50 views
1

我想在单个Tomcat实例上运行多个WebApps。我的目标是让每个人都可以在给定端口的根环境下访问,例如Tomcat实例与多个WebApps - 会话互相干扰

http://server:8081 
http://server:8082 
... 

我已经给每一个单独的“服务”,“连接器”,“引擎”,并server.xml中内的“主机”条目。一切似乎工作正常,除非一旦我登录到第一个应用程序,如果我然后登录到第二个第一个失去它的会话信息并注销。

如果我编辑server.xml并在其原始上下文中运行它们,例如

http://server:8081/jenkins 
http://server:8082/jenkins 
... 

一切似乎工作正常。这让我相信,当会话在根上下文中时,它们会以某种方式共享,即使它们具有单独的连接符等。任何想到我正在做什么都会导致这种情况发生?

我证实,这两个实例共享相同JSESSIONID和,当我用一个实例登录,其他失去了它的第一JSESSIONID,并采取第二,有效地失去它的身份验证。

回答

2

查看sessionCookiePath上下文参数。我没有自己尝试过,但我认为这可能是你正在寻找的技巧。

+0

感谢。我已经开始尝试这个,但没有运气。 – nweiler

0

的Tomcat 7

修改文件$ CATALINA_BASE/conf/context.xml文件,添加一个属性sessionCookieName

<!-- The contents of this file will be loaded for each web application --> 
<Context sessionCookieName="JSESSIONID_SERVER_01"> 
<!-- Default set of monitored resources --> 
<WatchedResource>WEB-INF/web.xml</WatchedResource> 
<!-- Uncomment this to disable session persistence across Tomcat restarts --> 
<!-- 
<Manager pathname="" /> 
--> 
<!-- Uncomment this to enable Comet connection tacking (provides events 
on session expiration as well as webapp lifecycle) --> 
<!-- 
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> 
--> 
</Context>