|
Oracle SALT はコンフィグレーションに基づく製品で、既存の Tuxedo アプリケーション サービスを業界標準の Web サービスとして公開します。Web サービスのクライアントサイドのプログラミングの観点から見ると、Oracle Tuxedo フレームワークと連携する Oracle SALT は標準の Web サービス プロバイダです。Web サービス クライアント プログラムを作成するには、Oracle SALT の WSDL ファイルのみ使用する必要があります。
Web サービス クライアント プログラムを作成するには、次の手順に従います。
この節では、Oracle SALT でテスト済みの次のプログラミング ツールキットを使用した Web サービス クライアント プログラムの開発に役立つヒントを示します。
詳細については、『管理ガイド』の「相互運用性に関する考慮事項」を参照してください。
| 注意 : | どの SOAP ツールキットでもクライアント ソフトウェアを開発できます。 |
| 注意 : | ここで説明するツールキットのサンプル ディレクトリは、Oracle SALT のインストール後に確認できます。 |
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=wlstmwsdlgen ユーティリティ : tmwsdlgen -c WSDF_FILE -m raw -t wls |
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=axistmwsdlgen ユーティリティ : tmwsdlgen -c WSDF_FILE -m raw -t axis |
| ヒント : | 2. RPC/encoded スタイルを使用する場合は、AXIS でマルチリファレンス形式を無効にします。 AXIS では、WSDL ドキュメントに RPC/encoded スタイルが指定されている場合は、マルチリファレンス形式の SOAP メッセージが送信されることがあります。ただし、Oracle SALT はマルチリファレンス形式をサポートしていません。AXIS のマルチリファレンス形式を無効にするには、コード リスト 3-1 の手順に従います。 |
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 に示します。 |
/* サービスを呼び出す。*/
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 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 に示します。 |
<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">
…
回避策 : .Net クライアントには、Microsoft が推奨する Document/literal エンコーディング スタイルを使用します。
| ヒント : | 3. RPC/encoded スタイルの xsd:base64Binary に関するエラー メッセージ RPC/encoded スタイルの Oracle SALT の WSDL ドキュメントで xsd:base64Binary を使用する場合は、wsdl.exe でスタブ コードを生成できます。ただし、クライアント プログラムによって次のような実行時エラーが報告されることがあります。 プロパティのため System.InvalidOperationException:'base64Binary' は無効な値です。プロパティはプリミティブ型のみに対して指定する場合があります。 |
回避策 : これは .Net フレームワークの問題です。
.Net クライアントには、Microsoft が推奨する Document/literal エンコーディング スタイルを使用してください。
スタンドアロン クライアントからの Web サービスの呼び出し : 主な手順
Consuming Web Services with Axis
|