JAX-WS アプリケーション向け HTTP セッション管理サポートの使用

HTTP セッション管理は、Cookie または URL 再書き込みのいずれかを使用して、 HTTP トランスポート層で実行されます。 HTTP セッション管理は、一連の要求をトラッキングするために複数のオプションを提供することによって、 アプリケーション・ユーザーから Java™ API for XML-Based Web Services (JAX-WS) アプリケーションが動的に見えるようにします。

始める前に

JAX-WS 動的プロキシーまたはディスパッチ・クライアントを開発します。 JAX-WS クライアントの開発について詳しくは、Web サービス記述言語 (WSDL) ファイルからの JAX-WS クライアントの開発、または JAX-WS API を使用した動的クライアントの開発に関する説明を参照してください。

このタスクについて

HTTP セッション管理を使用してサーバーのユーザー状態情報を保守し、セッションをトラッキングするための最小限の情報をユーザーに引き渡すことができます。 セッション Cookie または URL 再書き込みのいずれかを使用して、アプリケーション・サーバーに HTTP セッション管理を実装できます。

ブラウザー、アプリケーション・サーバー、およびアプリケーション間の対話は、 ユーザーとアプリケーション・プログラムにはトランスペアレントです。 通常、アプリケーションとユーザーには、サーバーが提供するセッション ID が分かりません。

セッション Cookie

HTTP 保守セッション・フィーチャーは、単一 Cookie の JSESSIONID を使用します。さらにこの Cookie にはセッション ID が含まれています。この Cookie は、そのセッション用にサーバーに保管されている情報と要求を関連付けるために使用します。 JAX-WS アプリケーションからの後続の要求で、セッション ID は、 要求ヘッダーの一部として送信されます。これを使用することにより、アプリケーションは特定のセッション ID に関する各要求をそのユーザーからの事前の要求と関連付けることができます。 JAX-WS クライアント・アプリケーションは、HTTP 応答ヘッダーからセッション ID を取り出して、 HTTP 要求ヘッダーにそのセッション ID を設定することにより、それらの ID を後続の要求で使用します。

URL 再書き込み

URL 再書き込みは、セッション ID を URL に保管するときに、 リダイレクト URL のように機能します。 セッション ID は、Web ページからサブミットされる任意のリンクまたはフォームでパラメーターとしてエンコードされます。このエンコード URL は、同一サーバーに対する後続の要求に使用されます。

手順

  1. サーバーを構成してセッション・トラッキングを使用可能にします。 管理コンソールを使用して、セッション Cookie または URL 再書き込みのいずれかをセッション・トラッキング・メカニズムとして指定します。 Cookie または URL 再書き込みを使用してセッションをトラッキングする方法については、 セッション・トラッキングの構成に関する説明を参照してください。
  2. JAX-WS クライアントに関する HTTP セッション管理を使用可能にします。 ポリシー・セット・バインディングで maintainSession プロパティーを true に手動で設定できます。
    • HTTP トランスポート・ポリシー・セット・ファイルを使用してクライアントでのセッション管理を使用可能にします。 HTTP トランスポート・ポリシーは、管理コンソールを使用して構成できます。 「HTTP トランスポート設定 (HTTP transport setting)」ページで、「セッションの有効化 (Session enable)」チェック・ボックスを選択して、HTTP セッションを有効にします。 このプロパティーを設定する方法については、HTTP トランスポート・プロパティーの構成に関する説明を参照してください。 maintainSession プロパティーを yes に 手動で設定して HTTP セッション管理を有効にすることもできます。
    • クライアントのセッション管理を有効にするために、 JAX-WS プロパティー javax.xml.ws.session.maintaintrue に設定します。

タスクの結果

JAX-WS アプリケーションのために HTTP セッション管理を有効にしました。

以下の例は、maintainSession プロパティーの構成方法を示す HTTP トランスポート・ポリシー・セットからの抜粋です。
<!-- This is the PolicyType for HTTP transport -->
        <wsp:ExactlyOne>
                <wsp:All>
                        <wshttp:readTimeout>300</wshttp:readTimeout>
                        <wshttp:writeTimeout>300</wshttp:writeTimeout>
                        <wshttp:connectTimeout>180</wshttp:connectTimeout>
                        <wshttp:persistConnection>yes</wshttp:persistConnection>
                        <wshttp:messageResendOnce>no</wshttp:messageResendOnce>
                        <wshttp:chunkTransferEnc>no</wshttp:chunkTransferEnc>
                        <wshttp:acceptRedirectedURL>no</wshttp:acceptRedirectedURL>
                        <wshttp:sendExpectHeader>no</wshttp:sendExpectHeader>
                        <wshttp:maintainSession>yes</wshttp:maintainSession>
                        <wshttp:compressRequest>
                                <wshttp:compressType name="none"></wshttp:compressType>
                        </wshttp:compressRequest>
                        <wshttp:compressResponse>
                                <wshttp:compressType name="none"></wshttp:compressType>
                        </wshttp:compressResponse>
                        <wshttp:protocolVersion>HTTP/1.1</wshttp:protocolVersion>
                	</wsp:All>
        </wsp:ExactlyOne>
以下のコード・サンプルは、適切な JAX-WS オブジェクトの javax.xml.ws.session.maintain プロパティーを設定することで、クライアントのセッション管理をプログラムで有効にする方法を示しています。
Map<String, Object> rc = ((BindingProvider) port).getRequestContext();
...
...
rc.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, Boolean.TRUE);
...
...


トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_httpsessmgmt
ファイル名:twbs_httpsessmgmt.html