WebLogic Web サービス入門

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

WebLogic Web サービスの概要

以下の節では、WebLogic Server で実装される 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 サービスは Web Services for Java EE 1.2 仕様に従って実装されています。この仕様では、Java で Web サービスを実装するための標準の Java EE 実行時アーキテクチャを定義しています。また、標準 Java EE Web サービスのパッケージ化形式、デプロイメント モデル、実行時サービスについても記述されており、そのすべてを WebLogic Web サービスで実装しています。

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

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

Web Services for Java EE 1.2 仕様では、Java EE 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 仕様で定義された標準のアノテーションと、WebLogic 固有のアノテーションがあり、作成する Web サービスのタイプに応じて使い分けます。

このリリースの WebLogic Server では、Java API for XML-Based Web Services 2.1 (JAX-WS)Java API for XML-Based RPC 1.1 (JAX-RPC) の Web サービスがサポートされています。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 メッセージのデジタル署名や暗号化を指定できます (WS-Security 仕様で規定)。このような WebLogic Web サービスの高度な機能は、WS-Policy ファイルを使用してコンフィグレーションします。WS-Policy ファイルは WS-Policy 仕様に準拠する XML ファイルです。セキュリティや信頼性のあるメッセージングのコンフィグレーションを記述するための、セキュリティに固有の XML 要素や Web サービスの信頼性のあるメッセージングに固有の XML 要素が含まれています。WS-Policy 仕様の詳細については、「Web Services Policy Framework (WS-Policy) 1.2」を参照してください。

コンパイル モデル- jwsc Ant タスク

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 ファイルにパッケージ化するかを選択できます。

 


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 サービスでプログラミングする場合は、https://jax-ws.dev.java.net に用意されているドキュメントやサンプルを参考にしてください。

注意 : JAX-WS Web サービスでは、コンテキスト伝播はサポートされません。詳細については、『WebLogic Server アプリケーションの開発』の「コンテキスト伝播のプログラミング」を参照してください。

表 1-1 JAX-WS の利点
利点
説明
SOAP 1.2 のサポート
JAX-WS では SOAP 1.2 と 1.1 がサポートされますが、JAX-RPC では SOAP 1.1 しかサポートされません。
JAXB 2.1 を使用したデータ バインディング
JAX-WS 2.1 では、Java Architecture for XML Binding (JAXB) 2.1 仕様と XML Schema が完全にサポートされます。JAXB を使用すると、XML スキーマを Java コード表現に、簡単にバインドできます。これにより、XML 自体に関する知識がそれほどなくても、XML データと処理関数を、Java テクノロジに基づくアプリケーションに、簡単に組み込むことができます。詳細については、『JAX-WS を使用した WebLogic Web サービスの開始』の「JAXB データ バインディングの使用」を参照してください。
一方、JAX-RPC 形式の Web サービスで使用できる組み込みデータ型やユーザ定義のデータ型は、広範ではありますが、『JAX-RPC を使用した WebLogic Web サービスの開始』の「JAXB データ バインディングの使用」で説明されているものに限定されます。
MTOM を使用したドキュメントの添付
JAX-WS 2.1 は、MTOM (メッセージ転送最適化メカニズム) をサポートします。MTOM は、XOP (XML Binary Optimized Packaging) と共に、xs:base64Binaryxs:hexBinary などの XML バイナリ データを、ネットワーク上で最適に転送する方法を定義します。

注意 : このリリースの WebLogic Server では、MTOM は JAX-RPC 1.1 形式の Web サービスに関してもサポートされます。

Web サービス アノテーション
JAX-WS 2.1 プログラミング モデルは、「Web Services Metadata for the Java Platform (JSR 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 サービスを作成、デプロイ、および呼び出すための一般的なタスクのロードマップを示します。

表 1-2 WebLogic Web サービスを実装する手順 
主要なタスク
サブタスクと追加情報
サポートされる標準を確認する
サンプルを実行する
JAX-WS を使用して Web サービスを開発する
JAX-RPC を使用して Web サービスを開発する
Web サービスを保護する
アップグレードする
JAX-WS: JAX-WS を 10.3 にアップグレードするために必要な手順はない

 


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

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


  ページの先頭       前  次