あるアプリケーションから別のアプリケーションへの移動/トラバースを伴うタスクに取り組んでいます。アプリケーションは別々の JVM にあります。
他のアプリケーションに移動する間、セッション ID を追跡します。ただし、前後にトラバースすると、新しいセッションが作成されます。子アプリケーションから親アプリケーションに戻るときに、保持している sessionId を使用して同じセッションに戻る方法はありますか?
環境: J2EE と WebSphere。
あるアプリケーションから別のアプリケーションへの移動/トラバースを伴うタスクに取り組んでいます。アプリケーションは別々の JVM にあります。
他のアプリケーションに移動する間、セッション ID を追跡します。ただし、前後にトラバースすると、新しいセッションが作成されます。子アプリケーションから親アプリケーションに戻るときに、保持している sessionId を使用して同じセッションに戻る方法はありますか?
環境: J2EE と WebSphere。
Mork0075 で述べたように、sessionID は Cookie 名とサーバー ドメインに関連付けられています。別の JVM 上の 2 つのアプリに同じサーバー ドメインを使用している場合、アプリケーションを切り替えるときにセッションを維持するための 2 つのオプションが表示されます。
ロング ショット: 1) セッション レプリケーションの目的でデータベースを使用している場合、両方のアプリケーションに同じデータベースを使用でき、セッション ID は両方のアプリで使用できます。ここで私が目にする1つの問題は、コードが異なるなどの理由で、セッション内のオブジェクトが両側で利用できない可能性があることです。両側でコードなどを維持しない限り、おそらく反対側のセッションオブジェクトを破壊するでしょう。オブジェクトが利用可能でした。
考えられる可能性: 2) 2 つのアプリのいずれかでセッションに異なる Cookie 名を使用する。デフォルトでは、セッションは JSESSIONID を Cookie として使用し、2 番目のアプリに切り替えると、その Cookie 名に基づいてセッションを検索しようとしますが、見つかりません。そのため、新しいセッション ID を作成してブラウザーに送り返すため、セッション ID が変更され、元のアプリに戻ったときに使用できなくなります。ただし、2 番目のアプリのセッション ID を別のもの (JSESSIONID2 など) に変更すると、ブラウザーは、それぞれの正しいアプリケーションで有効な 2 つの有効なセッション ID を持つことになります。名前は、管理コンソールのアプリケーション サーバーの [セッション管理] -> [Cookie を有効にする] ページで変更できます。
これが役立つかどうかはわかりませんが、1 つのアプリケーションのシナリオでは、すべての応答で sessionID を送信し、URL、Cookie、または非表示フィールドとして保存します。新しいリクエストをサーバーに送信すると、サーバー側で解決するためにセッション ID も送信されます。私の理解では、あるアプリケーションから別のアプリケーションに切り替えるということは、アプリケーション全体で、ユーザーにセッション ID を与える必要があるということです。sessionID を Cookie に保存する場合、Cookie は特定のサーバー ドメインに制限されているため、これはおそらく不可能です。そのため、開始されたアプリケーションに戻った後、セッションがまだ有効であり、sessionID が存在することを確認してください。
これを手動で行う必要はありません。ほとんどのアプリ サーバーはシングル サインオン (SSO) をサポートしているため、1 つのアプリケーションにログインして、同じ SSO ドメイン内のすべてのアプリケーションにアクセスできます。アプリ サーバーはセッション ID を追跡し、それらを Web アプリ固有の HTTPSession オブジェクトにリンクします。
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.base.doc/info/aes/ae/csec_sso.htmlを参照してください。