2つのGlassfishインスタンスで実行される2つのアプリケーションがあり、次のようにsticky session
を使用するようにApacheを構成します。
ProxyPass / balancer://Appcluster/ stickysession=JSESSIONID
ただし、これは100%正しく機能するわけではなく、クライアントがApp1からApp2に移行するときにインスタンスが変更されることがあります。
ナビゲーターでCookieを確認すると、次のように表示されます。
web.xml
で次のような別の構成を見つけました:
<session-config>
<session-timeout>
30
</session-timeout>
<cookie-config>
<path>/</path>
</cookie-config>
</session-config>
したがって、このパスをこのようにすると、すべてが正常に機能しますが、この2つのアプリケーション間のすべてのナビゲーションに新しいコンテキストが作成されます。
ここで、Glassfishを構成し、App1をデフォルトのWebモジュールのように設定します。これは正常に機能し、コンテキストは同じで、サーバーは新しいCookieを作成しますこのような :
しかし、NO Default Web Moduleに接続しようとすると、2つのインスタンスが使用されます。
クラスター環境で複数のアプリケーションを実行するためのApacheとGlassfishの正しい構成を提案できますか?
[〜#〜]編集[〜#〜]
私は何かを通知したので、クライアントがApp1からApp2、そしてVSに移行するとき、クライアントが次のような新しいCookieを作成するたびに:
+-------+----------------------------------------+
| APP | Cookie |
+-------+----------------------------------------+-----+
| app1 | b5a1cd4befdc306f6e569d835b5e.instance2 | New |
+-------+----------------------------------------+-----+
| app2 | b6caf890638a506216d625f7c82b.instance2 | New |
+-------+----------------------------------------+-----+
| app1 | b6d1870ad8f3d044cc768b31e810.instance2 | New |
+-------+----------------------------------------+-----+
| app2 | b6d84bf7b2a6fc37e3c9ffaf701b.instance2 | New |
+-------+----------------------------------------+-----+
| app2 | b6d84bf7b2a6fc37e3c9ffaf701b.instance2 |Same | because i don't change the application
+-------+----------------------------------------+-----+
1週間の検索の後、ようやく解決策が見つかりました。
私は2つのものを使用します。1つは2つのアプリケーションで、もう1つはサーバーApacheで使用します。
したがって、アプリケーションでは、Cookieの名前をweb.xmlで定義する必要があります。
APP1
<session-config>
<session-timeout>
30
</session-timeout>
<cookie-config>
<name>jsessionapp1</name>
<path>/</path>
</cookie-config>
</session-config>
APP2
<session-config>
<session-timeout>
30
</session-timeout>
<cookie-config>
<name>jsessionapp2</name>
<path>/</path>
</cookie-config>
</session-config>
そしてサーバーApacheでstickysessionの名前を/ etc/httpd/conf/httpd_proxy.confに修正します:
ProxyPass / balancer://Appcluster/ stickysession=jsessionapp1|jsessionapp2|jsessionappN
これよりも優れた解決策があるかどうかはわかりません。はいの場合は、喜んで知っています。