BEA ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Server > WebLogic Web サービス プログラマーズ ガイド > 相互運用性 |
WebLogic Web サービス プログラマーズ ガイド
|
この章では、Web サービスの相互運用性の概要を説明し、最大限の相互運用性を備えた Web サービス作成に役立つヒントを提供します。
Web サービスの基本的な特徴は、相互運用性があることです。 つまり、ハードウェアやソフトウェアの相違にかかわらず、クライアントから Web サービスを呼び出すことができます。特に、相互運用性が保証されるためには、以下の事項が異なっている場合も Web サービス アプリケーションの機能が同じであることが要求されます。
たとえば、Solaris が搭載された Sun Microsystems のコンピュータで稼働している WebLogic Server で実行されている相互運用性を持つ Web サービスを、Visual Basic で記述された Microsoft .NET の Webサービス クライアントから呼び出すことができます。
最大限の相互運用性を保証するため、WebLogic Server では、Web サービスの生成時に以下の仕様およびバージョンをサポートします。
以下の節では、相互運用性に関して、Web サービス アプリケーションを作成する際に役立つヒントと情報を提供します。
SOAP、WSDL、HTTP などの、Web サービスで使用されている仕様に対するベンダ固有の拡張実装を使用しないでください。このような拡張実装に依存する Web サービスを、それらを使用していないクライアント アプリケーションから呼び出そうとした場合、呼び出しに失敗することがあります。
公開の相互運用性テストにより、Web サービス仕様のさまざまなベンダによる実装間の相互運用性に関する情報が提供されています。 この情報は、WebLogic Server で、たとえば、.NET による Web サービスなど、他のベンダが提供する Web サービスとの相互運用性を要件とする Web サービスを作成する場合に役立ちます。
警告: BEA もこうした相互運用性テストに参加しています。ただし、テストに参加する他のプラットフォームへの BEA Web サービスの実装を BEA が公式に保証しているわけではありません。
次の Web サイトに、公開相互運用性テスト結果が掲載されています。
また、これらの Web サイトにリストされているベンダ実装を使用して、作成した Web サービスの相互運用性を徹底的にテストすることもできます。
Web サービスの効果的な利用法は、既存アプリケーションの統合に役立つクロスプラットフォーム技術の提供です。 これらのアプリケーションは、データ モデルが大きく異なっているため、作成した Web サービスを調整しなければならない場合が一般的です。
たとえば、ある大企業の 2 つの会計システムを統合する Web サービス アプリケーションを作成しているとします。 各会計システムのデータ モデルは類似していても、データ フィールドの名前、各顧客について保存される情報量など、多少の相違は存在します。各データ モデルを理解した上で、両者を調和させる中間的なデータ モデルを作成することはプログラマの力量にかかっています。この中間的なデータ モデルは、XML スキーマを使用して XML で表現されます。 ただ 1 つのデータ モデルに基づいて作成された Web サービス アプリケーションは、他のアプリケーションとの相互運用性が不十分となることが想像されます。
Web サービス オペレーションのパラメータと戻り値のデータ型は、Web サービスの相互運用性を大きく左右します。次の表は、さまざまなデータ型の相互運用性の説明です。
JAX-RPC 仕様では、XML スキーマの組み込みデータ型のサブセットを定義している。これらのデータ型はすべて、SOAP-ENC データ型に直接マップされるので、相互運用性がある。 |
|
WebLogic Server は、XML スキーマのすべての組み込みデータ型をサポートする。これらのデータ型はすべて、SOAP-ENC データ型に直接マップされるので、相互運用性がある。 WebLogic Server の組み込みデータ型の完全なリストは、組み込みデータ型の使用法参照。 |
|
非組み込みデータ型の Web サービスを作成する場合は、データの XML 表現を記述する XML スキーマ、Java 表現を記述する Java クラス、XML 表現と Java 表現間でデータを変換するシリアライゼーション クラスを作成する必要がある。WebLogic Server には、これらのオブジェクトを自動的に生成する servicegen Ant タスクおよび autotype Ant タスクが組み込まれている。ただし、これらの Ant タスクが生成した XML スキーマの相互運用性が不十分な場合があり、また、Java データ型があまりにも複雑なものであった場合は、XML スキーマの作成に失敗するおそれもある。このような理由で、非組み込みデータ型の使用法で説明するように、非組み込みデータ型が必要とするオブジェクトを手動で作成しなければならない場合がある。 さらに、Web サービスを呼び出すクライアント アプリケーションに、XML 表現とそのクライアントアプリケーションのプログラミング言語固有の表現間のデータ変換に必要なシリアライゼーション クラスが組み込まれていることを保証する必要がある。WebLogic Server では、Web クライアント アプリケーションが必要とするシリアライゼーション クラスを、clientgen Ant タスクを使用して生成することができる。ただし、作成した Web サービスを呼び出すクライアント アプリケーションが Java 以外の言語で記述されている場合は、シリアライゼーション クラスを手動で作成する必要がある。 |
SOAPBuilders Interoperability Lab Round 3 テストの結果
SOAPBuilders Interoperability Lab Round 3 テストに WebLogic Web サービスが参加した結果については、http://webservice.bea.com:7001 を参照してください。このテストは、バージョン 7.0.0.1 の WebLogic Server を使用して実行されました。
テストの結果については http://webservice.bea.com/index.html#qz41 を、テストのソース コードについては http://webservice.bea.com/index.html#qz40 を参照してください。
SOAPBuilder Interoperability テストの詳細については、http://www.whitemesa.net. を参照してください。
警告: BEA もこうした相互運用性テストに参加しています。ただし、テストに参加する他のプラットフォームへの BEA Web サービスの実装を BEA が公式に保証しているわけではありません。
WebLogic Web サービスは、.NET Web サービスとシームレスに統合されます。
.NET Web サービスは、WebLogic Web サービスのクライアント アプリケーションから第 8 章「Invoking Web Services」で説明されているとおりに呼び出します。 clientgen Ant タスクを実行して Web サービス固有のクライアント JAR ファイルを生成する場合は、wsdl 属性を使用して、デプロイされている .NET Web サービスの WSDL の URL を指定します。
.NET クライアント アプリケーションから、デプロイされている WebLogic Web サービスを呼び出すには、Microsoft Visual Studio .NET を使用してアプリケーションを作成し、次に以下の例に従って Web 参照を追加して、デプロイされている WebLogic Web サービスの WSDL を指定します。 Microsoft Visual Studio では、Web 参照の追加は、WebLogic clientgen Ant タスクの実行と同じです。
警告: 次の例は、WebLogic Web サービスを .NET クライアント アプリケーションから呼び出すための 1 つの方法を示したものです。 Microsoft Visual Studio .NET を使用して WebLogic (および他の) Web サービスを呼び出す方法に関する最新情報と詳細情報については、Microsoft のドキュメント を参照してください。
デプロイされている WebLogic Web サービスの WSDL を取得する方法の詳細については、WebLogic Web サービスのホーム ページおよび WSDL の URLを参照してください。
WebReference1.SoapInteropBaseService s = new SoapInteropBaseService();
string s = s.echoString("Hi there!");
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |