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

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

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

WebLogic Web サービスの紹介

この章では、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 サービスには、次の規格の実装が必要です。

Web サービス仕様の BEA 実装

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

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

SOAP

SOAP (Simple Object Access Protocol) は、分散型環境で情報を交換するために使用する軽量 XML ベースのプロトコルです。WebLogic Server には、SOAP 1.1 仕様、SOAP 1.2 仕様、添付ファイル付き SOAP (SAAJ) 仕様の実装が含まれています。プロトコルの構成は以下のとおりです。

この情報は、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>

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

WSDL 1.1

WSDL (Web Services Description Language) は、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>

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

JAX-RPC 1.0

JAX-RPC (Java API for XML-based RPC) 1.0 は、Web サービス API を定義する Sun Microsystems の仕様です。

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

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

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

表 1-1 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)

Web サービス セキュリティについての以下の説明は、2004 年 4 月 6 日付の「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 サービス拡張機能やより高いレベルのアプリケーション固有プロトコルと一緒に使用して、さまざまなセキュリティ モデルおよび暗号化技術を実現することができるビルディング ブロックです。

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

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

UDDI 2.0

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

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

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

 


WebLogic Web サービスの機能

WebLogic Web サービス サブシステムには、以下の機能があります (WebLogic Server のバージョン 8.1 の新機能を最初に列挙します)。

 


サポートされていない機能

以下に、このリリースの WebLogic Web サービスではサポートされていない機能を示します。

 


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

WebLogic Server の WL_HOME/samples/server/examples/src/examples/webservices ディレクトリには、WebLogic Web サービスの作成および呼び出しの方法として以下の例があります。WL_HOME は、WebLogic Platform のメイン ディレクトリです。

上記の例の構築と実行についての詳細な説明は、次の Web ページを参照してください。

WL_HOME/samples/server/examples/src/examples/webservices/package-summary.html

 


WebLogic Web サービスの作成 : 主な手順

以下は、WebLogic Web サービスを作成する高度な手順です。ほとんどの手順については、後述の章で詳しく説明します。「WebLogic Web サービスの作成 : 単純な例」では、Web サービスの作成例を簡単に説明します。

  1. WebLogic Web サービスを設計します。
  2. Web サービスは RPC 指向かドキュメント指向か、同期または非同期か、サービスを実装するバックエンド コンポーネントのタイプ、組み込みデータ型またはカスタム データ型のみを使用するサービスかどうか、送受信される SOAP メッセージをインターセプトする必要があるかどうか、などを決定します。

    WebLogic Web サービスの設計」を参照してください。

  3. 基本的な WebLogic Web サービスを実装します。
  4. Web サービスを構成するバックエンド コンポーネントの Java コードを記述してコンパイルします。必要であれば、SOAP メッセージをインターセプトする SOAP メッセージ ハンドラや XML と Java 間のデータ変換を行う独自のシリアライゼーション クラスなどを作成します。

    WebLogic Web サービスの実装」を参照してください。

  5. WebLogic Web サービスをアセンブルし、パッケージ化します。
  6. すべての実装クラス ファイルを、適切なディレクトリ構造に収集して Web サービス デプロイメント記述子ファイルを作成し、サービスのサポート部分 (クライアント JAR ファイルなど) を作成し、すべてをデプロイメント ユニット (EAR ファイルまたは展開ディレクトリ形式) にパッケージ化します。

    簡素な Web サービスを作成する場合は、すべてのアセンブリ ステップを実行する servicegen Ant タスクを使用してください。Web サービスがもっと複雑な場合は、個別の Ant タスクを使用します。

    Ant タスクを使用した WebLogic Web サービスのアセンブル」を参照してください。

  7. 基本的な WebLogic Web サービスをテスト用にデプロイします。
  8. Web サービスをリモート クライアントで使用できるようにします。WebLogic Web サービスは標準 J2EE エンタープライズ アプリケーションとしてパッケージ化されているため、Web サービスのデプロイはエンタープライズ アプリケーションのデプロイと同じです。

    WebLogic Server アプリケーションのデプロイメント』を参照してください。

  9. Web サービスにアクセスして Web サービスが期待どおりに動作していることをテストするクライアントを作成します。Web サービス ホーム ページを使用して、作成した Web サービスをテストすることもできます。
  10. クライアント アプリケーションおよび WebLogic Server からの Web サービスの呼び出し」を参照してください。

  11. その他の WebLogic Web サービス機能 (セキュリティ、信頼性のある SOAP メッセージング、JMS 転送、インターナショナライゼーションなど) をコンフィグレーションします。以下を参照してください。
  12. 機能を追加した後に WebLogic Web サービスをテストします。
  13. WebLogic Web サービスのデプロイとテスト」を参照してください。

  14. WebLogic Web サービスをプロダクション用にデプロイします。
  15. WebLogic Server アプリケーションのデプロイメント』を参照してください。

  16. 必要であれば、Web サービスを UDDI レジストリでパブリッシュすることができます。「UDDI を使用した Web サービスのパブリッシュと検索」を参照してください。

 


Web サービスを作成するときの一般タスクのロードマップ

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

.

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

主要なタスク

サブタスクと追加情報

Web サービス バックエンド コンポーネントの作成

WebLogic Web サービスの実装の概要

コンポーネントの Java コードの記述

WSDL ファイルに基づき部分的な実装を生成する

SOAP メッセージをインターセプトする SOAP メッセージ ハンドラの作成

SOAP 添付ファイルを使用する

組み込みおよび非組み込みデータ型の使い方

非組み込みデータ型を実装する

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

servicegen および autotype Ant タスクでサポートされる非組み込みデータ型

SOAP 障害例外を送出する

WebLogic Web サービス API の使い方

Web サービスのデプロイメント ユニットへのアセンブル

Ant タスクを使用した WebLogic Web サービスのアセンブルの概要

servicegen Ant タスクを使用した WebLogic Web サービスのアセンブル

個別用途の Ant タスクを使用した WebLogic Web サービスのアセンブル

Java を使用して Web サービスをアセンブルする

XML スキーマを使用して Web サービスをアセンブルする

WebLogic Web サービスのデプロイとテスト

WebLogic Web サービスのデプロイとテスト

WebLogic Web サービスのホーム ページおよび WSDL の URL

Web サービスの呼び出し

Web サービスの呼び出しの概要

Web サービスを呼び出す Java クライアント アプリケーションの作成 : 主な手順

非同期クライアント アプリケーションの記述

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

Web サービスの保護

Web サービス セキュリティの概要

メッセージレベルのセキュリティのコンフィグレーション : 主な手順

転送レベルのセキュリティ (SSL) のコンフィグレーション : 主な手順

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

高度な機能の追加

信頼性のある SOAP メッセージングの使い方

インターナショナライゼーション

6.1 または 7.0 WebLogic Web サービスのアップグレード

7.0 WebLogic Web サービスから 8.1 へのアップグレード

6.1 WebLogic Web サービスから 8.1 へのアップグレード

問題の解決

Web サービスのホーム ページを使用した Web サービスのテスト

SOAP メッセージの表示

HTTP SOAP メッセージのポスト

WSDL に関する問題のデバッグ

WSDL ファイルの検証

XML スキーマの検証

データ型生成 (オートタイピング) に関する問題のデバッグ

 


XML ファイルの編集

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

注意 :このマニュアルでは、XML ファイルについての理解と各要素における Web サービスの記述方法についての理解を深めるため、web-services.xml デプロイメント記述子を手動で作成および更新する方法について説明します。BEA XML エディタは、ファイルの更新にも使用できます。

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

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

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

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

 

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