Webサービスとは、一連のメッセージ・プロトコルとプログラミング標準で構成されたテクノロジを表す用語です。Webサービスは、XMLベースのオープン標準を使用して、インターネット上でビジネス機能を公開します。 個々のWebサービスは、再利用可能な独立したソフトウェア・コンポーネントです。Webサービスは、HTTP/HTTPSを使用してプログラムによってインターネット上でアクセスされますが、JMSやSMTPなどの他のプロトコルを使用してWebサービスを起動し、レスポンスを戻すこともできます。
Webサービスを使用すると、企業は、元のアプリケーションのプラットフォームや言語に関係なくビジネス機能を公開できます。これは、ビジネス機能が、他のアプリケーションで認識および使用可能な標準XMLコンストラクトで構成されるメッセージに抽出されて公開されるためです。
Webサービスは、簡単に統合および再利用できるモジュール型ビジネス・サービスであるため、サービス指向アーキテクチャ(SOA)内のコンポーネントとして最適です。 OracleAS SOAは、トップダウンおよびボトムアップでのWebサービスの作成、または既存機能からのWebサービスの作成を支援します。 Webサービスは、JDeveloperを使用して作成できます。あるいは、Antを使用したり、Oracle SOA Suiteと他のツールを統合して作成することもできます。 この章では、SOA Suiteの一部としてJDeveloperを使用してWebサービスを開発および使用する方法について説明します。
JDeveloperには、J2EE 1.4準拠のWebサービスを開発するための、JAX-RPCクライアントおよびサービスの作成機能を備えたウィザードやその他のツールが用意されています。 さらに、JDeveloperでは、Webサービス・メタデータ・タグの注釈が実装クラスに自動的に生成されます(JSR-181準拠の場合)。 次の定義に対するサポートがあります。
カスタム・ハンドラ。
シリアライザとデシリアライザ。
MIME/DIMEタイプの添付ファイル。
WS-Security。SSO Webサービス・アプリケーションの開発用のSAMLなどのセキュリティを設定します。
WS-Reliability。サービスの品質を設定します。
WS-Management。ロギング・プロパティを設定します。
WSIFバインディング。Java、EJB、Java Message Service(JMS)、およびJava Connector Architecture(JCA)アダプタを介して接続されるエンタープライズ・アプリケーションを公開できます。
REST(REpresentational State Transfer)ベースのサービス。
Webサービスは、SOAアプリケーションに組み込むことができます。 WebサービスはBPELプロセス(オーケストレーション)にリンクされ(第7章「Oracle BPEL Process Managerの使用」を参照)、ESBによって、該当するアプリケーションと統合されます(第6章「Oracle Enterprise Service Busの使用」を参照)。 Webサービス・セキュリティは、OWSM(第10章「システムの保護」を参照)を使用して定義されます。
JDeveloperを使用してWebサービスを作成、テストおよびデプロイする方法、あるいはアプリケーションの既存のWebサービスを使用する方法について説明する前に、WebサービスのベースとなるXML標準について説明します。
Simple Object Access Protocol(SOAP)は、トランスポート・プロトコル(通常はHTTPまたはSMTP)を介してメッセージを送受信する際に使用するXMLベースのプロトコルです。 SOAP仕様では、リクエストおよびレスポンスの標準的なエンコーディング方法が定められています。SOAP仕様は、World Wide Web ConsortiumのWebサイト(www.w3c.org/TR/SOAP
)で参照できます。 この仕様には、XMLスキーマを使用したメッセージ・ペイロードの構造およびデータ型が記載されています。
SOAPメッセージは、次のコンポーネントで構成されています。
SOAPエンベロープ。次の要素で構成されます。
SOAPヘッダー(オプション)。セキュリティ、信頼性などに使用される動作情報が含まれます。
SOAPボディ。クライアントとサーバー間で交換されるメッセージが含まれます。
プロトコル・バインディング。SOAPエンベロープの送信方法が指定されます。 JDeveloperでは、HTTPを使用するWebサービスを作成し、WSIFバインディングを生成することもできます。
WebサービスはSOAPを使用して作成されます。SOAPは、データをXMLで表現し、HTTPを使用してインターネット間で転送するためのXMLプロトコルです。SOAPを使用すると、複数の方法でデータをXMLに変換したり、元に戻すことができます。 JDeveloperでは、SOAP RPCエンコーディング、SOAP RPCリテラル形式およびドキュメント・リテラル形式(メッセージ形式とも呼ばれます)がサポートされています。
JDeveloperでは、JAX-RPCを使用する標準のJ2EE 1.4プラットフォーム・サービスが作成されます。
Web Services Description Language(WSDL)は、Webサービスのインタフェースとその位置の構文を記述するために使用するXML言語です。 各Webサービスには、WSDLドキュメントがあります。WSDLドキュメントには、サービスの位置、名前、およびWebサービスが公開するメソッドに関する情報など、そのサービスを使用する際に必要なすべての情報が含まれています。 また、WSDLは、トップダウンWebサービスの起点としても使用できます。
JDeveloperのWebサービス公開のためのウィザードのいずれかを使用してWebサービスを作成すると、そのサービス用のWSDLドキュメントが自動的に生成されます。
図5-1に、JDeveloperでRapidService Webサービス用に生成されたWSDLドキュメントの一部を示します。 これは、WSDLドキュメントのXML構造を示しています。
図5-2に示すように、WSDLは、設計ビューに表示して編集することもできます。
図5-2 JDeveloperのWSDLエディタに表示されたRapidService.wsdl
Webサービスは、「Services」、「Bindings」、「Port Types」、「Messages」の各ヘッダーの下に表示されます。 「ビューの切替え」をクリックすると、これらのヘッダーの順序を逆にできます。
Universal Description, Discovery, and Integration(UDDIレジストリ)では、Webサービスを名前または産業カテゴリで検索するための標準ベースの方法が提供されます。 UDDIレジストリは、パブリックまたはプライベートにできます。たとえば、企業内で使用されるプライベートUDDIレジストリがあります。
Oracle SOA Suiteの一部であるOracle Service Registryでは、企業全体でWebサービスおよび関連するリソースを公開、分類および検出できるように、UDDIバージョン3準拠のプラットフォームが提供されます。 UDDIレジストリを使用すると、次のことができます。
サービス・プロバイダは、提供サービスを公開および広告できます。
サービス・コンシューマは、定義済の基準を満たすサービスを検索してアクセスしたり、起動することができます。
Oracle Service Registryは、BPEL Process Manager、Oracle Web Services ManagerおよびJDeveloperと、それぞれの製品の相互運用可能なUDDIブラウザを介して統合されています。
JDeveloperの接続ナビゲータにあるUDDIブラウザには、UDDIレジストリに関する情報が格納されます。このブラウザで、指定した検索条件を使用してUDDIレジストリを検索し、WSDLで記述されたWebサービスを検出できます。 JDeveloperには、XMethodsパブリックUDDIレジストリへの事前構成済の接続が用意されています。また、パブリックまたはプライベートのUDDIレジストリへの独自のレジストリ接続を作成することもできます。 照会エンドポイントとレジストリのビジネス・キーが含まれた接続ディスクリプタのプロパティ・ファイルは、<jdev_install>/system<release_and_build_number>
/uddiconnections.xml
で参照できます。<jdev_install>
は、JDeveloperがインストールされているルート・ディレクトリを表します。
注意: JDeveloperで、事前構成済のUDDIレジストリに接続したり、別の外部のUDDIレジストリに接続する際に問題がある場合、あるいはファイアウォールの内側にいる場合は、Webアプリケーションを実行またはWebサービスにアクセスするときに、JDeveloperが使用しているプロキシ・サーバー設定を確認してください。 JDeveloperで、「ツール」→「設定」→「Webブラウザとプロキシ」の順に選択します。 このダイアログで、プロキシ設定を入力または変更します。 詳細は、このダイアログの「ヘルプ」をクリックしてください。 |
JDeveloperのWebサービスの検索ウィザードでは、UDDIレジストリを参照して、Webサービスを名前またはカテゴリで検索します。 選択したUDDIレジストリへの接続(例: パブリックUDDIレジストリを検索する場合はインターネットへの接続)がJDeveloperで確立できるように、使用しているマシンからの接続を適切に設定する必要があります。プロキシを生成できるのは、「WSDLかどうか」列が選択されているWebサービスに対してのみです。この列によって、WSDLドキュメントで定義されているとおりに、レジストリ・エントリが識別されます。
図5-3に、Webサービスの検索ウィザードを使用してXMethods UDDIレジストリで検出されたWebサービスのレポートを示します。
この図は、UDDIで使用される次のデータ構造タイプを示しています。
サービスの詳細: このセクションでは、サービス名など、サービスに関する情報が示されます。
ビジネス・エンティティ: businessEntity
という最上位レベルのデータ構造で、Webサービスを提供するビジネスに関する情報が含まれています。
サービス・バインディング: サービスのアクセス・ポイントに関する情報を格納するbindingTemplate
と、Webサービスの技術仕様を提供するtModel
が含まれています。