ナビゲーションをスキップ

WebLogic Web サービス プログラマーズ ガイド

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

WebLogic Web サービスについて

以下の節では、WebLogic Server で実装される WebLogic Web サービスの概要について説明します。

 


Web サービスとは

Web サービスとは、ネットワーク上の他のシステムからも利用でき、分散型 Web ベース アプリケーションのコンポーネントとして共有および使用可能な、1 つのエンティティにまとめられた一連の関数です。ネットワークは企業イントラネットの場合もあれば、インターネットの場合もあります。カスタマ リレーションシップ マネジメント システム、注文処理システム、その他の既存のバックエンド アプリケーションなど、他のシステムはこれらの関数を呼び出してデータを要求したり、処理を実行することができます。Web サービスはほとんどのシステムに備わっている基本的な標準技術に基づいているため、分散システムを統合する極めて優れた手段であるといえます。

従来、ソフトウェア アプリケーション アーキテクチャは、メインフレームなどで動作するモノリシック システムまたはデスクトップ上で動作するクライアント アプリケーションの 2 つのカテゴリに分けられていました。これらのアーキテクチャはそのアプリケーションの目的においては効率よく機能しますが、閉鎖的であり、その機能を新しいアプリケーションに簡単に組み込むことができませんでした。

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

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

 


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

Web サービスの主な利点は、次のとおりです。

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

これらの異なるシステムには Microsoft SOAP ToolKit クライアント、J2EE アプリケーション、レガシー アプリケーションなどがあります。アプリケーション作成に使用されているプログラミング言語は、Java、C++、Perl などです。アプリケーションの相互運用性が Web サービスの目標であり、それは、公開されている業界標準をサービス プロバイダがどれだけ忠実に遵守しているかによって左右されます。

 


WebLogic Web サービスの構造

WebLogic Web サービスはエンタープライズ Web サービス 1.1 仕様 (JSR-921) に従って実装されています。この仕様では、Java で Web サービスを実装するための標準の J2EE 実行時アーキテクチャを定義しています。また、標準 J2EE Web サービスのパッケージ化形式、デプロイメント モデル、実行時サービスについても記述されており、そのすべてを WebLogic Web サービスで実装しています。

注意 : JSR-921 は JSR-109 (Web サービスの J2EE 1.3 仕様) の 1.1 メンテナンス リリースです。JSR-921 は現在、JCP (Java Community Process) の最終リリースです。

エンタープライズ Web サービス 1.1 仕様によると、J2EE Web サービスは以下のいずれかのコンポーネントで実装されます。

Java クラスまたは EJB のコードは、Web サービスのビジネス ロジックを実装するものです。生の Java クラスまたは EJB を直接コーディングする代わりに、JWS アノテーション プログラミング モデルを使用することをお勧めします。それによって、WebLogic Web サービスのプログラミングがより簡単になります。

このプログラミング モデルでは、新しい JDK 5.0 メタデータ アノテーション機能を利用しています。アノテーション付きの Java ファイルを作成し、Ant タスクを使用してそのファイルを Java クラスにコンパイルし、関連するアーティファクトをすべて生成します。アノテーション付きの Java Web サービス (JWS) ファイルは、Web サービスの中核部分です。このファイルには Web サービスの動作を決定する Java コードが含まれています。JWS ファイルは、アノテーションを使用して Web サービスの形式や特性を指定した、通常の Java クラス ファイルです。JWS ファイルで使用できる JWS アノテーションには、Web Services Metadata for the Java Platform 仕様 (JSR-181) で定義された標準のアノテーションと、WebLogic 固有のアノテーションがあります。

JWS プログラミング モデルの詳細については、「JWS ファイルのプログラミング」を参照してください。

JWS ファイルを作成したら、エンタープライズ Web サービス 1.1 仕様で説明されているように、jwsc WebLogic Web サービス Ant タスクを使用して、JWS ファイルを Java クラスまたはステートレス セッション EJB にコンパイルします。通常は、この Web サービスのバックエンドの実装をユーザが決定する必要はありません。jwsc Ant タスクが、JWS ファイルに指定された JWS アノテーションに基づいて最適な実装を選択します。jwsc Ant タスクは、Web サービスの補助的なアーティファクトもすべて生成し、アーカイブ ファイルにすべてをパッケージ化して、WebLogic Server にデプロイできるエンタープライズ アプリケーションを作成します。

jwsc Ant タスクが Web サービスを Java クラスとして実装する場合、jwsc は、web.xml および weblogic.xml デプロイメント記述子ファイルなどの標準の WAR アーティファクトをすべて含めて、Web サービスを標準の Web アプリケーション WAR ファイルにパッケージ化します。WAR ファイルには、その WAR ファイルが Web サービスでもあることを示す追加のアーティファクトが含まれています。追加のアーティファクトには、webservices.xml および weblogic-webservices.xml デプロイメント記述子ファイル、JAX-RPC データ型マッピング ファイル、Web サービスのパブリック規約を記述した WSDL ファイルなどがあります。

同様に、jwsc Ant タスクが Web サービスをステートレス セッション EJB として実装する場合、jwsc は、ejb-jar.xml および weblogic-ejb.jar.xml デプロイメント記述子ファイルなどの通常のアーティファクトをすべて含めて、Web サービスを標準の EJB JAR ファイルにパッケージ化します。EJB JAR ファイルには、前述のような、Web サービスであることを示す Web サービスに固有の追加のアーティファクトも含まれています。

注意 : jwsc Ant タスクは実際には、JWS ファイルのステートレス EJB ラッパーを作成します。つまり、ビジネス ロジックは JWS アノテーションを含む Java クラスのままです。しかし、EJB ラッパーであるため、タスクはそのサービスを EJB JAR ファイルにパッケージ化する必要があり、Web サービスは EJB 実装であると見なされます。

ビジネス ロジックを実際の EJB に置く場合は、JWS ファイルで明示的に javax.ejb.SessionBean を実装する必要があります。

JWS ファイルのプログラミングに加えて、Web サービス オペレーションの呼び出しで使用される要求および応答の SOAP メッセージを処理する必要もある場合は、1 つまたは複数の SOAP メッセージ ハンドラをコンフィグレーションすることもできます。

基本的な WebLogic Web サービスをコーディングしたら、追加の高度な機能をプログラミングおよびコンフィグレーションできます。Web サービスを確実に呼び出せるようにする機能 (WS-ReliableMessaging 仕様 (2004 年 2 月 4 日付) で規定) や、SOAP メッセージのデジタル署名や暗号化を指定できるようにする機能 (WS-Security 仕様で規定) があります。このような WebLogic Web サービスの高度な機能は、WS-Policy ファイルを使用してコンフィグレーションします。WS-Policy ファイルは WS-Policy 仕様に準拠する XML ファイルです。セキュリティや信頼性のあるメッセージングのコンフィグレーションを記述するための、セキュリティに固有の XML 要素や Web サービスの信頼性のあるメッセージングに固有の XML 要素が含まれています。

 


一般的な Web サービス開発タスクのロードマップ

次の表に、WebLogic Web サービスを作成、デプロイ、および呼び出すための一般的なタスクのロードマップを示します。

表 2-1 Web サービスのタスク

主要なタスク

サブタスクと追加情報

入門

WebLogic Web サービスについて

WebLogic Web サービスの構造

WebLogic Web サービスでサポートされる標準

簡単な HelloWorld Web サービスの作成

一般的な Web サービスの使用例とサンプル

基本的な WebLogic Web サービスを繰り返し開発する

Java から開始する WebLogic Web サービスの反復的な開発 : 主な手順

Web サービスの WebLogic 分割開発ディレクトリ環境への統合

JWS ファイルのプログラミング

サポートされる組み込みデータ型

サポートされるユーザ定義のデータ型

ユーザ定義の Java データ型のプログラミング

例外の送出

JwsContext を使用した Web サービスの実行時情報へのアクセス

ステートレス セッション EJB を実装すべき場合

基本的な Ant build.xml ファイルの作成

jwsc WebLogic Web サービス Ant タスクの実行

Web サービスをテスト用にデプロイする

WebLogic Web サービスのデプロイとアンデプロイ

Web サービスの WSDL の参照

Web サービスを呼び出す

スタンドアロン クライアントからの Web サービスの呼び出し : 主な手順

別の Web サービスからの Web サービスの呼び出し

非同期の要求と応答を使用した Web サービスの呼び出し

クライアントサイド SOAP メッセージ ハンドラの作成と使用

クライアントサイド セキュリティ WS-Policy ファイルの使用

Web サービスに高度な機能を追加する

Web サービスの信頼性のあるメッセージングの使用

会話形式の Web サービスの作成

バッファ付き Web サービスの作成

JMS 転送の使用

SOAP メッセージ ハンドラの作成と使用

Web サービスを保護する

メッセージレベルのセキュリティ (デジタル署名と暗号化) のコンフィグレーション

転送レベルのセキュリティのコンフィグレーション

アクセス制御セキュリティのコンフィグレーション : 主な手順

8.1 WebLogic Web サービスをアップグレードして 9.0 ランタイムで実行する

8.1 Java クラス実装の WebLogic Web サービスの 9.0 へのアップグレード : 主な手順

8.1 EJB 実装の WebLogic Web サービスの 9.0 へのアップグレード : 主な手順

 


WebLogic Web サービスでサポートされる標準

Web サービスでは、以下の標準仕様の実装と準拠が必要です。

Web サービス仕様の BEA 実装

Web サービスの標準を定義する仕様の多くは、業界全体で幅広く使用できるように記述されています。そのため、BEA による特定の仕様の実装では、その仕様で考慮されているすべての使い方がサポートされていない場合もあります。

BEA では、Web サービス仕様の考え得るあらゆる使用事例をサポートするよりも、Web サービス プラットフォームの相互運用性の方をより重要視しています。Web Services Interoperability OrganizationBasic Profile 1.1 仕様に準拠し、それを Web サービス相互運用性の基準と見なしています。このガイドでは必ずしも Basic Profile 1.1 のすべての要件が説明されているわけではありません。ただし、このガイドでは Basic Profile 1.1 の要件を超えた機能が説明されています。

Web Services Metadata for the Java Platform (JSR-181)

標準の JSR-921 の EJB または Java クラスを最初から手動でコーディングし、関連するアーティファクト (デプロイメント記述子ファイル、WSDL、ユーザ定義のデータ型のデータ バインディング アーティファクトなど) を手動で生成して、WebLogic Web サービスをプログラミングすることも可能ですが、そのプロセス全体が煩雑で単調になる可能性があります。そのため、新しい JDK 1.5 メタデータ アノテーション機能 (JSR-175 で規定) とプログラミング モデルを利用することをお勧めします。このプログラミング モデルでは、アノテーション付きの Java ファイルを作成し、Ant タスクを使用してそのファイルを標準の JSR-921 の Java クラスまたは EJB の Java ソース コードに変換し、関連するアーティファクトをすべて自動的に生成します。

アノテーション付きの Java Web サービス (JWS) ファイル (簡単に「JWS ファイル」と呼びます) は、Web サービスの中核部分です。このファイルには Web サービスの動作を決定する Java コードが含まれています。JWS ファイルは、JDK 1.5 メタデータ アノテーションを使用して Web サービスの形式や特性を指定した、通常の Java クラス ファイルです。JWS ファイルで使用できる JWS アノテーションには、Web Services Metadata for the Java Platform 仕様 (JSR-181) で定義された標準のアノテーションと、WebLogic 固有のアノテーションがあります。

エンタープライズ Web サービス 1.1

Implementing Enterprise Web Services 1.1 仕様 (JSR-921) では、WebLogic Server などの J2EE アプリケーション サーバ上で動作する Web サービスを Java で実装するためのプログラミング モデルと実行時アーキテクチャを定義しています。特に、プログラマが次の 2 つのコンポーネントのいずれかを使用して J2EE Web サービスを実装することを規定しています。

また、標準 J2EE Web サービスのパッケージ化形式、デプロイメント モデル、実行時サービスについても記述されており、そのすべてを WebLogic Web サービスで実装しています。

注意 : JSR-921 は JSR-109 (Web サービスの J2EE 1.3 仕様) の 1.1 メンテナンス リリースです。

SOAP 1.1

SOAP (Simple Object Access Protocol) は、分散型環境で情報を交換するために使用する軽量 XML ベースのプロトコルです。WebLogic Server には SOAP 1.1 仕様の独自の実装があります。プロトコルの構成は以下のとおりです。

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

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

POST /StockQuote HTTP/1.1
Host: www.sample.com:7001
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>

詳細については、「SOAP 1.1」を参照してください。

SAAJ 1.2

SOAP with Attachments API for Java (SAAJ) 仕様では、SOAP 1.1 仕様と SOAP with Attachments ノートに準拠するメッセージの作成と消費について記述されています。

API の javax.xml.soap というパッケージでは、MIME 添付ファイルを持つ SOAP メッセージの主要な抽象概念を提供しています。添付ファイルには、XML ドキュメント全体、XML フラグメント、画像、テキスト ドキュメント、または有効な MIME タイプを持つその他のコンテンツを使用できます。また、このパッケージでは、Web サービスとの要求および応答型の対話に関する単純なクライアントサイドのビューも提供しています。

詳細については、「SOAP With Attachments API for Java (SAAJ) 1.1」を参照してください。

WSDL 1.1

Web Services Description Language (WSDL) は、Web サービスを記述するための XML ベースの仕様です。WSDL ドキュメントには、Web サービス オペレーション、入力および出力パラメータ、およびクライアント アプリケーションから 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>

WSDL 仕様には、Web サービスを呼び出すときに使用できるさまざまなタイプのバインディングを指定するための、省略可能な拡張要素があります。WebLogic Web サービス ランタイムでは、

詳細については、「Web Services Description Language (WSDL) 1.1」を参照してください。

JAX-RPC 1.1

Java API for XML-based RPC (JAX-RPC) 1.1 は、XML ベースのリモート プロシージャ呼び出し (RPC) を行うための Java API を定義した Sun Microsystems の仕様です。特に、これらの API は、SOAP 1.1 (分散型環境で情報を交換するための XML ベースのプロトコル) を使用して、Web サービスを呼び出したり、Web サービスから応答を取得したりするのに使用されます。

WebLogic Server には、JAX-RPC バージョン 1.1 仕様の必要な機能がすべて実装されています。また、次の節で指定されているオプションのデータ型サポートも実装されています。

WebLogic Server には、上記の節で説明されているもの以外の JAX-RPC 仕様のオプション機能は実装されていません。

次の表で、JAX-RPC の中心的なインタフェースとクラスを簡単に説明します。

表 2-2 JAX-RPC のインタフェースとクラス

javax.xml.rpc のインタフェースまたはクラス

説明

Service

主要なクライアント インタフェース。静的、動的呼び出しの両方で使用する。

ServiceFactory

Service インスタンスの生成に使用するファクトリ クラス。

Stub

Web サービスのオペレーションを呼び出すためのクライアント プロキシを表す。通常は、Web サービスの静的呼び出しに使用する。

Call

Web サービスを動的に呼び出すのに使用する。

JAXRPCException

Web サービスの呼び出し中にエラーが発生した場合に送出される例外。

JAX-RPC の詳細については、http://java.sun.com/xml/jaxrpc/index.html を参照してください。

JAX-RPC を使用して Web サービスを呼び出す方法に関するチュートリアルについては、http://java.sun.com/webservices/docs/ea1/tutorial/doc/JAXRPC.html を参照してください。

Web サービス セキュリティ (WS-Security) 1.0

Web サービス セキュリティについての以下の説明は、2004 年 3 月の「Web Services Security: SOAP Message Security」と題された OASIS 標準 1.0 仕様から直接引用したものです。

この仕様は、整合性と機密性を実現するセキュアな Web サービスを構築する際に使用できる SOAP の拡張機能の標準セットを提案するものです。この拡張機能のセットのことを「Web Services Security Language」または「WS-Security」と呼びます。

WS-Security は柔軟性があり、さまざまなセキュリティ モデル (PKI、Kerberos、SSL など) の構築の土台として使用するように設計されています。具体的に言うと、WS-Security では複数のセキュリティ トークン、複数の信頼ドメイン、複数のシグネチャ フォーマット、および複数の暗号化技術がサポートされています。

この仕様は、主にセキュリティ トークンの伝播、メッセージの整合性、およびメッセージの機密性の 3 つのメカニズムを提供します。これらのメカニズムは、それだけでは完全なセキュリティ ソリューションとはなりません。WS-Security は、他の Web サービス拡張機能やより高いレベルのアプリケーション固有プロトコルと一緒に使用して、さまざまなセキュリティ モデルおよび暗号化技術を実現することができるビルディング ブロックです。

前述のメカニズムは、独立して使用することも (たとえばセキュリティ トークンを渡すため)、密接に統合して使用することもできます (たとえば、メッセージの署名や暗号化を行い、署名や暗号化に使用するキーと関連付けられたセキュリティ トークン階層を提供するなど)。

WebLogic Web サービスでは以下のトークン プロファイルも実装しています。

詳細については、「OASIS Web Service Security」Web ページを参照してください。

UDDI 2.0

Universal Description, Discovery and Integration (UDDI) 仕様では、Web サービスの記述、既知のレジストリへの Web サービスの登録、他の登録済み Web サービスの検索などの標準的な方法が定義されています。

詳細については http://www.uddi.org を参照してください。

JAX-R 1.0

Java API for XML Registries (JAXR) は、さまざまな XML レジストリにアクセスするための共通の標準 Java API を提供しています。XML レジストリは、Web サービスの構築、デプロイ、検索を可能にするインフラストラクチャです。

現在、XML レジストリのさまざまな仕様があり、特に知られているのは、OASIS と U.N./CEFACT が開発中の ebXML Registry and Repository 標準と、ベンダのコンソーシアムで開発中の UDDI 仕様です。

JAXR によって、Java ソフトウェア プログラマは、単一の使いやすい抽象 API を使用して、さまざまな XML レジストリにアクセスできるようになります。JAXR では、XML レジストリ内にコンテンツとメタデータを記述する共通の情報モデルによって、容易性と使いやすさを実現しています。

詳細については、「Java API for XML Registries」を参照してください。

WS-Addressing 1.0

WS-Addressing 仕様は、Web サービスとメッセージのアドレッシングを行うための、転送に依存しないメカニズムを提供します。特に、この仕様では、Web サービスのエンドポイントを識別したり、メッセージ内のエンドポイント ID をエンド ツー エンドで保護したりするのに使用される多数の XML 要素を定義しています。

WebLogic Web サービスのすべての非同期機能 (コールバック、会話、Web サービスの信頼性のあるメッセージング) では、実装でアドレッシングを使用していますが、Web サービス プログラマは、追加のアドレッシング機能が必要な場合に、この仕様に準拠する API を単独で使用することもできます。

Web Services Addressing (WS-Addressing)」を参照してください。

WS-Policy 1.0

Web Services Policy Framework (WS-Policy) 仕様では、Web サービスのポリシーを記述して通信するための、汎用的なモデルと対応する構文が提供されています。WS-Policy は、幅広いサービスの要件、優先事項、機能を記述するために、他の Web サービス仕様が使用したり拡張したりできる、構成の基本セットを定義しています。

Web Services Policy Framework (WS-Policy)」を参照してください。

WS-PolicyAttachment 1.0

Web Services Policy Framework (WS-Policy) 仕様では、ポリシーの抽象モデルと XML ベースの式の文法を定義しています。この Web Services Policy Attachment (WS-PolicyAttachment) 仕様では、ポリシーとポリシーの適用先のサブジェクトを関連付けるための、2 つの汎用メカニズムを定義しています。また、それらの汎用メカニズムを使用して、WS-Policy を WSDL や UDDI の記述に関連付ける方法も定義しています。

Web Services Policy Attachment (WS-PolicyAttachment)」を参照してください。

WS-ReliableMessaging 1.0

WS-ReliableMessaging 仕様 (2004 年 2 月 4 日) では、別々の WebLogic Server インスタンス上で動作する 2 つの Web サービスが、ソフトウェア コンポーネント、システム、またはネットワークに障害が発生した場合に、確実に通信するための方法を規定しています。特に、ソース エンドポイントから送り先エンドポイントに送信されるメッセージの配信またはエラーの生成を保証する、相互運用性プロトコルを提供しています。

Web Services Reliable Messaging Protocol (WS-ReliableMessaging)」を参照してください。

WebLogic Web サービスでサポートされるその他の仕様

 

フッタのナビゲーションのスキップ  ページの先頭 前 次