ORACLE JAPAN Server Release 6.1

 

  |  

  WebLogic Server ホーム   |     Web サービス   |   前へ   |   次へ   |   目次   |   索引   |   PDF 版

WebLogic Web サービスの概要

 

この章では、Web サービスの概要と WebLogic Server に実装する方法について説明します。

 


Web サービス

Web サービスは、分散型 Web ベース アプリケーションのコンポーネントとして共有および使用されるサービスのタイプです。これらのサービスは一般的に、CRM(又はカスタマ リレーションシップ マネージメント)、注文処理システムなどの既存のバックエンド アプリケーションとインタフェースします。

従来、ソフトウェア アプリケーション アーキテクチャは、メインフレーム上で実行する巨大なモノリシック システムまたはデスクトップ上で実行するクライアント アプリケーションの 2 つのカテゴリに分けられていました。これらのアーキテクチャはアプリケーションが扱うことを意図している目的においては効率よく機能しますが、外部に対して閉鎖的で、Web の多様なユーザが簡単にアクセスすることができません。

ソフトウェア業界は、Web 上で動的に対話する疎結合なサービス指向アプリケーションの方向に向かっています。このアプリケーションは、大規模なソフトウェア システムを小規模なモジュラー コンポーネントまたは共有サービスに分割します。これらのサービスは別々のコンピュータ上に常駐することができ、多様なテクノロジを使用して実装できますが、XML や HTTP などの標準の Web プロトコルを使用してパッケージ化され転送されます。そのため、Web 上のすべてのユーザが簡単にアクセスできるようになります。

サービスの概念は新しいものではありません。RMI、COM、および CORBA は、すべてサービス指向テクノロジです。ただし、これらのテクノロジをベースにしたアプリケーションは、特定のベンダの特定のテクノロジを使用して記述されていることが要求されます。この要件は、一般的に Web 上のアプリケーションが広く受け入れられることの妨げになります。この問題を解決するために、Web サービスが異種環境から簡単にアクセスできるようにするための次の特性を共有するように定義されています。

 


Web サービスを使用する理由

Web サービスを使用する主な理由は、以下の利点が得られることです。

Web サービスは、XML や HTTP などの標準の Web プロトコルを使用してアクセスされるので、Web 上の多様な異種アプリケーション(一般的に XML および HTTP を理解する)は自動的に Web サービスにアクセスでき、異なるシステム間での通信の問題を解決します。

これらの異なるシステムには Microsoft SOAP ToolKit クライアント、J2EE アプリケーション、レガシー アプリケーションなどがあります。これらのシステムは、Java、C++、Perl などのさまざまな言語で記述されています。この機能を提供するアプリケーションが Web サービスとしてパッケージ化されている限り、それぞれのシステムは相互に通信できます。

 


Web サービス コンポーネント

Web サービスは、次のコンポーネントで構成されています。

添付ファイル付き SOAP 1.1

SOAP(Simple Object Access Protocol)は、分散型環境で情報を交換するために使用する軽量 XML ベースのプロトコルです。プロトコルの構成は次のとおりです。

この情報は、HTTP またはその他の Web プロトコル上で転送可能な Multipurpose Internet Mail Extensions(MIME)エンコード パッケージ内に埋め込まれています。MIME は、非 ASCII メッセージをインターネット上で送信できるようにフォーマットするための仕様です。

次の例は、HTTP リクエスト内に埋め込まれている株取引情報用の SOAP リクエストを示しています。

POST /StockQuote HTTP/1.1
Host: www.sample.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastStockQuote xmlns:m="Some-URI">
<symbol>BEAS</symbol>
</m:GetLastStockQuote>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

WSDL 1.1

Web Services Description Language(WDSL)は、Web サービスを記述するために使用される XML ベースの仕様です。WSDL ドキュメントは Web サービスによって提供されるメソッド、入力および出力パラメータ、および接続方法を記述します。

WebLogic Web サービスの開発者は、WSDL ファイルを作成する必要はありません。これらのファイルは WebLogic Web サービス開発プロセスの一部として自動的に生成されます。

次の例は参照用で GetLastStockQuote メソッドを含む株取引 Web サービス StockQuoteService を記述する WSDL ファイルを示しています。

<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://sample.com/stockquote.wsdl"
xmlns:tns="http://sample.com/stockquote.wsdl"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
xmlns:xsd1="http://sample.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="GetStockPriceInput">
<part name="symbol" element="xsd:string"/>
</message>
<message name="GetStockPriceOutput">
<part name="result" type="xsd:float"/>
</message>
<portType name="StockQuotePortType">
<operation name="GetLastStockQuote">
<input message="tns:GetStockPriceInput"/>
<output message="tns:GetStockPriceOutput"/>
</operation>
</portType>
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastStockQuote">
<soap:operation soapAction="http://sample.com/GetLastStockQuote"/>
<input>
<soap:body use="encoded" namespace="http://sample.com/stockquote"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="http://sample.com/stockquote"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>>
</binding>
<service name="StockQuoteService">
<documentation>My first service</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteSoapBinding">
<soap:address location="http://sample.com/stockquote"/>
</port>
</service>
</definitions>

 


WebLogic Web サービスの機能

この章では、WebLogic Web サービス サブシステムの機能について説明します。

Web サービス プログラミング モデル

プログラミング モデルには、WebLogic Server によってホストされる Web サービスの実装、アセンブル、デプロイ、および呼び出し方法が記述されています。Web サービスの実際の作業を実行するエンタープライズ JavaBean コードは別として、Web サービス自体のほとんどは、Web サービスのコンポーネントを生成してパッケージ化する Java Ant タスク wsgen を使用して開発できます。

WebLogic Server は、リモート プロシージャ呼び出し(RPC)スタイルとメッセージスタイルの 2 種類の Web サービスをサポートします。

RPC スタイル Web サービス

リモート プロシージャ呼び出し(RPC)スタイル Web サービスは、ステートレス セッション EJB を使用して実装されます。これは、クライアント アプリケーションへのリモート オブジェクトになります。

クライアントと RPC スタイル Web サービスとの対話は、サービス固有のインタフェースに集中します。クライアントが Web サービスを起動すると、パラメータ値が Web サービスに送信され、必要なメソッドが実行されて戻り値が送り返されます。クライアントと Web サービス間のこの対話により、RPC スタイル Web サービスは密に結合され、RMI または DCOM などの従来の分散型オブジェクト パラダイムと類似したものになります。

RPC スタイル Web サービスは同期です。つまり、クライアントがリクエストを送信したときは応答があるまで何もしないで待機します。

メッセージスタイル Web サービス

メッセージスタイル Web サービスは、メッセージ駆動型 Bean などの JMS メッセージ リスナを使用して実装され、JMS の送り先と関連付けられている必要があります。

メッセージスタイル Web サービスは疎結合で、サービス固有のインタフェースに関連付けられるのではなく、ドキュメント駆動型です。クライアントがメッセージスタイル Web サービスを起動すると、クライアントでは一般的にディスクリートなパラメータのセットではなく発注書などの全ドキュメントを送信します。Web サービスでは、ドキュメント全体を受け入れて処理し、結果メッセージを返す場合と返さない場合があります。クライアントと Web サービス間のリクエストと応答が密に結合されていないため、メッセージスタイル Web サービスではクライアントとサーバ間の結合が緩やかになります。

メッセージスタイル Web サービスは非同期です。Web サービスを呼び出すクライアントは、応答を待機しません。Web サービスからの応答がある場合は、数時間または数日後に示されることもあります。

クライアントは、メッセージスタイル Web サービスとの間でドキュメントの送信も受信も実行できますが、同じ Web サービスを使用して両方を行うことはできません。

SOAP 1.1 の実装

WebLogic Server には、開発者が Web サービスを呼び出すクライアントを作成するために使用できる独自の SOAP 1.1 および添付ファイル付き SOAP 1.1 仕様実装があります。

RPC スタイル Web サービスでは、SOAP 1.1 メッセージ フォーマットを使用し、メッセージスタイル Web サービスでは、添付ファイル付き SOAP 1.1 メッセージ フォーマットを使用します。

注意: 現在 WebLogic Web サービスでは、添付ファイル付き SOAP メッセージの実際の添付ファイルは無視されます。

Web サービス実行時コンポーネント

WebLogic Web サービス実行時コンポーネントは、Web サービスの作成に必要なサーブレットと関連インフラストラクチャのセットです。実行時の要素の 1 つは、クライアントからの SOAP リクエストを処理するサーブレットのセットです。これらのサーブレットは、WebLogic Server 配布キットに含まれているため、記述する必要はありません。実行時のもう一つの要素は、WebLogic Web サービスのすべてのコンポーネントを生成しアセンブルする Ant タスクです。

標準化 J2EE Web サービス アセンブリおよびデプロイメント

Web サービス開発者は、wsgen という Ant タスクと Administration Console を使用し、Web サービスを標準 J2EE エンタープライズ アプリケーションとして *.ear ファイルにアセンブルおよびデプロイします。*.ear ファイルには、EJB、SOAP サーブレットへの参照、web.xml ファイル、weblogic.xml ファイルなど、Web サービスのすべてのコンポーネントが含まれます。

WSDL ファイルの生成

WebLogic Web サービスを呼び出すクライアントを作成する開発者には、Web サービスを記述する WSDL が必要です。WebLogic Server では、デプロイされた Web サービスの WSDL を自動的に生成します。Web サービスの WSDL には、特別な URL を介してアクセスします。

WebLogic Web サービスを呼び出す Java クライアント

WebLogic Server は、開発者が Web サービスを呼び出す Java クライアントを開発するために使用するシン Java クライアントを自動的に生成できます。Java クライアント JAR ファイルには、Web サービスを呼び出すために必要なすべてのクラスがあります。これらのクラスには、Java クライアント API クラスおよびインタフェース、SOAP リクエストおよび応答を解析するパーサ、EJB への Java インタフェースなどがあります。この Java クライアント JAR ファイルを使用して Web サービスを呼び出すクライアント アプリケーションは、クライアント コンピュータ上に完全な WebLogic Server JAR ファイルを持っている必要はありません。

Java クライアント JAR ファイルは、WebLogic Web サービスのホーム ページからダウンロードできます。この Web ページの詳細については、 WebLogic Web サービスの呼び出し WebLogic Web サービス ホーム ページの呼び出しを参照してください。

注意: BEA では現在、クライアント機能をサーバ機能と別個にはライセンスしていないため、必要な場合には、この Java クライアント JAR ファイルをユーザ自身の顧客に再配布できます。

Web サービスの作成および呼び出し例

WebLogic Server には、RPC スタイル Web サービスおよびメッセージスタイル Web サービスを作成する両方の例と、Web サービスを呼び出す Java および Microsoft VisualBasic クライアント アプリケーションの両方の例があります。

これらの例は、BEA_HOME\samples\examples\webservices ディレクトリにあります。BEA_HOME は、メイン WebLogic Server インストール ディレクトリを指します。RPC スタイル Web サービスの例は rpc ディレクトリにあり、メッセージスタイル Web サービスの例は message ディレクトリにあります。

例を作成して実行する方法の詳細については、ブラウザで Web ページ BEA_HOME\samples\examples\webservices\package-summary.html を呼び出してください。

 


WebLogic Web サービスのアーキテクチャ

WebLogic Web サービスを開発するときは、ステートレス セッション EJB、メッセージ駆動型 Bean、および JMS の送り先などの標準 J2EE コンポーネントを使用します。WebLogic Web サービスは完全に J2EE プラットフォームに基づいているため、簡単で一般的なコンポーネント ベースの開発モデル、優れたスケーラビリティ、トランザクションのサポート、自動ライフサイクル管理、既存のエンタープライズ システムへの J2EE API(JDBC および JTA など)を介した簡単なアクセス、簡単な統一セキュリティ モデルなど、すべての標準 J2EE の利点を自動的に継承します。

WebLogic Server Web サービスは、次の特定のコンポーネントから構成される標準 J2EE エンタープライズ アプリケーションとしてパッケージ化されます。

WebLogic Web サービスは、Web アプリケーションの Web アーカイブ(*.war)ファイルおよび EJB アーカイブ(*.jar)ファイルを含むエンタープライズ アーカイブ(*.ear)ファイルとしてパッケージ化されます。

次の 2 つの節では、RPC スタイルおよびメッセージスタイル Web サービスのアーキテクチャについて説明します。

RPC スタイル WebLogic Web サービス アーキテクチャ

図 1-1 は、RPC スタイル WebLogic Web サービスのアーキテクチャを示しています。

図1-1 RPC スタイル WebLogic Web サービス アーキテクチャ


 

クライアントが RPC スタイル WebLogic Web サービスを呼び出すときの動作を次に示します。

  1. クライアントは HTTP/HTTPS を介して SOAP メッセージを WebLogic Server に送信します。SOAP メッセージには、RPC スタイル Web サービスを呼び出すための Web サービスの WSDL に準拠した指示が含まれます。

  2. SOAP サーブレット(クライアントによって呼び出される Web アプリケーションの一部)は、RPC SOAP リクエストを処理するために設計されており、SOAP メッセージ エンベロープを開き、その情報に従って適切なステートレス セッション EJB ターゲットを識別します。次に、このサーブレットではパラメータのマーシャリングを解除して適切な Java オブジェクトにバインドし、ターゲット ステートレス セッション EJB を呼び出してパラメータに渡します。

    ステートレス セッション EJB では、Web サービスのすべての作業を実行するか、部分的またはすべての作業を他の EJB に分配します。

  3. 呼び出されたステートレス セッション EJB は、戻り値がある場合にはそれを RPC SOAP サーブレットに送信します。

  4. RPC SOAP サーブレットは、戻り値をステートレス セッション EJB から SOAP メッセージにマーシャリングし、HTTP/HTTPS を介してクライアントに戻します。

    エラーが発生した場合、RPC SOAP サーブレットは SOAP エラー メッセージ(SOAP 障害)もクライアントに送信します。

メッセージスタイル WebLogic Web サービス アーキテクチャ

メッセージスタイル Web サービスでは、一方向通信をサポートします。クライアント アプリケーションは Web サービスからドキュメントを受け取るか、または Web サービスにドキュメントを送信しますが、単一メッセージスタイル Web サービスでクライアントが両方を行うことは許可されません。メッセージスタイル Web サービスを開発するときに、クライアントが Web サービスにメッセージを送信するか、または Web サービスからメッセージを受信するかを指定します。送信用と受信用の 2 つのメッセージスタイル Web サービスを結合して双方向通信をサポートすることができます。同じクライアントが両方のタイプ、またはいずれかのタイプのサービスを使用することができます。

図 1-2 は、メッセージスタイル WebLogic Web サービスの両方のスタイルが一緒に機能するアーキテクチャを示しています。

注意: 点線は、2 つの異なるメッセージスタイル Web サービスをカプセル化します。JMS の送り先からメッセージを取り出すのにメッセージ駆動型 Bean を使用する必要はありませんが、一般的には最適な方法です。

図1-2 メッセージスタイル WebLogic Web サービス アーキテクチャ


 

クライアントがメッセージスタイル WebLogic Web サービスを呼び出すときの動作を次に示します。

  1. クライアントは HTTP/HTTPS を介して SOAP メッセージを WebLogic Server に送信します。SOAP メッセージには、メッセージスタイル Web サービスを呼び出すための Web サービスの WSDL に準拠した指示が含まれます。

  2. クライアントによって呼び出される Web アプリケーションの一部であるメッセージング SOAP サーブレットは、SOAP メッセージ エンベロープを開いて、メッセージの本文をデコードし、結果オブジェクトを適切な JMS の送り先に配置します。

    注意: WebLogic Server 6.1 では、添付ファイル付き SOAP 1.1 メッセージの添付ファイルの内容にアクセスすることはサポートしていません。

  3. メッセージは、適切な JMS リスナ(一般的にはメッセージ駆動型 Bean)によって取り出されるまで JMS の送り先に残ります。

  4. メッセージ駆動型 Bean は、メッセージを JMS の送り先から取り出します。メッセージ駆動型 Bean では、Web サービスのすべての作業を実行するか、部分的またはすべての作業を他の EJB に分配します。

  5. メッセージ駆動型 Bean は、クライアントでメッセージを受信するようにコンフィグレーションされた別のメッセージスタイル Web サービスに関連付けられている別の JMS の送り先に、結果ドキュメントを送信します。

  6. 2 番目の Web サービスに関連付けられているメッセージング SOAP サーブレットは、メッセージを JMS の送り先から取り出します。

  7. メッセージング SOAP サーブレットは、クライアントが 2 番目の受信 Web サービスを呼び出したときにドキュメントをクライアントに送り返します。

このサンプル アーキテクチャは、クライアントと情報を送受信するために一緒に機能する 2 つのメッセージスタイル Web サービスを示しています。クライアントは、2 つのメッセージスタイル Web サービスを呼び出す必要があります。

 


WebLogic Web サービスでサポートされていない SOAP および WSDL 機能

次の SOAP 機能は、WebLogic Web サービスではサポートされていません。

次の WSDL 機能は、WebLogic Web サービスではサポートされていません。

 


XML ファイルの編集

WebLogic Web サービスを作成する際または呼び出す際は、EJB デプロイメント記述子、Java Ant ビルド ファイルなどの XML ファイルを編集しなければならない場合があります。これらのファイルを編集するには、BEA が提供する BEA XML エディタを使用します。BEA XML エディタは、完全な Java ベースのスタンドアロン XML エディタです。

BEA XML エディタは、XML ファイルを作成および編集するためのシンプルでユーザフレンドリなツールです。このツールでは、XML ファイルの中身を、階層的な XML ツリー構造と実際の XML コードの両方で表示します。ドキュメントを 2 通りに表示することにより、以下の 2 つの方法で XML ドキュメントを編集できます。

BEA XML エディタは、指定した DTD または XML スキーマを基に XML コードを検証します。

使用方法の詳細については、BEA XML エディタのオンライン ヘルプを参照してください。

BEA XML エディタは、BEA dev2devからダウンロードできます。

 

back to top previous page next page