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 は、同一サーバーに対する後続の要求に使用されます。
手順
タスクの結果
例
<!-- 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>
Map<String, Object> rc = ((BindingProvider) port).getRequestContext();
...
...
rc.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, Boolean.TRUE);
...
...