/ / Cookie JSESSIONID名の変更-java、tomcat、jsessionid

Cookie JSESSIONID名の変更-java、tomcat、jsessionid

複数実行する必要があります単一の物理ボックス内のTomcatサーバー。ブラウザからこれらにアクセスしているときに、ユーザーがアプリケーションを切り替えると、以前にアプリケーションにアクセスしたユーザーがログアウトされます。これは、JSESSIONID Cookieの競合が原因です。

考えられる解決策の1つは、各アプリケーションを実行することです異なるコンテキストで。残念なことに、request.getContextPath()が先頭に追加されたリソースにはアクセスされないため、アプリケーションはコンテキストパス設定で動作しません。

これにより、競合を解決するためにCookie JSESSIONIDの名前を変更する必要があります。これを行う方法はありますか?はいの場合、どのように?

私の質問をはっきりさせたいと思います。

注:私のアプリケーションはすべて、同じマシンの異なるポートで実行されています。

回答:

回答№1の51

Servlet API 3.0を使用すると、すべてがはるかに簡単になります。

web.xmlで設定できるようになりました:

<session-config>
<cookie-config>
<name>MY_JSESSIONID_YAHOOOOOO</name>
</cookie-config>
</session-config>

それでおしまい!


回答№2の13

次の2つのシステムプロパティを使用すると、これを簡単に実現できます。

  • org.apache.catalina.SESSION_COOKIE_NAME
  • org.apache.catalina.SESSION_PARAMETER_NAME

上記のプロパティに任意の値を渡して、デフォルト値を変更できます。

ここに 完全な詳細 いくつかのサンプルスクリプトが見つかりました。


回答№3の12

Tomcat 7はこれをorg.apache.catalina.SESSION_COOKIE_NAMEからメインの<Context>設定の属性に移動します。 http://tomcat.apache.org/migration-7.html#Session_manager_configuration


回答№4の12

以下は、context.xmlファイルのTomcat7で機能します。

<Context path="/yourApp" sessionCookieName="custom_session_id">

回答№5の4

この時点では「考えられない」-参照 https://issues.apache.org/bugzilla/show_bug.cgi?id=42419

最後のエントリには、「これは5.5.xで修正され、5.5.28以降に含まれる予定です」-次のポイントリリースである-5.5.27が現在のリリースです。


答え№6の2

これが機能するかどうかは100%確かではありませんが、 jvmRoute 属性。一般に、ロードバランサーがノードを区別できるようにするために、ロードバランシング/クラスター化された環境で使用されます。例:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">

これにより、「ABCDEF123456.node1」のようなJSESSIONID値が生成されます。

ドキュメントリンク.