JAX-WS アプリケーションに対する Web サービス・アドレッシング・サポートの使用可能化
Web サービス・アドレッシング (WS-Addressing) サポートでは、Web サービスをアドレス指定するメカニズムを提供し、メッセージにアドレッシング情報を提供します。JAX-WS アプリケーションの場合は、 ポリシー・セットの構成や、コード内でのアノテーションの使用など、 いくつかの異なる方法で WS-Addressing サポートを使用可能にすることができます。
このタスクについて
このタスクを実行して、WS-Addressing サポートを、サービス・プロバイダーまたは別の関係者によって提供されたサービスのクライアントのどちらかとして、有効にします。
サービス・プロバイダーの場合、WS-Addressing サポートはデフォルトで使用可能に設定されているため、そのサポートを使用可能にする処置は何も行う必要がありません。
ただし、この使用可能化メカニズムを使用して、WS-Addressing 情報が要求されるかどうか、および生成される WSDL 文書に何が含まれるかといった、サービスに対する WS-Addressing のその他の振る舞いを変更することができます。
- ポリシー・セットをアプリケーションに関連付けてアプリケーションをデプロイしてから、WS-Addressing サポートの振る舞いを変更します。 ポリシー・セット内で、WS-Addressing ポリシー・セットを構成して、着信メッセージで WS-Addressing 情報が要求されるかどうかということや、同期メッセージングまたは非同期メッセージングのどちらを使用するかなどを指定することができます。 サーバーでポリシー共有を使用可能に設定し、クライアントにプロバイダー・ポリシーを適用することで、WS-Addressing ポリシー構成を、WS-Policy をサポートするその他のサーバーおよびクライアントに伝えることができます。 この方法は、他の方法よりも優先されます。
- port-component エレメント内でデプロイメント記述子を使用します。
- サービス・コードで Addressing アノテーションまたは SubmissionAddressing アノテーションを使用することによって、 サービスの開発時に WS-Addressing サポートの振る舞いを変更します。 各アノテーションで、サーバーで WS-Addressing が使用可能かどうか、サーバーが着信メッセージで WS-Addressing 情報を必要とするかどうか、さらにサーバーが使用することになるメッセージ交換パターンを指定できます。 コード内に Addressing アノテーションがあると、サービスで生成される任意の WSDL 文書に対して、UsingAddressing エレメントと WS-Policy アサーションが追加されます。
- WSDL 文書に UsingAddressing エレメントまたは WS-Policy アサーションを追加して、サービス開発中の WS-Addressing サポートの動作を変更します。 JAX-WS ランタイム環境で生成した WSDL 文書に依存するのではなく、独自の WSDL 文書を提供し、その WSDL 文書が JAX-WS 2.2 クライアント以外によって使用される場合には、クライアントが WS-Policy アサーションを処理しないように UsingAddressing エレメントを組み込むこともできます。
サービス・クライアントの場合、WS-Addressing サポートはデフォルトで使用不可に設定されています。
WS-Addressing サポートを使用可能にするには、以下の方法の 1 つを使用します。適用できる方法は複数あるので、以下のリストは優先順位が高い順に記述されています。例えば、デプロイメント記述子による方法は、
アノテーションまたはフィーチャーの使用をオーバーライドしますが、ポリシー・セットの使用
によりオーバーライドされます。
- クライアント成果物にポリシー・セットを付加し、以下のいずれかのアクションを実行します。
- ポリシーで、WS-Addressing を必須に指定します。
- クライアントおよびプロバイダーの両方のポリシーを適用します。 この状態では、サービス・プロバイダー上でポリシー共有が有効に設定され、そのプロバイダーのポリシー構成で WS-Addressing が必須に指定されている場合にのみ、クライアントで WS-Addressing サポートが使用可能になります。
- クライアント要求コンテキストにプロパティー com.ibm.websphere.webservices.use.async.mep を設定します。
- IBM® 専有の WS-Addressing SPI を使用して、メッセージ・アドレッシング・プロパティーをメッセージ要求コンテキストに追加します。
- port-component-ref エレメント内でデプロイメント記述子を使用します。
- クライアント・コードで Addressing アノテーションと WebServiceRef アノテーションを 組み合わせて使用します (注入された Web サービス・プロキシー参照を使用している場合)。
- クライアント・コードでアドレッシング・フィーチャーを使用します。この方法によるプロパティーの設定は、 サービスの WSDL 文書内のプロパティーの設定をオーバーライドします。
- WSDL 文書で WS-Policy アサーションを使用して、WS-Addressing サポートを指定します。 クライアント・アプリケーション・コードに Addressing アノテーションを追加すると、生成された WSDL 文書には WS-Policy アサーションが組み込まれます。
- サービスの WSDL 文書に UsingAddressing エレメントを指定します。 サービスで Addressing アノテーションが使用されており、 WSDL 文書をコードから生成する場合は、UsingAddressing エレメントは既に存在しています。
以下の表に、WS-Addressing サポートの動作の要約を示します。 この表を使用して、ポリシー構成が関係しないクライアント設定に対して、要求メッセージが受け入れられるかどうかを判別します。
これは、複数列にまたがる列見出しのある複雑な表となっています。
「クライアント設定 (Client settings)」というタイトルのヘッダー列があり、これは WS-Addressing サポートがクライアントで有効かどうか、またどのメッセージング・スタイルが構成されているかを示しています。2 番目のメイン列はプロバイダー上のポリシー設定を示していて、その下に 2 つのサブ列があり、WS-Addressing がオプションか必須かを示しています。
どちらのサブ列も、さらに 3 つのサブ列に分割され、メッセージング・スタイル (同期、非同期、またはその両方) を示します。
3 番目のメイン列は、プロバイダー上の WSDL 設定を示していて、WS-Addressing がオプションか必須かを示すサブ列が 2 つあります。
クライアント設定 | プロバイダー・ポリシー設定 | プロバイダー WSDL 設定 (UsingAddressing required 属性) | ||||||
---|---|---|---|---|---|---|---|---|
WS-Addressing はオプション | WS-Addressing は必須1 | |||||||
同期および非同期 | 同期のみ (Synchronous only) | 非同期のみ (Asynchronous only) | 同期および非同期 | 同期のみ (Synchronous only) | 非同期のみ (Asynchronous only) | false (WS-Addressing はオプション) | true (WS-Addressing は必須1) | |
WS-Addressing サポート有効で、メッセージング・スタイルは同期 | メッセージ受け入れ | メッセージ受け入れ | 障害 | メッセージ受け入れ | メッセージ受け入れ | 障害 | メッセージ受け入れ | メッセージ受け入れ |
WS-Addressing サポート有効で、メッセージング・スタイルは非同期 | メッセージ受け入れ | 障害 | メッセージ受け入れ | メッセージ受け入れ | 障害 | メッセージ受け入れ | メッセージ受け入れ | メッセージ受け入れ |
WS-Addressing サポート無効で、メッセージング・スタイルは同期 | メッセージ受け入れ | メッセージ受け入れ | メッセージ受け入れ2 | 障害 | 障害 | 障害 | メッセージ受け入れ | 障害 |
WS-Addressing サポート無効で、メッセージング・スタイルは非同期3 | 障害 | 障害 | 障害 | 障害 | 障害 | 障害 | 障害 | 障害 |
注意:
- WS-Addressing が必須の場合、WS-Addressing ヘッダーがない要求はすべて拒否されます。
- メッセージング・スタイルは、WS-Addressing ヘッダーが要求内に存在する場合にのみ適用されます。
- 非同期メッセージングは、WS-Addressing ヘッダーなしでは使用できません。
以下の表を使用して、クライアントとプロバイダーの両方に WS-Addressing ポリシー構成があり、クライアントにプロバイダー・ポリシーとクライアント・ポリシーが適用され、サーバー上でポリシー共有が有効になっている場合に要求メッセージが受け入れられるかどうかを判断します。
これは、複数列にまたがる列見出しのある複雑な表となっています。
「クライアント設定 (Client settings)」というタイトルのヘッダー列があり、これは WS-Addressing サポートがクライアントでオプションか必須か、またどのメッセージング・スタイルが構成されているかを示しています。2 番目のメイン列はプロバイダー上のポリシー設定を示していて、その下に 2 つのサブ列があり、WS-Addressing がオプションか必須かを示しています。
どちらのサブ列も、さらに 3 つのサブ列に分割され、メッセージング・スタイル (同期、非同期、またはその両方) を示します。
クライアント・ポリシー設定 | プロバイダー・ポリシー設定 | |||||
---|---|---|---|---|---|---|
WS-Addressing はオプション | WS-Addressing を必須にする (WS-Addressing is mandatory) | |||||
同期および非同期 | 同期のみ (Synchronous only) | 非同期のみ (Asynchronous only) | 同期および非同期 | 同期のみ (Synchronous only) | 非同期のみ (Asynchronous only) | |
WS-Addressing はオプション、メッセージング・スタイルは同期および非同期 | メッセージ受け入れ | メッセージ受け入れ | メッセージ受け入れ | メッセージ受け入れ | メッセージ受け入れ | メッセージ受け入れ |
WS-Addressing はオプション、メッセージング・スタイルは同期のみ | メッセージ受け入れ | メッセージ受け入れ | メッセージ受け入れ1 | メッセージ受け入れ | メッセージ受け入れ | 障害 |
WS-Addressing はオプションで、メッセージング・スタイルは非同期のみ2 | 障害 | 障害 | 障害 | メッセージ受け入れ | 障害 | メッセージ受け入れ |
WS-Addressing は必須で、メッセージング・スタイルは同期および非同期 | メッセージ受け入れ | メッセージ受け入れ | メッセージ受け入れ | メッセージ受け入れ | メッセージ受け入れ | メッセージ受け入れ |
WS-Addressing は必須で、メッセージング・スタイルは同期のみ | メッセージ受け入れ | メッセージ受け入れ | 障害 | メッセージ受け入れ | メッセージ受け入れ | 障害 |
WS-Addressing は必須で、メッセージング・スタイルは非同期のみ | メッセージ受け入れ | 障害 | メッセージ受け入れ | メッセージ受け入れ | 障害 | メッセージ受け入れ |
注意:
プロバイダー・ポリシーとクライアント・ポリシーが共有されない場合、クライアントは WS-Addressing ヘッダーを送信しません (別の方法によってクライアント上で WS-Addressing を有効にした場合を除く)。
この状態では、プロバイダー・ポリシーによって WS-Addressing が必須であると指定されている場合、メッセージング・スタイルに関係なくサーバーによって障害が生成されます。- メッセージング・スタイルは、WS-Addressing ヘッダーが要求内に存在する場合にのみ適用されます。
- 非同期メッセージングは、WS-Addressing ヘッダーなしでは使用できません。
手順
- サービス・プロバイダーまたはクライアントのいずれかのポリシー・セットを作成または変更することにより、WS-Addressing サポートの動作を変更する場合は、ポリシー・セットを使用した JAX-WS アプリケーションに対する Web サービス・アドレッシング・サポートの使用可能化を参照してください。
- WebSphere® Application Server クライアントを使用している場合に WS-Addressing サポートを使用可能にするには、クライアント要求コンテキストに com.ibm.websphere.webservices.use.async.mep プロパティーを設定します。 詳細については、トピック『JAX-WS Web サービスの非同期呼び出し』を参照してください。
- サービス・アプリケーションまたはクライアント・アプリケーションのデプロイメント記述子を 使用することにより、WS-Addressing サポートの動作を変更する場合は、デプロイメント記述子を使用した、JAX-WS アプリケーションに対する Web サービス・アドレッシング・サポートの使用可能化を参照してください。
- サービス・アプリケーションのアドレッシング・アノテーション、あるいは注入済みの Web サービス・プロキシー参照を使用するクライアントのアドレッシング・アノテーションを使用して、プログラマチックに WS-Addressing サポートの動作を変更するには、トピックアドレッシング・アノテーションを使用した、JAX-WS アプリケーションに対する Web サービス・アドレッシング・サポートの使用可能化を参照してください。
- アドレッシング・フィーチャー・クラスのインスタンスを使用することにより、クライアントで WS-Addressing サポートをプログラムで使用可能にする場合は、アドレッシング・フィーチャーを使用した、JAX-WS アプリケーションに対する Web サービス・アドレッシング・サポートの使用可能化を参照してください。
- WS-Policy アサーションを WSDL ファイルに追加して、クライアントまたはサービス・アプリケーションの開発中の WS-Addressing サポートの動作を変更します。WS-Policy を使用した、JAX-WS アプリケーションに対する Web サービス・アドレッシング・サポートの使用可能化というトピックを参照してください。
タスクの結果
これで、WS-Addressing プロパティーが SOAP メッセージ・ヘッダーに含まれ、メッセージを受信するとサーバーによって処理されるようになりました。