具有多个Web应用程序的Tomcat实例-会话相互干扰

具有多个Web应用程序的Tomcat实例-会话相互干扰,tomcat,jenkins,Tomcat,Jenkins,我试图在一个Tomcat实例上运行多个WebApp。我的目标是在给定端口的根上下文中访问每个端口,例如 http://server:8081 http://server:8082 ... 我在server.xml中为每一个提供了单独的“服务”、“连接器”、“引擎”和“主机”条目。一切似乎都很正常,只是一旦我登录到第一个应用程序,如果我再登录到第二个应用程序,第一个应用程序将丢失其会话信息并注销 如果我编辑server.xml并在其原始上下文中运行它们,例如 http://server:8081

我试图在一个Tomcat实例上运行多个WebApp。我的目标是在给定端口的根上下文中访问每个端口,例如

http://server:8081
http://server:8082
...
我在server.xml中为每一个提供了单独的“服务”、“连接器”、“引擎”和“主机”条目。一切似乎都很正常,只是一旦我登录到第一个应用程序,如果我再登录到第二个应用程序,第一个应用程序将丢失其会话信息并注销

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

http://server:8081/jenkins
http://server:8082/jenkins
...
一切似乎都很好。这让我相信,当会话都在根上下文中时,会话是以某种方式共享的,即使它们有单独的连接器,等等。知道我在做什么导致了这种情况吗


我确认这两个实例共享同一个jsessionID,并且当我使用一个实例登录时,另一个实例将丢失其第一个jsessionID,并使用第二个jsessionID,实际上将丢失其身份验证

看看上下文参数。我自己没有试过,但我想这可能是你正在寻找的诀窍。

Tomcat 7

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


WEB-INF/WEB.xml

谢谢。我自己也开始尝试这个,但还没有运气。
<!-- 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>