Web サービス・アドレッシング (WS-Addressing) は、Web サービスをアドレス指定して、メッセージ内でアドレス指定する情報を提供する標準の方法を定義することで、Web サービス間のインターオペラビリティーを補助します。
このタスクでは、WS-Addressing エンドポイント参照を使用してアクセスされる Web サービスを作成するために必要なステップを説明します。
このタスクはまた、Web サービスの一部としてステートフル・リソースを使用するために必要な追加のステップも説明しています。
始める前に
このタスクで説明されているステップは、WebSphere Application Server 上で実行されるサーバーおよびクライアントに適用されます。
このタスクについて
WS-Addressing インターオペラビリティー・プロトコルに準拠している、言い換えればエンドポイント参照を介してアドレス指定されている Web サービスを作成している場合は、このタスクを実行します。
プロシージャー
- エンドポイント参照をターゲット・サービスに戻す Web サービスの Web
サービス記述言語 (WSDL) 文書を作成または生成することによって、Web サービス・インターフェースを提供します。
インターフェースは、ファクトリー・オペレーションまたは別々のファクトリー・サービスを使用することによって可能になるエンドポイント参照の戻しを行う必要があります。
ターゲット・サービスはリソース・インスタンス (例えばショッピング・カート) に面することができます。
- 前のステップで作成した Web サービスを実装します。
実装の WS-Addressing 部の場合は、以下のステップを実行します。
- Web サービス・アドレッシング・サポートを使用するエンドポイント参照の作成
の以下の指示に従って、Web サービスを参照するエンドポイント参照を作成します。
- オプション: ご使用のインターフェースが、リソース・インスタンスに面する Web サービスを呼び出す場合、リソース・インスタンスを作成またはルックアップします。
- オプション: リソース・インスタンスを使用している場合は、リソースの ID を入手し、EndpointReference.setReferenceParameter(QName
resource_id_name, String value) メソッドを使用して、それを参照パラメーターとしてエンドポイント参照と関連付けます。
リソース ID はアプリケーション依存で、リソース・インスタンスの作成中に生成されます。
重要: ID は SOAP メッセージ内を伝搬するので、リソース ID 内に機密情報を書き込んではいけません。
ここで、エンドポイント参照が、リソースをターゲットにします。
- エンドポイント参照を戻します。
- Web サービスがリソース・インスタンスを使用している場合は、実装を拡張して、着信メッセージが適切なリソース・インスタンスと一致するようにします。
リソース ID を前に作成したエンドポイント参照と関連付けたので、そのエンドポイント参照でターゲットされた着信メッセージはどれも、メッセージの SOAP ヘッダー内の参照パラメーターとしてリソース ID 情報を含んでいます。
リソース ID は SOAP ヘッダーに受け渡されるので、それを Web サービス・インターフェース上で公開する必要はありません。
WebSphere Application Server はメッセージを受信したとき、スレッド上のメッセージ・コンテキスト内にこの情報を書き込みます。
実装を拡張して、以下のアクションを実行します。
- EndpointReferenceManager.getReferenceParameterFromMessageContext(QName
resource_id_name) メソッドを使用して、メッセージ・コンテキストからリソース・インスタンス ID を入手します。
- メッセージを適切なリソース・インスタンスに転送します。
- クライアントを構成してサービスと通信するには、メッセージをエンドポイントに送信するファースト・ステップ内で、サービスによって作成されたエンドポイント参照を使用します。
- Java Naming and Directory Interface (JNDI) 内のサービスをルックアップすることによって通常の Java Platform, Enterprise Edition (Java EE) 方式で Stub オブジェクトを入手するか、
または代わりに空の Call オブジェクトを作成します。
- エンドポイント参照をプロキシー・オブジェクトと関連付けます。
Stub または Call オブジェクトの setProperty(String property_name, Object value) メソッドを使用して、
プロパティー名として WS-Addressing 定数の WSADDRESSING_DESTINATION_EPR を、
また値としてエンドポイント参照を使用して、エンドポイント参照を関連付けます。
このプロシージャーは、自動的に Stub または Call オブジェクトを構成して、
エンドポイント参照の Web サービス (またはご使用のインターフェースがリソース・インスタンスに面する Web サービスを使用している場合は、
リソース・インスタンス) を表します。
Call オブジェクトの場合、このプロセスには、
エンドポイント参照と関連付けられたインターフェースおよびエンドポイント・メタデータ (portType エレメントおよび
port エレメント) が含まれます。
注: Stub オブジェクトの場合、エンドポイント参照によって定義されたエンドポイントが
Stub オブジェクトの構成と競合する場合、例えば、エンドポイントが異なるインターフェースを表している場合、
エンドポイントの起動を試みると javax.xml.rpc.JAXRPCException 例外がスローされます。
Stub または Call オブジェクトでの呼び出しは、
エンドポイント参照で定義された Web サービスまたはリソース・インスタンスをターゲットとします。
呼び出しが発生すると、WebSphere Application Server は、
ターゲット・リソースを識別するエンドポイント参照に含まれる参照パラメーターなどの、
適切なメッセージ・アドレッシング・プロパティーをメッセージ・ヘッダーに追加します。