我正在尝试在单个Tomcat实例上运行多个WebApp。我的目标是在给定端口的根上下文中访问每个端口,例如:
http://server:8081
http://server:8082
...
我在server.xml中为每个人分别提供了“服务”,“连接器”,“引擎”和“主机”条目。一切似乎工作正常,除了我登录到第一个应用程序后,如果我登录到第二个,第一个丢失其会话信息并注销。
如果我编辑server.xml并在原始上下文中运行它们,例如
http://server:8081/jenkins
http://server:8082/jenkins
...
一切似乎都很好。这让我相信会话在它们都在根上下文中时会以某种方式共享,即使它们有单独的连接器等等。我知道我在做什么导致这种情况发生?
我确认这两个实例共享相同的jsessionID,当我使用一个实例登录时,另一个实例丢失其第一个jsessionid并占用第二个实例,实际上失去了它的身份验证。
答案 0 :(得分:2)
查看sessionCookiePath上下文参数。我自己没有尝试过,但我认为这可能是你正在寻找的技巧。
答案 1 :(得分: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>