UDDI と WSDL の関係

Universal Description, Discovery, and Integration (UDDI) 仕様は、 Web サービスに関する情報を公開し、発見する方法を定義します。 UDDI には次の 2 つの機能があります。(1) UDDI クライアントがレジストリーと通信する方法を定義する SOAP ベースのプロトコルとしての機能。(2) グローバルに複製されたレジストリーの特定のセットとしての機能。

サービスの登録には、4 つのコア・データ構造型が含まれます。

UDDI データ型について詳しくは、このトピックの終わりの関連するリファレンス・トピックを参照してください。

Web サービス記述言語 (WSDL) は、Web サービスを記述するための XML ベースの標準の仕様です。 WSDL は、文書中心、プロシージャー中心のいずれかの情報を含むメッセージに影響する一連のエンドポイントとして、ネットワーク・サービスを記述するために XML 形式を定義します。

WSDL サービス記述は、多くの方法で構造化できます。ただし、UDDI レジストリーで WSDL サービス記述の公開および検索に役立つために、WSDL 文書は 2 つの主要なパートで構成されます。

Apache Axis ランタイム環境で Web サービスを作成すると、Java™ Bean または EJB から Web サービスを生成するとき、Web サービス・ツールは単一の WSDL 文書を作成します。この WSDL 文書はサービス・インターフェースと実装文書の両方を含んでいます。

サービス・インターフェースはタイプ、インポート、メッセージ、portType、およびバインディング要素を含む WSDL 文書によって記述されます。サービス・インターフェースは 1 つ以上のサービスを実行するために使用される WSDL サービス定義を含んでいます。この定義は、Web サービスの抽象定義であり、特定のタイプのサービスを記述するのに使用されます。この文書はインポート要素を使用する、別のサービス・インターフェース文書を参照することができます。この製品の Web サービス・ツールは、メッセージのみを含むサービス・インターフェース文書および portType のバインディングのみを含むバインディング文書によって参照される portType 要素を生成します。

サービス実装文書はサービス要素を含んでいます。サービス実装文書は、サービス・インターフェースを実行するサービスの記述を含んでいます。インポート要素のうちの少なくとも 1 つは、WSDL サービス・インターフェース文書への参照を含みます。ただし、Axis ランタイム環境を使用して作成されたようなモノリシック WSDL にはインポートがありません。 サービス実装文書は、複数のサービス・インターフェース文書への参照を含むことができます。

サービス・プロバイダーは、SOAP/HTTP や SOAP/JMS などのプロトコルを使用して Web サービスをホストして、それをアクセスしやすくします。 Web サービスはプロバイダーのサーバーまたは特別なリポジトリーで保管される WSDL 文書によって記述されます。 WSDL 文書は UDDI ビジネス・サービス (サービス文書) および tModels (バインディング文書) によって参照されます。これらのポインターによって、サービス・リクエスターによる Web サービスの発見が可能になります。

図 1. UDDI と WSDL との関係。

UDDI と WSDL の関係の図。

図 1 は UDDI と WSDL の関係を示します。WSDL サービス要素は WSDL バインディング要素を参照します。 WSDL バインディング要素を含む文書の URL は tModel として UDDI ビジネス・レジストリーに公開されます。 WSDL サービス要素を含む文書の URL は businessService として UDDI ビジネス・レジストリーに公開され、bindingTemplate に関する情報を含んでいます。 UDDI レジストリー・データ構造型について詳しくは、この文書の終わりにある関連する参照セクションを参照してください。 ランタイム環境によっては、図のインポート部分がオプションであることに注意してください。Axis ランタイム環境を使用して作成されたようなモノリシック WSDL にはインポートがありません。

サービス実装はサービスのインスタンスを述します。インスタンスは、WSDL サービス要素を使用して定義されます。サービス実装文書のサービス要素は、UDDI businessService を公開するために使用されます。 WSDL サービス記述を公開するとき、サービス実装を businessService として公開する前に、tModel としてサービス・インターフェースを公開する必要があります。

サービス実装は、1 つ以上の bindingTemplate 要素を持つ businessService の一部として UDDI レジストリーに公開されます。 businessService はサービス・プロバイダーによって公開されます。新規の businessService は、サービス実装文書で定義されるサービス要素用に作成されます。新規の bindingTemplate 要素はサービス要素の中で定義されるそれぞれのポート要素用に businessService 内で作成されます。

WSDL と UDDI の関係について詳しくは、 uddi.org/bestpractices.html を参照してください。