1

単一の Tomcat インスタンスで複数の WebApp を実行しようとしています。私の目標は、特定のポートのルートコンテキストでそれぞれにアクセスできるようにすることです。

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

server.xml 内で、それぞれに個別の「サービス」、「コネクタ」、「エンジン」、および「ホスト」エントリを指定しました。最初のアプリにログインした後、2 番目のアプリにログインすると、最初のアプリのセッション情報が失われ、ログアウトされることを除いて、すべて正常に動作しているようです。

server.xml を編集して元のコンテキストで実行すると、たとえば

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

すべてがうまくいくようです。これにより、セッションが別々のコネクタなどを持っている場合でも、両方がルートコンテキストにある場合、セッションが何らかの形で共有されていると信じるようになります。

2 つのインスタンスが同じ jsessionID を共有していることと、一方のインスタンスでログインすると、もう一方のインスタンスが最初の jsessionid を失い、2 番目の 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 に答える