ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの紹介
11g リリース1 (10.3.6)
B61646-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

1 WebLogic Webサービスの概要

この章では、WebLogic Webサービスの概要について説明します。

この章の内容は以下のとおりです。

Webサービスとは

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

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

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

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

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

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

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

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

WebLogic Webサービスの構造

WebLogic WebサービスはJSR 109: Implementing Enterprise Web Services仕様(http://www.jcp.org/en/jsr/detail?id=109)に従って実装されています。この仕様では、JavaでWebサービスを実装するための標準のJava EE実行時アーキテクチャを定義しています。また、標準Java EE Webサービスのパッケージ化形式、デプロイメント・モデル、実行時サービスについても記述されており、そのすべてをWebLogic Webサービスで実装しています。

以降の節で説明する内容は、次のとおりです。

プログラミング・モデル - メタデータ・アノテーション

JSR 109: Implementing Enterprise Web Services仕様(http://www.jcp.org/en/jsr/detail?id=109)では、Java EE Webサービスは次のいずれかのコンポーネントによって実装するものと定められています。

  • Webコンテナ内で動作するJavaクラス

  • EJBコンテナ内で動作するステートレス・セッションEJB

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仕様(http://www.jcp.org/en/jsr/detail?id=181)で定義された標準のアノテーションと、その他の標準またはWebLogic固有のアノテーションがあり、作成するWebサービスのタイプに応じて使い分けます。

WebLogic Serverのこのリリースでは、Java API for XML-Based Web Services 2.1 (JAX-WS)のWebサービス(http://jcp.org/aboutJava/communityprocess/mrel/jsr224/index2.htmlに説明があります)とJava API for XML-Based RPC 1.1 (JAX-RPC)のWebサービス(http://java.net/projects/jax-rpc/に説明があります)がサポートされています。JAX-RPCや、以前の仕様、定義されたAPIおよびJavaプラットフォームでXML Webサービスをサポートするための規約もまた、WS-I Basic Profile 1.0をサポートすることで、JAX-RPC実装間の相互運用性を高めています。JAX-WSはJAX-RPC 1.1の後継仕様です。詳細は、「JAX-WSまたはJAX-RPCのいずれかを選択する際の判断基準」を参照してください。

基本的なWebLogic Webサービスをコーディングしたら、追加の高度な機能をプログラミングおよび構成できます。たとえば、SOAPメッセージのデジタル署名や暗号化を指定できます(http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wssのWS-Security仕様で規定)。このようなWebLogic Webサービスの高度な機能は、WS-Policyファイルを使用して構成します。WS-PolicyファイルはWS-Policy仕様に準拠するXMLファイルです。セキュリティや信頼性のあるメッセージングの構成を記述するための、セキュリティに固有のXML要素やWebサービスの信頼性のあるメッセージングに固有のXML要素が含まれています。WS-Policy仕様の詳細は、「Web Services Policy Framework (WS-Policy) 1.5 and 1.2」を参照してください。

開発モデル - ボトムアップとトップダウン

Webサービスの開発には、ボトムアップとトップダウンという2つのアプローチがあります。次の項でそれぞれのアプローチについて説明します。

ボトムアップ・アプローチ: Javaから開始

ボトムアップ・アプローチでは、JWSファイルを最初から開発します。JWSファイルを作成したら、jwsc WebLogic WebサービスのAntタスクを使用して、JWSファイルをコンパイルします。「JSR 109: Implementing Enterprise Web Services 1.2」で説明する「JSR 109: Implementing Enterprise Web Services」仕様を参照してください。

jwsc Antタスクでは、JWSファイルは常にプレーンJavaクラスにコンパイルされます。ステートレス・セッションEJBが実装されるのは、JWSファイルにステートレス・セッションEJBを実装している場合のみです。jwsc Antタスクは、Webサービスの補助的なアーティファクトもすべて生成し、アーカイブ・ファイルにすべてをパッケージ化して、WebLogic Serverにデプロイできるエンタープライズ・アプリケーションを作成します。

jwsc Antタスクのデフォルトでは、Webサービスはすべての標準WARアーティファクトとともに標準のWebアプリケーションWARファイルにパッケージ化されます。ただし、このWARファイルには、それがWebサービスでもあることを示す追加のアーティファクトが含まれています。追加のアーティファクトには、デプロイメント記述子ファイル、Webサービスのパブリック規約を記述したWSDLファイルなどがあります。jwscを複数のJWSファイルに対して実行する場合は、jwscが複数のWebサービスを1つのWARファイルにパッケージ化するか、Webサービスごとに別々のWARファイルにパッケージ化するかを選択できます。どちらを選択した場合でも、jwscによって1つのエンタープライズ・アプリケーションが生成されます。

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

ボトムアップ・アプローチの詳細は、次の節を参照してください。

  • 『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の「Javaから開始するWebLogic Webサービスの開発: 主な手順」

  • 『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』の「Javaから開始するWebLogic Webサービスの開発: 主な手順」

トップダウン・アプローチ: WSDLから開始

トップダウン・アプローチでは、WSDLファイルからWebサービスを作成します。wsdlc Antタスクを使用して、WSDLファイルで記述されたWebサービスの部分的な実装を生成することができます。JWSサービス・エンドポイント・インタフェース(SEI)、途中まで作成済のJWSクラス・ファイル、XMLスキーマ・データ型を表すJavaBeanなどが、wsdlc Antタスクによって出力ディレクトリ内に生成されます。

wsdlc Antタスクを実行(通常は1回だけ実行)したら、メソッドをビジネス要件どおりに実行するためにそのメソッドにJavaコードを追加するなどして、生成されたJWS実装ファイルを更新します。wsdlc Antタスクは、WSDLファイルを基にWebサービスの形式を認識していますが、そのWebサービスをどのように実行するかについては認識していないので、最初は生成されたJWS実装ファイルにビジネス・ロジックは含まれていません。

wsdlc AntタスクはJWS SEIとデータ・バインディング・アーティファクトを一緒にJARファイルにパッケージ化します。このJARファイルを後でjwsc Antタスクに指定します。このJARファイルを更新する必要はありません。更新するファイルはJWS実装クラスのみです。

トップダウン・アプローチの詳細は、次の節を参照してください。

  • 『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の「WSDLファイルから開始するWebLogic Webサービスの開発: 主な手順」

  • 『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』の「WSDLファイルから開始するWebLogic Webサービスの開発: 主な手順」

JAX-WSまたはJAX-RPCのいずれかを選択する際の判断基準

すでに説明したように、このリリースのWebLogic Serverでは次のWebサービスがサポートされます。

JAX-WSはJAX-RPCの後継仕様で、Java EE 5の新機能の多くが実装されています。WebサービスはJAX-WSに準拠して開発することをお薦めします。JAX-RPCは、レガシーな仕様と位置づけられ、これ以上の拡張は予定されていません。

次の表に、JAX-RPCのかわりにJAX-WSを選択する利点をまとめています。次にあげる利点と比較しても、JAX-RPC Webサービスの開発を継続する理由があるかもしれません。次の項で説明する機能をJAX-WS Webサービスでプログラミングする場合の追加のJAX-WSドキュメントやサンプルについては、http://jax-ws.java.netを参照してください。JAX-WSおよびJAX-RPCにサポートされる標準の比較については、第4章「WebLogic Webサービスでサポートされる機能および標準」も参照してください。

表1-1 JAX-WSの利点

利点 説明

JAXB 2.1を使用したデータ・バインディング

JAX-WS 2.1では、Java Architecture for XML Binding (JAXB) 2.1仕様(http://jcp.org/en/jsr/detail?id=222)が完全にサポートされ、XMLスキーマが完全にサポートされます。JAXBを使用すると、XMLスキーマをJavaコード表現に、簡単にバインドできます。これにより、XML自体に関する知識がそれほどなくても、XMLデータと処理関数を、Javaテクノロジに基づくアプリケーションに、簡単に組み込むことができます。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のJAXBデータ・バインディングの使用に関する項を参照してください。

一方、JAX-RPC形式のWebサービスで使用できる組込みデータ型やユーザー定義のデータ型は、広範ではありますが、『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のデータ・バインディングの理解に関する項で説明されているものに限定されます。

ストリーミングMTOMを使用したドキュメントの添付

MTOM、javax.activation.DataHandler、およびcom.sun.xml.ws.developer.StreamingDataHandler APIを使用すると、添付ファイルを含む着信SOAPメッセージを読み込む際に、メッセージ全体をメモリーに読み込むデフォルト動作のかわりに、WebサービスでストリーミングAPIを使用することを指定できます。この機能を使用すると、非常に大きいSOAPメッセージを読み込む際のWebサービスのパフォーマンスを向上させることができます。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』のSOAP添付ファイルのストリーミングに関する項を参照してください。

XMLレベルでのメッセージの操作

JAX-WSのjavax.xml.ws.Providerおよびjavax.xml.ws.Dispatch APIを使用すると、XMLペイロードに直接アクセスして、XMLメッセージ・レベルでのWebサービスの操作を可能にします。

Webサービス・アノテーション

JAX-WS 2.1プログラミング・モデルは、JSR 181:Web Services Metadata for the Java Platform仕様(http://jcp.org/en/jsr/detail?id=181)に記載のメタデータ・アノテーションを使用し、その後Antタスクを使用して、アノテーション付きのJavaファイルをデプロイ可能なエンタープライズ・アプリケーション(EAR)ファイルにコンパイルするという点で、JAX-RPC 1.1 Webサービスのプログラミング・モデルにきわめて類似しています。ただしJAX-WS 2.1プログラミング・モデルでは、JavaからXMLスキーマやWSDLへのマッピングをカスタマイズし、Webサービス操作パラメータ名を、WSDLファイル内で、意味の通る部分名や要素名にマップするために使用できる、JAX-WS 2.1仕様にリストされた付加的なアノテーションが定義されているため、より堅牢です。

JAX-WSとJAX-RPCのWebサービスのアノテーション・サポートの比較については、『WebLogic Webサービス・リファレンス』のWebサービスのアノテーション・サポートに関する項を参照してください。

XMLベースのカスタマイズ

JAX-WS 2.1仕様では、標準的で移植可能なXMLベースのカスタマイズが定義されています。これらのカスタマイズ、またはバインディング宣言では、サービス・エンドポイント・インタフェース・クラス、メソッド名、パラメータ名、例外クラスなど、Javaにマップ可能なほぼすべてのWSDLコンポーネントをカスタマイズできます。またバインディング宣言を使用すると、非同期性、プロバイダ、ラッパー形式、付加的なヘッダーなど、ある特定の機能を制御することもできます。

論理ハンドラとプロトコル・ハンドラ

JAX-WS 2.1では、論理ハンドラとプロトコル・ハンドラという、2種類のハンドラが定義されています。プロトコル・ハンドラは、SOAPメッセージなどのメッセージ全体にアクセスできますが、論理ハンドラは、メッセージのペイロードのみを扱い、使用されているプロトコルに依存しません。ハンドラ・チェーンは、ポートごと、プロトコルごと、またはサービスごとに、構成できるようになりました。コンテキスト・オブジェクトのフレームワークが新しく追加され、クライアント・コードがハンドラと簡単に情報を共有できるようになっています。

EJB 3.0のサポート

JAX-WSはEJB 3.0をサポートします。JAX-RPCはEJB 2.1のみをサポートします。


WebLogic Webサービスを実装するためのロードマップ

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


注意:

Oracle WebLogic ServerのJAX-WS実装は、JAX-WS参照実装(RI)から拡張されて、Glassfish Communityによって開発されます(http://jax-ws.java.net/を参照してください)。JAX-WS仕様(JSR-224)で定義されている機能はすべて、Oracle WebLogic Serverでサポートされます。

また、JAX-WS RIにはGlassfishコントリビュータによって提供された様々な拡張があります。特に記載しないかぎり、JAX-WS RI拡張はOracle WebLogic Serverでの使用についてはサポートされません。


表1-2 WebLogic Webサービスを実装するためのロードマップ

主要なタスク サブタスクと追加情報

サポートされる標準を確認する

第4章「WebLogic Webサービスでサポートされる機能および基準」


サンプルを実行する

JAX-WSを使用してWebサービスを開発する

  • Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド

  • 使用例とサンプル

  • 非同期のリクエストとレスポンスを使用したWebサービスの呼出し

  • Webサービスのエンドポイントのパブリッシュ

  • コールバックの使用

  • MTOM/XOPを使用したバイナリ・データ転送の最適化

  • 動的プロキシ・クラスの作成

  • XMLカタログの使用

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

  • RESTful Webサービスのプログラミング

  • UDDIを使用したWebサービスのパブリッシュと検索

JAX-RPCを使用してWebサービスを開発する

  • Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド

  • 使用例とサンプル

  • 非同期のリクエストとレスポンスを使用したWebサービスの呼出し

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

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

  • 非同期機能の併用

  • コールバックによるクライアントへのイベントの通知

  • MTOM/XOPを使用したバイナリ・データの送信

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

  • 接続プロトコルとしてのJMSトランスポートの使用

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

  • Using Database Web Services

  • UDDIを使用したWebサービスのパブリッシュと検索

Webサービスを保護する

  • メッセージ・レベルのセキュリティの構成

  • トランスポート・レベルのセキュリティの構成

  • アクセス制御セキュリティの構成(JAX-RPCのみ)

  • Oracle Web Services Managerのセキュリティ・ポリシーの使用

アップグレード

  • JAX-WS: JAX-WSを10.3.1にアップグレードするために必要な手順はありません。

  • JAX-RPC: WebLogic Webサービスの旧リリースから10.3.1へのアップグレード


Oracle IDEを利用したWebサービスの構築

次のOracle IDEツールを使用してWebサービスを構築することができます。

このリリースでの新機能と変更点

このリリースで導入されたWebLogic Server Webサービスの新機能の一覧については、『Oracle WebLogic Serverの新機能』の「Webサービス」を参照してください。