1

我正在尝试在单个 Tomcat 实例上运行多个 WebApp。我的目标是让每个端口都可以在给定端口的根上下文中访问,例如

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

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

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

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

一切似乎都很好。这使我相信当它们都在根上下文中时会话以某种方式共享,即使它们具有单独的连接器等。知道我在做什么导致这种情况发生吗?

我确认这两个实例共享相同的 jsessionID,并且当我使用一个实例登录时,另一个实例丢失了它的第一个 jsessionid 并采用了第二个,实际上失去了它的身份验证。

4

2 回答 2

2

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

于 2013-04-16T19:40:31.490 回答
1

雄猫 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>
于 2013-07-05T17:49:39.797 回答