プログラミング ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容

Web サービス クライアント プログラミング

この節では、以下のトピックが含まれています。

 


概要

Oracle SALT はコンフィグレーションに基づく製品で、既存の Tuxedo アプリケーション サービスを業界標準の Web サービスとして公開します。Web サービスのクライアントサイドのプログラミングの観点から見ると、Oracle Tuxedo フレームワークと連携する Oracle SALT は標準の Web サービス プロバイダです。Web サービス クライアント プログラムを作成するには、Oracle SALT の WSDL ファイルのみ使用する必要があります。

Web サービス クライアント プログラムを作成するには、次の手順に従います。

  1. Oracle SALT の WSDL ファイルを生成するかダウンロードします。詳細については、『管理ガイド』の「Oracle SALT アプリケーションのコンフィグレーション」を参照してください。
  2. Web サービスのクライアントサイドのツールキットを使用して、SALT の WSDL ドキュメントを解析し、クライアント スタブ コードを生成します。詳細については、「Oracle SALT Web サービス クライアントのプログラミングのヒント」を参照してください。
  3. クライアント生成のスタブ コードで定義されている関数を使用して、Oracle SALT Web サービスを呼び出すクライアントサイドのアプリケーション コードを作成します。
  4. クライアント アプリケーションをコンパイルして実行します。

 


Oracle SALT Web サービス クライアントのプログラミングのヒント

この節では、Oracle SALT でテスト済みの次のプログラミング ツールキットを使用した Web サービス クライアント プログラムの開発に役立つヒントを示します。

詳細については、『管理ガイド』の「相互運用性に関する考慮事項」を参照してください。

注意 : どの SOAP ツールキットでもクライアント ソフトウェアを開発できます。
注意 : ここで説明するツールキットのサンプル ディレクトリは、Oracle SALT のインストール後に確認できます。

Oracle WebLogic Web サービス クライアントのプログラミング ツールキット

WebLogic Server には、clientgen ユーティリティが用意されています。このユーティリティはアプリケーション サーバ コンポーネントで組み込み、Web サービスのクライアントサイドの Java プログラムの開発に使用できます。Web サービスは、スタンドアロンの Java プログラムとサーバ インスタンスから呼び出すことができます。詳細については、http://edocs.bea.com/wls/docs91/webserv/client.html#standalone_invoke を参照してください。

Oracle SALT では、従来の同期メッセージ交換モードに加えて、WebLogic Server を使用した非同期の信頼性のある Web サービス呼び出しをサポートしています。非同期通信は WS-Addressing 仕様で定義されています。信頼性のあるメッセージ交換は、WS-ReliableMessaging 仕様に準拠しています。

ヒント : HTTP MIME 添付ファイルを使用するには、WebLogic 固有の WSDL 文書を使用します。

Oracle SALT では、Tuxedo CARRAY データを SOAP 要求の MIME 添付ファイルにマッピングできます。MIME バインディングでは追加の符号化ラッピングを必要としないため、この機能はバイナリ データ ストリームが大きい場合に役立ちます。これにより、CPU サイクルとネットワーク帯域幅を節約できます。

また、エンタープライズ サービス指向の環境では、バイナリ データを使用すると、高レベルのデータ ルーティングと変換処理が可能になります。符号化されたデータは、問題を引き起こすことがあります。Tuxedo CARRAY データの MIME データ バインディングを有効にするには、tmwsdlgen コマンド ユーティリティとオンライン ダウンロードの使用時に、WSDL ドキュメント生成オプションで特別なフラグを指定する必要があります。

オンライン ダウンロード :
http://salt.host:portnumber//wsdl?mappolicy=raw&toolkit=wls

tmwsdlgen ユーティリティ :
tmwsdlgen -c WSDF_FILE -m raw -t wls

Apache Axis for Java Web サービス クライアントのプログラミング ツールキット

Oracle SALT は、AXIS の wsdl2java ユーティリティをサポートしています。このユーティリティは、WSDL 文書から java スタブ コードを生成します。AXIS Web サービスのプログラミング モデルは、WebLogic に似ています。

ヒント : 1. HTTP MIME 添付ファイル用、AXIS 固有の WSDL ドキュメントを使用します。

Oracle SALT は、Tuxedo CARRAY データの HTTP MIME 転送をサポートしています。WSDL のオンライン ダウンロードと tmwsdlgen ユーティリティで特にオプションを指定する必要があります。

オンライン ダウンロード :
http://salt.host:portnumber//wsdl?mappolicy=raw&toolkit=axis

tmwsdlgen ユーティリティ :
tmwsdlgen -c WSDF_FILE -m raw -t axis
ヒント : 2. RPC/encoded スタイルを使用する場合は、AXIS でマルチリファレンス形式を無効にします。

AXIS では、WSDL ドキュメントに RPC/encoded スタイルが指定されている場合は、マルチリファレンス形式の SOAP メッセージが送信されることがあります。ただし、Oracle SALT はマルチリファレンス形式をサポートしていません。AXIS のマルチリファレンス形式を無効にするには、コード リスト 3-1 の手順に従います。
コード リスト 3-1 AXIS のマルチリファレンス形式の無効化
TuxedoWebServiceLocator  service = new TuxedoWebServiceLocator();
service.getEngine().setOption("sendMultiRefs", false);
¦
ヒント : 3. WS-ReliableMessaging 通信を行うには、Oracle SALT で Apache Sandensha プロジェクトを使用します。

Oracle SALT と Apache Sandensha プロジェクト間における WS-ReliableMessaging の相互運用はテスト済みです。Sandensha の非同期モードと send offer をコードで設定する必要があります。

Apache Sandensha 非同期モードと send offer のコード例をコード リスト 3-2 に示します。
コード リスト 3-2 Apache Sandensha 非同期モードと「send offer」のサンプル コード
/* サービスを呼び出す。*/ 
TuxedoWebService service = new TuxedoWebServiceLocator();

Call call = (Call) service.createCall();
SandeshaContext ctx = new SandeshaContext();

ctx.setAcksToURL("http://127.0.0.1:" + defaultClientPort + "/axis/services/RMService");
ctx.setReplyToURL("http://127.0.0.1:" + defaultClientPort + "/axis/services/RMService");
ctx.setSendOffer(true);
ctx.initCall(call, targetURL, "urn:wsrm:simpapp", Constants.ClientProperties.IN_OUT);

call.setUseSOAPAction(true);
call.setSOAPActionURI("ToUpperWS");
call.setOperationName(new javax.xml.namespace.QName("urn:pack.simpappsimpapp_typedef.salt11", "ToUpperWS"));
call.addParameter("inbuf", XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);

String input = new String();
String output = new String();
int i;
for (i = 0; i < 3; i++ ) {
input = "request" + "_" + String.valueOf(i);

System.out.println("Request:"+input);
output = (String) call.invoke(new Object[]{input});
System.out.println("Reply:" + output);
	    }

ctx.setLastMessage(call);
input = "request" + "_" + String.valueOf(i);
System.out.println("Request:"+input);
output = (String) call.invoke(new Object[]{input});

Microsoft .NET Web サービス クライアントのプログラミング ツールキット

Microsoft .Net 1.1/2.0 は、.Net SDK パッケージで wsdl.exe を提供しています。これは Microsoft の無料の開発ツールキットです。Oracle SALT の simpapp サンプルでは、simpapp/dnetclient ディレクトリに .Net プログラムを用意しています。

.Net Web サービスのプログラミングはわかりやすくて簡単です。wsdl.exe ユーティリティと Oracle SALT の WSDL 文書を使用してスタブ コードを生成し、スタブ コードまたはバイナリの中の .Net オブジェクトをビジネス ロジックの実装で参照します。

ヒント : 1. CARRAY に .Net プログラムの MIME 添付ファイル バインディングを使用しないでください。

Microsoft は SOAP 通信の MIME バインディングをサポートしていません。.Net 開発では、CARRAY の MIME バインディングが指定された WSDL ドキュメントを使用しないでください。

Oracle SALT は、CARRAY データの base64Binary エンコーディング (デフォルトの WSDL 文書の生成) をサポートしています。
ヒント : 2. RPC/encoded スタイルの SOAP メッセージは、GWWS サーバで認識されないことがあります。

RPC/encoded スタイルで Oracle SALT の WSDL ドキュメントを生成すると、.Net によって soapenc:arrayType を含む SOAP メッセージが送信されます。Oracle SALT は、RPC/encoded スタイルで soapenc:arrayType をサポートしません。RPC/encoded スタイルで生成された WSDL ドキュメントのサンプルをコード リスト 3-3 に示します。
コード リスト 3-3 RPC/encoded スタイルで生成された WSDL ドキュメントのサンプル

<wsdl:types>

<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:pack.TuxAll_typedef.salt11">
<xsd:complexType name="fml_TFML_In">
<xsd:sequence>
<xsd:element maxOccurs="60" minOccurs="60" name="tflong" type="xsd:long"></xsd:element>
<xsd:element maxOccurs="80" minOccurs="80" name="tffloat" type="xsd:float"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="fml_TFML_Out">

</xsd:complexType>

</xsd:schema>

</wsdl:types>

回避策 : .Net クライアントには、Microsoft が推奨する Document/literal エンコーディング スタイルを使用します。

ヒント : 3. RPC/encoded スタイルの xsd:base64Binary に関するエラー メッセージ

RPC/encoded スタイルの Oracle SALT の WSDL ドキュメントで xsd:base64Binary を使用する場合は、wsdl.exe でスタブ コードを生成できます。ただし、クライアント プログラムによって次のような実行時エラーが報告されることがあります。

SoapElementAttribute.DataType
プロパティのため System.InvalidOperationException:'base64Binary' は無効な値です。プロパティはプリミティブ型のみに対して指定する場合があります。

回避策 : これは .Net フレームワークの問題です。
.Net クライアントには、Microsoft が推奨する Document/literal エンコーディング スタイルを使用してください。

 


Web サービス クライアントのプログラミング リファレンス

オンライン リファレンス


  ページの先頭       前  次