第7章
Webサービスは、ソース言語、オペレーティングシステム、またはアプリケーション機能の作成に使用されるハードウェアに関係なく、ビジネス間でアプリケーション機能を共有できるようにします。Webサービスでは、「標準のインターネットプロトコル」および「XMLベースのメッセージング」を使用してコンポーネント間での通信を可能にすることによって、実装における非互換性を解決します。
この章では、Webサービス技術の概要について紹介し、Webサービスの開発および使用に対するNovell exteNd Director 開発環境サポートについても説明します。トピックは次のとおりです。
Webサービスは、標準化されたXMLベースのメッセージングプロトコルであるSOAP (Simple Object Access Protocol)を使用してWeb上でアプリケーション機能にアクセス可能な、モジュラーソフトウェアコンポーネントです。
アプリケーションでは、「HTTP要求および応答」に埋め込まれた「SOAPメッセージ」を使用してプロシージャコールおよび応答が処理される点以外はリモートプロシージャコールのようなWebサービスを呼び出します。つまり、アプリケーションでは、HTTP要求に埋め込まれたSOAPメッセージを、Webサービスに関連付けられているWebの場所に送信することによって、そのサービスを呼び出します。Webサービスでは、そのメッセージに対するアプリケーションロジックを実行した後、HTTP応答に埋め込まれた別のSOAPメッセージの形式でアプリケーション出力を返します。
SOAPメッセージの詳細については、www.w3.org/TR/SOAPを参照してください。
Webサービスアーキテクチャは、通常Webサービスのプロバイダ、コンシューマ、およびレジストリで構成されます。
Webサービス「プロバイダ」は、Webサービスを作成してホストする組織です。一般的に、プロバイダは、組織に関する情報や、Webサービスレジストリで提供されるサービスに関する情報を発行します。Webサービスレジストリは、組織のメンバーや他のビジネスが照会することが可能です。
Webサービス「コンシューマ」は、(通常は、Webサービスレジストリを照会して) Webサービスを検索した後、プロバイダとの接続を確立することによってサービスを実行します。これは、Webサービスとの「バインド」と呼ばれます。
Webサービスの「レジストリ」は、プログラム的な発行インタフェースおよび照会インタフェースによって、プロバイダおよびコンシューマが簡単にアクセスできるビジネス情報やサービス情報の集合です。
Webサービスプロバイダは、次の内容を実行します。
プロバイダは、Webアプリケーションサーバを通常は使用して、アプリケーションロジックコンポーネントを作成し、ネットワークアクセス可能な場所に展開します。このようなロジックコンポーネントをWebサービス内に作成するために、プロバイダは、明確に定義されたSOAPメッセージを含むHTTP要求で適切なWebサービス機能を呼び出すことを可能にする「SOAPメッセージ処理インタフェース」を作成して展開します。
HTTP要求に埋め込まれたSOAPメッセージを送信することにより、コンシューマアプリケーションにサービスへのアクセスが提供されると、プロバイダは、アプリケーションロジックを実行して、HTTP応答に埋め込まれた別のSOAPメッセージにアプリケーション出力を返します。たとえば次のように使います。
Webサービスに関する情報を標準の形式で指定するために、プロバイダは、Webサービスの特徴を説明したWSDL (Web Services Description Language)ドキュメントを作成します。WSDLは、次の要素を使用してWebサービスを説明するXMLベースの形式です。
要素 |
含まれる定義 |
---|---|
タイプ |
メッセージコンテンツ内で指定されるデータタイプ |
メッセージ |
メッセージのデータ形式 |
ポートタイプ |
エンドポイントのタイプおよびサポートされている操作 |
バインド |
特定のポートタイプに対するメッセージ形式およびプロトコル詳細 |
ポート |
各エンドポイントのネットワークアドレス |
サービス |
関連するエンドポイントのグループ |
WSDLでは、「エンドポイント」によって、ネットワークアドレスだけでなく、そのアドレスで交換されるメッセージのプロトコルおよびデータ形式も指定されます。
WSDL仕様の柔軟性を考えると、WSDLドキュメントの情報は複雑になる場合があります。より簡単に理解するために、WSDLドキュメントは、本質的にWebサービスのインタフェースおよびポートの場所を指定するものであると見なすことができます。
WSDLの詳細については、www.w3.org/TR/wsdlを参照してください。
Webサービスを作成して展開すると、プロバイダは、1つまたは複数のレジストリでサービスやプロバイダ組織に関する情報を発行できます。この結果、将来のコンシューマは、使用可能なサービスを検索して、その使用方法について理解することができるようになります。
詳細については、Webサービスレジストリの使用を参照してください。
Webサービス情報を発行する別の方法は、Webページ、電子メール、個人通信などを使用して特定のコンシューマに情報を直接提供することです。これは、「直接発行」と呼ばれます。
Webサービスコンシューマは、Webサービスを使用するアプリケーションを作成します。通常、コンシューマは、Webサービスレジストリを照会することによって適切なWebサービスを検索します(Webサービスレジストリの使用を参照)。
提供されたWSDL情報から、コンシューマは、Webサービスの使用に必要な「SOAPメッセージ処理コード」を作成できます。コンシューマアプリケーションによってWebサービスが呼び出されると、SOAPメッセージ処理コードは、次のようにサービスに「バインド」されます。
適切なWebサービスアプリケーションロジックを呼び出すようにプロバイダに通知する、HTTP要求に埋め込まれたSOAPメッセージを作成および送信する
HTTP応答にSOAPメッセージが含まれる場合は、メッセージを(コンシューマアプリケーションで認識できるデータ形式に)変換してから、そのデータをアプリケーションに返す
コンシューマアプリケーションでは、これはリモートメソッドの呼び出しに類似しています。ただし、アプリケーションコードとWebサービスの間での通信には、標準のHTTP要求および応答に埋め込まれたSOAPメッセージが使用されます。たとえば次のように使います。
Webサービスレジストリは、ネットワーク上でプログラム的にアクセスできるWebサービス情報のリポジトリです。プロバイダおよびコンシューマの両方がWebサービスレジストリを使用できます。
コンシューマは、レジストリを照会して独自のニーズに合ったサービスやビジネスを検索し、このようなサービスに関するプロバイダ提供の情報(サービスにアクセスする場所や方法、WSDL表現など)を取得できます。
レジストリには、次のような情報を含めることができます。
レジストリには、ビジネスやサービスに関する情報が、UDDI (Universal Description, Discovery and Integration)またはebXML (Electronic Business XML)などの標準化されたXMLベースの形式で保存されます。レジストリをホストしているビジネスは通常、レジストリに発行してレジストリを照会するためのWebページ、GUI、またはプログラム的なインタフェースを提供します(その結果、プロバイダおよびコンシューマは、内部レジストリ実装に関する詳細を把握する必要がなくなります)。
UDDIの詳細については、www.uddi.orgを参照してください。ebXMLの詳細については、www.ebxml.orgを参照してください。
ビジネスでは、パブリックレジストリまたはローカルレジストリを使用します。
「パブリックレジストリ」は、一般的にWeb上で誰でも見ることができ、多数の企業やサービスに関する情報が含まれています。発行および照会に対しては、異なるレベルの認証および認証セキュリティが実装されている場合があります。
「ローカルレジストリ」は、ローカルネットワークアクセスに制限されている可能性があります。このような場合、ビジネスでは、Webサービスを組織外のコンシューマに公開せずに内部で共有できます。
特定のWebサービス技術の詳細について参照できるWebサイトは、次のとおりです。
トピック |
サイト |
---|---|
SOAP |
|
HTTP |
|
WSDL |
|
UDDI |
|
ebXML |
基盤となるWebサービス技術(SOAP、WSDL、UDDI、ebXMLなど)について理解しておくことは重要ですが、そのようなレベルでのアプリケーションを開発は、たいていの場合効率的ではありません。そのため、これらの技術を一般的な構成要素にまとめることによって使いやすくなるように、より高いレベルでの実装が提供されています。実装には、次のものが含まれます。
J2EE Java 2 Enterprise Editionでは、JAX-RPC (Java API for XML-based RPC)仕様によるWebサービスサポートが提供されています。
.NET Microsoftでは、.NETプラットフォームによるWebサービスサポートが提供されています。
たとえば、J2EEに精通したプログラマは、JAX-RPC実装を使用して、さらに簡単にWebサービスを開発したり、Webサービスにアクセスしたりできます。 SOAPについて熟知したり、手動でSOAPメッセージを処理する必要はありません。
Webサービスは、適切に設計および作成された場合、異なる実装間で「相互運用が可能」になります。たとえば、JAX-RPCクライアントでは.NET Webサービスにアクセスでき、.NETクライアントではJAX-RPC Webサービスにアクセスできるようになります。
exteNd Director 開発環境には、JAX-RPC標準に準拠したWebサービスを作成、展開、保守するためのツールがあります。すなわち、WebサービスはJ2EE Webアーカイブ(WAR)の形にアーカイブ化し、J2EEサーバに展開できます。また、JAX-RPCに準拠した、JavaベースのWebサービスコンシューマも開発できます。
WebサービスおよびWebサービスコンシューマを実装できるようにするために、開発環境では次のようなコア機能が備えられています。
機能 |
説明 |
---|---|
JAX-RPCに基づくコンパイラおよびSOAPランタイムを含む、exteNd Webサービスサポートのコア技術 |
|
WebサービスSDKコンパイラを呼び出して、WebサービスやWebサービスコンシューマに対してJavaクラスおよびWSDLファイルを生成できるようにするツール |
|
Webサービスレジストリを照会および発行するためのツール |
|
WSDLファイルを作成および編集するためのツール |
exteNd Directorには、Webサービスの長所を充分に活かしたアプリケーションを容易に開発できるよう、上記以外にも高度な機能が組み込まれています。
上記以外のexteNd DirectorのWebサービス機能については、『Pageflow and Form Guide』を参照してください。
Novell exteNd WebサービスSDKは、Webサービスのプロバイダアプリケーションおよびコンシューマアプリケーションを開発して実行するための「コンパイラ」および「ランタイム環境」を含むJAX-RPC実装です。
Webサービスウィザードでは、WebサービスSDKコンパイラを使用して、Webサービスコンポーネント(スケルトン、結合、スタブ)およびWSDLファイルを作成します。開発者は、これらのコンパイラをコマンドラインから個別に呼び出すこともできます。
プロバイダとコンシューマは、必要なランタイム環境を提供するために、両方とも、アプリケーションでwssdk.jar(および一部のサポートJAR)を展開します。これには、スタブコンポーネントおよびスケルトンコンポーネントがSOAPメッセージをコンシューマアプリケーションとプロバイダアプリケーション間で渡される際に実行されるSOAPエンジンが含まれます。
詳細については、Web Services SDKヘルプを参照してください。
Webサービスウィザードを使用すると、JavaクラスまたはWSDLファイルからWebサービスコンポーネントを作成できます。Webサービスウィザードでは、オブジェクトにアクセスするための「リモートインタフェース」だけでなく、コンシューマアプリケーションとWebサービス間でのSOAPメッセージ通信を処理する「スケルトン」Javaクラス、「結合」Javaクラス、および「スタブ」Javaクラスも生成します。生成されたコードは、JAX-RPCに基づきます。
プロバイダは、WAR (Web Archive)としてWebサービスを展開します。WARでは、スケルトンクラスおよび結合クラスによって、着信SOAPメッセージを処理する「サーブレット」が実装されます。コンシューマアプリケーションでは、SOAPメッセージをサーバに送信するスタブクラスのメソッドを呼び出すことによって、Webサービス機能にアクセスします。
詳細については、次を参照してください。
レジストリマネージャは、プロバイダがWebサービスレジストリに発行できるようにし、コンシューマが、Webサービスレジストリを照会できるようにします。
WSDLウィザードを使用すると、プロバイダは新しいWSDLドキュメントを作成できます。また、WSDLエディタを使用すると、プロバイダは既存のWSDLドキュメントを編集して使用できます。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...