ステートフル Web サービスを WS-Resource としてインプリメ
ントし、WS-Addressing エンドポイント参照を使用して、それを参照することができます。
WS-Resources は、同じツールを使用して通常の Web サービスと同じ方法で開発しますが、このトピックで説明するように、実行しなければならない追加のタスクがいくつかあります。
このタスクについて
WS-Resource は、ステートフル・リソースと、それを介してリソースへアクセスされる Web
サービスの組み合わせであり、これを作成したいときにこのタスクを実行します。
このタスクを完了するには、標準 Web サービス開発タスク、および Web サービス・リソース・フレームワーク (WSRF) 仕様の知識を持っている必要があります。
WSRF 仕様への入門としては、OASIS WSRF Primer 文書をお読みください。
プロシージャー
- WS-Resource がアクセスを提供するリソース・コンポーネントを識別、または作成します。
このリソース・コンポーネントは、既存のシステムまたはエンティティーであるか、あるいは新規コンポーネントである場合があります。
リソースをインプリメントする方法に制約はありません。
単純な Java クラス、ステートレス・セッション・エンタープライズ Bean、リレーショナル・データベースによってサポートされるエンティティー Bean、サービス・データ・オブジェクト (SDO)、Java コネクター、またはその他のコンポーネントが可能です。
- WS-Resource 用のリソース・プロパティー・スキーマ文書を識別、または作成します。
WebSphere Application Server Toolkit、またはいずれかの XML スキーマ・オーサリング・ツールを使用して、XML スキーマを作成します。
スキーマは、リソース・プロパティー文書のルート・エレメント用に、XML complexType エレメントを定義します。
- WS-Resource の Web サービス・コンポーネント用の WSDL 文書を作成または生成します。
WSDL ファイルの作成について詳しくは、JAX-RPC アプリケーション用の WSDL ファイルの開発
を参照してください。
- WSDL ファイルを編集して、ResourceProperties 属性を portType エレメントに追加します。
この属性は、前に作成したリソース・プロパティー文書のルート・エレメントを識別します。
例えば、Printer サービスのネーム・スペース http://example.org/printer 内に、
ルート・エレメント <printer_properties> を伴うリソース・プロパティー文書がある場合、
wsdl:portType エレメントは以下のようになります。
<wsdl:portType xmlns:pr="http://example.org/printer"
xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"
name="Printer" wsrf-rp:ResourceProperties="pr:printer_properties">
- WS-Resource を指示する EndpointReference を入手するための方法を提供します。
「Create」と呼ばれる wsdl:operation エレメントを定義すると、それは、型 EndpointReferenceType の wsdl:output メッセージを戻します。
Printer WS-Resource に EndpointReference を戻す CreatePrinter オペレーションの例については、例: Web Services Addressing API を使用して Web Services Resource (WS-Resource) インスタンスをアクセスする
Web サービスの作成
を参照してください。
- WS-Resource が wsdl:portType エレメントの子エレメントとしてサポートする、それぞれの WSRF 定義のオペレーションを定義します。
ポート・タイプでサポートされるそれぞれの WSRF 定義のオペレーションについて、それぞれの wsdl:message
エレメント上で WS-Addressing action 属性を指定します。
例えば、GetResourceProperty オペレーションは WSDL 内で以下のように定義されます。
<wsdl:operation name="GetResourceProperty"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
xmlns:wsrf-rpw="http://docs.oasis-open.org/wsrf/rpw-2">
<wsdl:input name="GetResourcePropertyRequest" message="wsrf-rpw:GetResourcePropertyRequest"
wsaw:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest"/>
<wsdl:output name="GetResourcePropertyResponse" message="wsrf-rpw:GetResourcePropertyResponse"
wsaw:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse"/>
...
</wsdl:operation>
wsaw:Action 属性は、デフォルトの URI 値ではなく、WSRF 定義の wsaw:Action URI が WSRF 定義のメッセージのために使用されることを確実にします。
注: ResourceProperties 属性が PortType エレメント上にある場合は、WS-ResourceProperties 仕様には GetResourceProperty オペレーションの存在が必要となります。
- Web サービス・アドレッシング・エンドポイント参照を介して参照される Web サービス・アプリケーションの作成
のステップ 2 からの指示に従
って、WS-Resource の実装を作成し、クライアント
がエンドポイント参照を使用して WS-Resource にアクセスできるようにし、アプリケーションをデプロイします。