2013-04-16 3 views
1

하나의 Tomcat 인스턴스에서 여러 웹 응용 프로그램을 실행하려고합니다. 내 목표는 각 포트를 특정 포트에 대한 루트 컨텍스트에서 액세스 할 수있게하는 것입니다.여러 개의 웹 응용 프로그램이있는 Tomcat 인스턴스 - 서로 간섭하는 세션

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

나는 server.xml에서 각 "서비스", "커넥터", "엔진"및 "호스트"항목을 각각 부여했습니다. 첫 번째 앱에 로그인하고 나면 두 번째 계정에 로그인하면 첫 번째 앱에 세션 정보가 손실되고 로그 아웃되는 것을 제외하면 모든 것이 잘 작동하는 것 같습니다.

server.xml을 편집하고 원본 컨텍스트 (예 :

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

모든 것이 정상적으로 작동하는 것 같습니다. 이것은 내가 별도의 커넥터 등을 가지고 있더라도 세션이 루트 컨텍스트에있을 때 세션이 어떻게 든 공유된다고 믿게합니다.

두 인스턴스가 동일한 jsessionID를 공유하고 하나의 인스턴스로 로그인 할 때 다른 인스턴스가 첫 번째 jsessionid를 잃고 두 번째 인스턴스를 잃어 버리며 사실상 인증이 손실된다는 것을 확인했습니다.

답변

2

sessionCookiePath context 매개 변수를 살펴보십시오. 나는 그것을 직접 시도하지 않았지만 이것이 당신이 찾고있는 속임수라고 생각합니다.

+0

감사를 추가, 파일 $ CATALINA_BASE/conf의/context.xml에를 수정합니다. 나는 나 자신을 실험했지만 아직 행운은 없다. – nweiler

0

톰캣 7

속성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> 
관련 문제