以下の節では、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 サービスが、ほとんどのプログラミング環境や場合によっては人が生成または解析できる、単純な 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 サービスは Web Services for Java EE 1.2 仕様 (http://www.jcp.org/en/jsr/detail?id=109
) に従って実装されています。この仕様では、Java で Web サービスを実装するための標準の Java EE 実行時アーキテクチャを定義しています。また、標準 Java EE Web サービスのパッケージ化形式、デプロイメント モデル、実行時サービスについても記述されており、そのすべてを WebLogic Web サービスで実装しています。
以降の節で説明する内容は、次のとおりです。
Web Services for Java EE 1.2 仕様 (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 および 1.2」を参照してください。
Web サービスの開発には、ボトムアップとトップダウンという 2 つのアプローチがあります。以降の節でそれぞれのアプローチについて説明します。
ボトムアップ アプローチでは、JWS ファイルを最初から開発します。JWS ファイルを作成したら、Web Services for Java EE 1.2 仕様に従って、jwsc
WebLogic Web サービス Ant タスクを使用して JWS ファイルをコンパイルします (「Web Services for Java EE 1.2」を参照)。
jwsc
Ant タスクでは、JWS ファイルは常にプレーン Java クラスにコンパイルされます。ステートレス セッション EJB が実装されるのは、JWS ファイルにステートレス セッション EJB を実装している場合のみです。jwsc
Ant タスクは、Web サービスの補助的なアーティファクトもすべて生成し、アーカイブ ファイルにすべてをパッケージ化して、WebLogic Server にデプロイできるエンタープライズ アプリケーションを作成します。
jwsc
Ant タスクのデフォルトでは、Web サービスはすべての標準 WAR アーティファクトとともに標準の Web アプリケーション WAR ファイルにパッケージ化されます。ただし、この WAR ファイルには、それが Web サービスでもあることを示す追加のアーティファクトが含まれています。追加のアーティファクトには、デプロイメント記述子ファイル、Web サービスのパブリック規約を記述した WSDL ファイルなどがあります。jwsc
を複数の JWS ファイルに対して実行する場合は、複数の 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
に用意されているドキュメントやサンプルを参考にしてください。
表 1-1 JAX-WS の利点
利点 | 説明 |
---|---|
JAXB 2.1 を使用したデータ バインディング |
JAX-WS 2.1 では、Java 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 プログラミング モデルは、Web Services Metadata for the Java Platform (JSR 181) 仕様 ( JAX-WS と JAX-RPC の Web サービスのアノテーション サポートの比較については、『Oracle Fusion Middleware Oracle WebLogic Server 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 サービスを実装する手順
主要なタスク | サブタスクと追加情報 |
---|---|
サポートされる標準を確認する |
|
サンプルを実行する |
|
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 Installation Guide for Oracle JDeveloper』を参照してください。
Oracle Enterprise Pack for Eclipse (OEPE) - WebLogic Web サービスの開発を容易にする Eclipse IDE プラットフォームのプラグイン群を提供します。詳細については、Eclipse IDE プラットフォームのオンライン ヘルプを参照してください。
このリリースで導入された WebLogic Server Web サービスの新機能の一覧については、『Oracle Fusion Middleware Oracle WebLogic Server の新機能』の「Web サービス」を参照してください。