エンドポイント参照は、Web サービス・アドレッシング (WS-Addressing) インターオペラビリティーの基本の概念で、特定の Web サービス・エンドポイントについての情報をカプセル化するための標準のメカニズムを提供します。この製品では、標準 JAX-WS API を使用してエンドポイント参照を作成するためのインターフェースが提供されています。
このタスクについて
このタスクは Web サービス・アドレッシングを使用する JAX-WS Web サービス・アプリケーションの作成のサブタスクです。
標準の JAX-WS WS-Addressing API を使用するアプリケーションを作成する場合は、このタスクを実行します。
このようなアプリケーションには、ターゲット Web サービス・エンドポイントへのエンドポイント参照が必要です。標準 JAX-WS API は、単純なエンドポイント参照のみを作成するように設計されているため、以下の制限があります。
- 高可用性エンドポイント参照またはワークロード管理エンドポイント参照を作成することはできません。
- ステートフル・セッション Bean を示すエンドポイント参照を作成することはできません。
- JAX-WS API と IBM 所有の WS-Addressing SPI を使用して作成されたクラスを使用することはできません。
これらの制限は、IBM 所有の WS-Addressing
API を使用してエンドポイント参照を作成してから、アプリケーションのその他の部分が使用できる標準 JAX-WS エンドポイント参照にそれらを変換することで、克服することができます。
手順
- エンドポイントで、そのエンドポイント自体を示すエンドポイント参照を作成する必要がある場合、Web サービス・コンテキスト・オブジェクトの getEndpointReference メソッドを使用し、エンドポイント参照に関連付けられる参照パラメーターを表す Element オブジェクト (参照パラメーターを指定しない場合には null オブジェクト) を渡します。
デフォルトで、このメソッドにより W3CEndpointReference オブジェクトが作成されます。
2004/08 WS-Addressing 仕様に準拠するエンドポイントを表す、SubmissionEndpointReference オブジェクトを作成する場合は、エンドポイント参照タイプをパラメーターとして渡します。
例えば、以下のコード・フラグメントは getEndpointReference メソッドを使用して、エンドポイント参照に関連付けられたチケット ID を持つ W3CEndpointRerence オブジェクトを戻します。
...
@WebService(name="Calculator",
targetNamespace="http://calculator.org")
public class Calculator {
@Resource
WebServiceContext wsc;
...
// Create the ticket id
element = document.createElementNS(
"http://calculator.jaxws.axis2.apache.org", "TicketId");
element.appendChild( document.createTextNode("123456789") );
...
public W3CEndpointReference getEPR() {
// Get the endpoint reference and associate the ticket id
// with it as a reference parameter
W3CEndpointReference epr = (W3CEndpointReference)wsc.getEndpointReference(element);
return epr;
}
...
次のコード行は、前述の例に関する 2004/08 エンドポイント参照を作成する方法を示しています。
SubmissionEndpointReference epr = (SubmissionEndpointReference)
wsc.getEndpointReference(SubmissionEndpointReference.class, element);
- エンドポイントで、別のエンドポイントを示すエンドポイント参照を作成する必要がある場合は、使用する名前空間に応じて、W3CEndpointReferenceBuilder クラスまたは SubmissionEndpointReferenceBuilder クラスのいずれかを使用します。
- 該当するビルダー・クラスのインスタンスを作成します。 2005/08 WS-Addressing 仕様に準拠するエンドポイント参照を作成する場合は、W3CEndpointReferenceBuilder クラスを使用します。2004/08
WS-Addressing 仕様に準拠するエンドポイント参照を作成する場合は、SubmissionEndpointReferenceBuilder クラスを使用します。
- エンドポイントのロケーションに従って、以下のビルダー・インスタンスのプロパティー (複数可) を設定します。
- オプション: 必要に応じて、ビルダー・インスタンスのその他のプロパティーを設定します。 例えば、Web サービスを使用してリソース・インスタンスにアクセスする場合、referenceParameter プロパティーを使用して、リソースの ID とエンドポイント参照を関連付けます。設定可能なプロパティーに関して詳しくは、API 文書を参照してください。
- ビルダー・インスタンスで build メソッドを呼び出し、エンドポイント参照を取得します。
例えば、以下のコード・フラグメントは W3CEndpointReferenceBuilder クラスを使用して、2005/08 仕様に準拠するエンドポイント参照を取得し、別のアプリケーションにあるエンドポイントを指しています。
...
@WebService(name="Calculator", targetNamespace="http://calculator.org")
public class Calculator {
public W3CEndpointReference getEPR() {
...
// Create the builder object
W3CEndpointReferenceBuilder builder = new
W3CEndpointReferenceBuilder();
// Modify builder properties
builder.address(otherServiceURI);
// Create the endpoint reference from the builder object
W3CEndpointReference epr = builder.build();
return epr;
}
...
以下のコード・フラグメントは SubmissionEndpointReferenceBuilder クラスを使用して、2004/08 仕様に準拠するエンドポイント参照を取得し、このアプリケーションの別のモジュールにあるエンドポイントを指しています。
...
@WebService(name="Calculator", targetNamespace="http://calculator.org")
public class Calculator {
public W3CEndpointReference getEPR() {
...
// Create the builder object
SubmissionEndpointReferenceBuilder builder = new
SubmissionEndpointReferenceBuilder();
// Modify builder properties
builder.serviceName(calculatorService);
builder.endpointName(calculatorPort);
// Create the endpoint reference from the builder object
SubmissionEndpointReference epr = builder.build();
return epr;
}
...
タスクの結果
アプリケーションで使用されるエンドポイント参照が作成されました。
次のタスク
- 必要であれば、createIBMEndpointReference メソッドを使用して、エンドポイント参照を com.ibm.websphere.wsaddressing.EndpointReference クラスのインスタンスに変換します。
例えば、クライアントで、アウトバウンド・メッセージに対して FaultTo メッセージ・アドレッシング・プロパティーを指定することもできます。
JAX-WS API を使用してこのプロパティーを設定することはできないため、FaultTo エンドポイントを示すエンドポイント参照を com.ibm.websphere.wsaddressing.EndpointReference クラスのインスタンスに変換してから、それを BindingProvider オブジェクトのプロパティーとして設定する必要があります。
- Web サービス・アドレッシングを使用する JAX-WS Web サービス・アプリケーションの作成で継続します。