2013-04-16 69 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>