Oracle® Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの紹介 11g リリース1(10.3.4) B61646-02 |
|
![]() 前 |
![]() 次 |
次の項では、WebLogic Serverで実装されるWebLogic Webサービスの概要について説明します。
Webサービスとは、ネットワーク上の他のシステムからも利用できる1つのアプリケーションとしてパッケージ化された一連の関数です。ネットワークは企業イントラネットの場合もあれば、インターネットの場合もあります。Webサービスはほとんどのシステムに備わっている基本的な標準技術に基づいているため、分散システムを統合するきわめて優れた手段であるといえます。Webサービスは、Webベースの分散アプリケーション間で共有でき、Webベースの分散アプリケーションのコンポーネントとして使用することも可能です。カスタマ・リレーションシップ・マネージメント・システム、注文処理システム、その他の既存のバックエンド・アプリケーションなど、他のシステムはWebサービス関数を呼び出してデータをリクエストしたり、処理を実行することができます。
従来、ソフトウェア・アプリケーション・アーキテクチャは、メインフレームなどで動作するモノリシック・システムまたはデスクトップ上で動作するクライアント/サーバー・アプリケーションの2つのカテゴリに分けられていました。これらのアーキテクチャはそのアプリケーションの目的においては効率よく機能しますが、閉鎖的であり、その機能を新しいアプリケーションに簡単に組み込むことができませんでした。
そのため、ソフトウェア業界は、Web上で動的に対話する疎結合のサービス指向アプリケーションを発展させました。このアプリケーションは、大規模なソフトウェア・システムを小規模なモジュラ・コンポーネントまたは共有サービスに分解するものです。これらのサービスは別々のコンピュータ上に常駐することができ、多様な技術を使用して実装することができますが、XMLやHTTPなどの標準のWebプロトコルを使用してパッケージ化し、アクセス可能にすることができます。そのため、Web上のすべてのユーザーが簡単にアクセスできるようになります。
サービスの概念は新しいものではありません。RMI、COM、およびCORBAは、すべてサービス指向技術です。ただし、これらの技術に基づいたアプリケーションは、特定のベンダーの特定の技術を使用していることが要求されます。このような要件は一般に、アプリケーションの機能をネットワーク上の他のサービスに広く統合することを妨げるものとなります。この問題を解決するために、Webサービスは、異種環境から簡単にアクセスできるようにするための次のプロパティを共有するように定義されています。
Webサービスは、幅広くサポートされているHTTPなどのWebプロトコルを介してアクセスされます。
Webサービスは、XMLベースの記述言語を使って表現された、当該Webサービス自体についての情報を示します。
Webサービスは、ほとんどのプログラミング環境や場合によっては人が生成または解析できる、単純なXMLメッセージを介してクライアント(エンドユーザー・アプリケーションまたはWebサービス)と通信します。
Webサービスの主な利点は、次のとおりです。
多様なハードウェアおよびソフトウェア・プラットフォームにわたる分散型アプリケーション間の相互運用性
Webプロトコルを使用したファイアウォールによる、アプリケーションへの容易で幅広いアクセス
異機種分散型アプリケーションの開発を容易にするクロス・プラットフォーム、クロス言語データ・モデル(XML)
Webサービスは、XMLやHTTPなどの標準のWebプロトコルを使用してアクセスされるので、Web上の多様な異種アプリケーション(一般的にXMLおよびHTTPを理解する)は自動的にWebサービスにアクセスでき、相互の通信が可能になります。
これらの異なるシステムにはMicrosoft SOAP ToolKitクライアント、Java Platform, Enterprise Edition (Java EE)バージョン5アプリケーション、レガシー・アプリケーションなどがあります。アプリケーション作成に使用されているプログラミング言語は、Java、C++、Perlなどです。アプリケーションの相互運用性が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メタデータ・アノテーション機能(http://java.sun.com/developer/technicalArticles/releases/j2se15/
)を利用しています。アノテーション付きの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サービス(https://jax-rpc.dev.java.net/
)がサポートされています。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つのアプローチがあります。次の項でそれぞれのアプローチについて説明します。
ボトムアップ・アプローチでは、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 Fusion Middleware Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の「Javaから開始するWebLogic Webサービスの開発: 主な手順」
『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』の「Javaから開始するWebLogic Webサービスの開発: 主な手順」
トップダウン・アプローチでは、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 Fusion Middleware Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』の「WSDLファイルから開始するWebLogic Webサービスの開発: 主な手順」
『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』の「WSDLファイルから開始するWebLogic Webサービスの開発: 主な手順」
すでに説明したように、このリリースのWebLogic Serverでは次のWebサービスがサポートされます。
Java API for XML-Based Web Services 2.1(JAX-WS)。詳細は、「Java API for XML-based Web Services (JAX-WS) 2.1」を参照してください。
Java API for XML-Based RPC 1.1 (JAX-RPC)。詳細については、「Java API for XML-based RPC (JAX-RPC) 1.1」を参照してください。
JAX-WSはJAX-RPCの後継仕様で、Java EE 5の新機能の多くが実装されています。WebサービスはJAX-WSに準拠して開発することをお薦めします。JAX-RPCは、レガシーな仕様と位置づけられ、これ以上の拡張は予定されていません。
次の表に、JAX-RPCのかわりにJAX-WSを選択する利点をまとめています。次にあげる利点と比較しても、JAX-RPC Webサービスの開発を継続すべき合理的な理由があるかもしれません。次の項で説明する機能をJAX-WS Webサービスでプログラミングする場合は、https://jax-ws.dev.java.net
に用意されているドキュメントやサンプルを参考にしてください。JAX-WSおよびJAX-RPCにサポートされる標準の比較については、第4章「WebLogic Webサービスでサポートされる機能および標準」も参照してください。
表1-1 JAX-WSの利点
利点 | 説明 |
---|---|
JAXB 2.1を使用したデータ・バインディング |
JAX-WS 2.1では、JJava Architecture for XML Binding (JAXB) 2.1仕様( 一方、JAX-RPC形式のWebサービスで使用できる組込みデータ型やユーザー定義のデータ型は、広範ではありますが、『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』の「データ・バインディングについて」で説明されているものに限定されます。 |
ストリーミングMTOMを使用したドキュメントの添付 |
MTOM、 |
XMLレベルでのメッセージの操作 |
JAX-WSの |
Webサービス・アノテーション |
JAX-WS 2.1プログラミング・モデルは、JSR 181:Web Services Metadata for the Java Platform仕様( JAX-WSとJAX-RPCのWebサービスのアノテーション・サポートの比較については、『Oracle Fusion Middleware Oracle WebLogic Server 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サービスを作成、デプロイ、および呼び出すための一般的なタスクのロードマップを示します。
注意: Oracle WebLogic ServerのJAX-WS実装は、Glassfishコミュニティが開発したJAX-WS Reference Implementation (RI)を拡張したものです(https://jax-ws.dev.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サービスを開発する |
|
JAX-RPCを使用してWebサービスを開発する |
|
Webサービスを保護する |
|
アップグレード |
|
次のOracle IDEツールを使用してWebサービスを構築することができます。
Oracle JDeveloper: エンド・ツー・エンドのWebサービスの開発に利用可能な、あらゆる機能を備えたOracleのJava IDEです。開発者は、JavaクラスやEJBを構築し、それらをWebサービスとして公開し、Oracle WebLogic Serverのインスタンスに自動的にデプロイし、実行中のWebサービスをすぐにテストすることができます。または、JDeveloperは、WSDL記述子からのWebサービスの作成に使用することもできます。JDeveloperはAntも認識します。このツールを使用して、クライアントのアセンブリや、サービスのアセンブリおよびデプロイ用のAntスクリプトを構築および実行することができます。詳細は、Oracle JDeveloperのオンライン・ヘルプを参照してください。JDeveloperのインストール方法については、『Oracle Fusion Middleware Oracle JDeveloperインストレーション・ガイド』を参照してください。
Oracle Enterprise Pack for Eclipse (OEPE) - WebLogic Webサービスの開発を容易にするEclipse IDEプラットフォームのプラグイン群を提供します。詳細については、Eclipse IDEプラットフォームのオンライン・ヘルプを参照してください。
このリリースで導入されたWebLogic Server Webサービスの新機能の一覧については、『Oracle WebLogic Serverの新機能』の「Webサービス」を参照してください。