ヘッダーをスキップ

Oracle Application Server Web Services開発者ガイド
10g(10.1.3.1.0)

B31868-01
目次
目次
索引
索引

戻る 次へ

3 OracleAS Web Servicesアーキテクチャとライフ・サイクル

この章では、Oracle Application Server Web Servicesを構成するコンポーネントおよび公開可能なサービス・アーチファクトの概要を説明します。これらのコンポーネントはJava API for XML-Based RPC(JAX-RPC)で定義されます。このAPIを使用すると、Javaテクノロジの開発者はSimple Object Access Protocol(SOAP)1.1仕様に従って、XMLベースのRPC機能を持つWebアプリケーションおよびWebサービスを構築できます。

アーキテクチャ

OracleAS Web Servicesスタックは、パフォーマンス、相互運用性および管理性の3つの大きな目標を念頭に置いて設計されています。この項では、SOAPベースの通信エンドポイントに対してエンタープライズ品質のインフラストラクチャを提供できるWebサービス・ランタイムの作成方法を説明します。

処理コンポーネント

Webサービス・リクエスト処理の各ステップは、ランタイム・インフラストラクチャの論理コンポーネントによって表されます。XMLメッセージがシステムに配信される際、エンドポイント実装に配信されるまでに経由するレイヤーは、プロトコル・ハンドラ、XMLプロセッサ、ポリシー強制パイプライン、JAX-RPCハンドラ、データ・バインディングです。レスポンス・メッセージは同じ各インフラストラクチャ内を逆に経由して配信されます。

図3-1    クライアントからサービスへのXMLメッセージ・フロー


画像の説明

この項では、各処理レイヤーの目的を説明します。必要な場合は、システムの機能および構成の詳細が記述されている他の項への参照を示してあります。

プロトコル・ハンドラ

プロトコル・ハンドラは、Webサービス・インフラストラクチャへのエントリ・ポイントを提供します。プロトコル・ハンドラは、トランスポート・プロトコルを介したSOAPメッセージの送受信に使用します。HTTPまたはJMSを介してメッセージの送受信を行うように、Webサービス・インフラストラクチャを構成できます。

HTTPを介してメッセージを送信する場合は、OracleAS Web ServicesスタックはWebサービス・メッセージのサービスへの送信にOracle HTTPクライアント・ライブラリを使用し、クライアントが送信したWebサービス・メッセージの受信にOC4Jサーブレット・エンジンを使用します。Oracleサーブレット環境のすべての機能および管理インフラストラクチャをWebサービスで使用できます。たとえば、HTTPまたはHTTPSを介して暗号化データ・ストリームを使用してWebサービスにアクセスすることができます。

JMSトランスポートは、様々なJMSプロバイダと連携するように構成することができます。JMSトランスポートは、Oracle Application Server付属のJMSインフラストラクチャを使用してアプリケーション・サーバーに組み込まれています。JMSは、SOAPメッセージの交換時にメッセージ・バス機能のサービス・クオリティを最大限に確保するために使用される場合がよくあります。

XML処理

SOAPメッセージはトランスポート・レイヤーから取得されると、SOAP with Attachments API for Java(SAAJ)と互換性のあるXMLメッセージ表現に変換されます。SAAJメッセージは、パフォーマンス向上と効率的なメモリー使用を目的としてOracleが最適化したXML解析テクノロジを使用して構成されます。このメッセージは、OC4Jが提供するJAX-RPC準拠のSOAP処理インフラストラクチャの基礎となります。SAAJメッセージはインスタンス化されると、処理スタックの次のレイヤーに配信されます。

SOAPリクエストは部分的にXMLではない場合もあります。たとえば、SOAPメッセージが添付ファイル付きで送信される場合があります。添付ファイルが使用されるのは、非XMLコンテンツをSOAPメッセージと一緒にパッケージ化する場合です。SAAJ実装もまた添付ファイルを処理します。

XMLメッセージのデフォルト処理は、メッセージ・ペイロードがSOAP 1.1またはSOAP 1.2準拠のエンベロープにエンコードされていることを想定していますが、SOAPを使用せずに直接HTTPを介してXMLメッセージを受信し、ディスパッチするようにOracleAS Web Servicesスタックを構成することも可能です。この場合、開発者は、SOAPプロトコルを認識しない既存のHTTPインフラストラクチャと直接統合するアプリケーションを作成できます。HTTPおよびURLを使用してシステムを記述するメッセージを定義することで、RESTアーキテクチャ・スタイルに準拠するようにアプリケーションを構築できます。

XML-over-HTTPメッセージングを使用するようにインフラストラクチャを構成した場合は、メッセージにアプリケーション・メッセージが直接含まれているのか、またはSOAPエンベロープがペイロードのトップレベル要素として含まれているのかが、インフラストラクチャで判断されます。メッセージがRAW XMLの場合は、処理レイヤーがヘッダーを持たないSOAPエンベロープ内にメッセージをラップします。このSOAPエンベロープは、以降のWebサービス処理要素で処理でき、処理のためエンドポイント実装に配信できます。

XMLメッセージは、次に、Webサービス・スタックのポリシー強制メカニズムで処理されます。

ポリシーの強制

OracleAS Web Servicesスタックは、ランタイム管理ポリシーを強制する管理チェーンを有効化するように、追加情報を使用して構成できます。これらのポリシーには、WS-Reliability、WS-Security、監査およびロギング機能などのWebサービス管理機能が含まれます。これらの機能の設定方法の詳細は、『Oracle Application Server Web Servicesアドバンスト開発者ガイド』の「Webサービスの管理」を参照してください。セキュリティ設定の詳細は、『Oracle Application Server Web Servicesセキュリティ・ガイド』を参照してください。有効化されたポリシーを、サービスに関連付けられたWSDLドキュメントに追加すると、クライアント・インターセプタ・パイプラインの自動構成がサポートされます。

OracleAS Web Servicesスタックがサポートしているプロトコルの1つに、SOAPメッセージの配信を保証するWS-Reliability標準があります。信頼性インフラストラクチャでは、WS-Reliabilityプロトコルに準拠した非同期の確認メッセージをシステム・インフラストラクチャが送受信できる追加機能がサポートされています。これは、Oracleクライアント・インフラストラクチャの拡張としてサポートされており、JAX-RPCのStubまたはCallオブジェクトを使用する場合に使用できます。

インターセプタ・チェーンは、OracleAS Web Services管理エージェント・パイプラインに委任されるようにも構成できます。これにより、OracleAS Web Services管理製品のサポートがあらかじめ組み込まれ、データ・センター全体でのWebサービスに対するポリシー管理をサポートする機能が提供されます。

管理インターセプタは、OC4J付属のシステム・サービスのランタイム・インフラストラクチャを提供します。アプリケーション固有のインターセプタは、JAX-RPC 1.1ハンドラAPIに適合する形でサポートされます。

JAX-RPCハンドラ

ハンドラは、アプリケーション固有のSOAPヘッダーを固有のロールまたはアクター属性に従って処理するように構成されます。JAX-RPCハンドラはSOAPメッセージのSAAJ表現にアクセスし、任意のレベルのSOAPメッセージに対して操作を実行できます。

インターセプタとJAX-RPCハンドラが連携することで、SOAP処理モデルが実現されます。これにより、Webサービス・エンドポイントが、特定のノード向けのSOAPヘッダーを選択して処理できます。次に、SOAPメッセージがシステムの他のノードに渡され、SOAPヘッダーが必要に応じて処理されます。

関連項目

ハンドラAPIの使用方法の詳細は、第16章「JAX-RPCハンドラの使用方法」および第17章「SOAPヘッダーの処理」を参照してください。  

データ・バインディング

多くのアプリケーションにおいて、XMLペイロードの各部分はJavaオブジェクトに変換され、変換されたJavaオブジェクトはアプリケーション・フレークワークによって使用されます。この機能は通常、データ・バインディングと呼ばれ、XMLデータの各部分をJavaクラス階層の各メンバーにバインドすることです。データ・バインディングのプロセスは、XMLからJavaへの変換を管理するシリアライズ・フレームワークを介して駆動されます。シリアライズ・フレームワークは拡張可能であり、開発者がXMLデータからJavaオブジェクトへのカスタム型マッピングを定義できます。

OC4Jランタイムには、SAAJメッセージの処理用に最適化された特別なプロバイダが実装されています。このプロバイダを使用する場合、データ・バインディングは実行されません。プロバイダを使用すると、SOAPメッセージのXMLペイロードを直接操作するアプリケーションを実装できます。

エンドポイント実装

Webサービス・スタックの前述の4つのレイヤーを通過後、アプリケーションのビジネス・ロジックを含むエンドポイント実装が起動されます。エンドポイントは通常のJavaクラス、Enterprise JavaBeanまたはプロバイダのいずれかです。JMSエンドポイント構成が有効な場合は、JMSキューもエンドポイントとして使用できます。

OracleAS Web Servicesコンテナでは、JavaクラスがWebサービスとして公開されるために準拠する必要がある要件はわずかです。エンドポイント実装がそのライフ・サイクル全体でコンテナとの間でより複雑な対話を必要とする場合は、エンドポイント実装は、JAX-RPC ServiceLifecycleインタフェースを実装できます。このインタフェースでは、サービスの初期化時およびリクエストの処理中に、エンドポイントへのWebサービスのリクエストの詳細が提供されます。

Javaクラスにはまた、Webサービス固有の注釈を追加できます。この注釈を使用して、Webサービス操作として公開するメソッド、サービスへのアクセスに使用可能なプロトコルなどを指定する追加構成情報を提供できます。

関連項目

OracleAS Web ServicesのJ2SE 5.0 JDK Web Service Annotationsサポートの詳細は、第11章「注釈を使用したWebサービスのアセンブル」を参照してください。 

Java Management Extensions(JMX)

管理ポリシーの強制にインターセプタ・パイプラインを使用できる一方で、Java Management Extensions(JMX)標準を使用したシステム管理機能がOracleAS Web Servicesスタックに公開されています。JMXを使用することで、管理者はOC4Jシステムの正常動作に関する重要なメトリックを収集し、動作中のシステムの構成を変更できます。JMXのメトリックおよび操作は、Application Server ControlツールのWebサービス・コンソールから使用可能です。

開発ツール

OracleAS Web Services実装のもう1つの主要な機能は、エンドポイント実装の開発およびデプロイを可能にする開発ツールです。Webサービスは、コマンドライン・ツールまたはJavaのIntegrated Development Environment(IDE)を使用して開発できます。

WebServicesAssembler(WSA)はコマンドライン・ツールであり、WebサービスをWSDLまたはエンドポイント実装クラスからデプロイするために必要なアーチファクトの生成に使用します。WSAは、スクリプト化された環境におけるWebサービスの自動作成に役に立ちます。理由は、WSAは、コマンドラインであることに加えて、その機能をAntタスクとしても公開するからです。

Oracle JDeveloperは、フル機能を装備したOracleのJava IDEであり、Webサービスのエンドツーエンド開発に使用可能です。開発者は、JavaクラスまたはEJBを作成し、Webサービスとして公開し、Oracle Application Serverのインスタンスに自動的にデプロイし、ただちにWebサービスの動作テストを行うことができます。または、Oracle JDeveloperを使用して、WSDL記述からWebサービスを作成することもできます。WebServicesAssemblerと同様に、Oracle JDeveloperもAntに対応しています。JDeveloperを使用して、クライアントのアセンブルおよびサービスのアセンブルとデプロイを行うAntスクリプトを作成し、実行できます。

関連項目

webServicesAssemblerツールを使用してWebサービス・アーチファクトをアセンブルする方法の詳細は、第18章「WebServicesAssemblerの使用方法」を参照してください。 

Webサービス開発のライフ・サイクル

この項では、Webサービスを開発する際の複数の開発段階について説明します。

  1. 実装の作成

  2. Webサービスのアセンブル

  3. クライアントのアセンブル

  4. Webサービスのデプロイ

  5. Webサービスのテスト

  6. デプロイ後タスクの実行

実装の作成

Webサービスとして公開する実装を作成します。OracleAS Web Servicesでは、次のような様々なアーチファクトをWebサービスとして公開できます。

これらのアーチファクトは、任意のツールまたはIDEを使用して開発できます。Oracle Oracle JDeveloperを使用すると、Javaクラス、JMSキューおよびJMSトピック、PL/SQLプロシージャ、CORBAサーバント・オブジェクトおよびEJBを作成できます。

Webサービスのアセンブル

OracleAS Web Servicesでは、Webサービスをアセンブルするための様々なコマンドが提供されています。WSDLから開始するトップダウン方式のコマンドと、Javaクラス、EJB、データベース・アーチファクトまたはJMSキューから開始するボトムアップ方式のコマンドがあります。これらのコマンドはコマンドラインでの入力、またはAntスクリプトへのタスクとしての記述が可能です。

Oracle JDeveloperは、Antに完全対応しているため、Antスクリプトの構築および実行に使用できます。また、Oracle JDeveloperには、いくつかのWebサービス生成コマンドとまったく同様に動作する設計ウィザードが装備されています。これらのウィザードを使用することで、開発プロセスをスピードアップでき、ビルド・スクリプト作成のステップを省略できます。

最新のJava IDE(Eclipseなど)もAntに対応しています。Oracle JDeveloperを使用しない場合は、これらのIDEを使用してAntスクリプトを実行できます。

たとえば、WSDLの生成やサービスのクオリティ機能の追加など、他のOracleAS Web Servicesコマンドを起動する必要がある場合は、コマンドラインまたはAntタスクで起動できます。これらのコマンドをサポートする設計ウィザードは用意されていませんが、AntタスクはOracle JDeveloperで直接実行できます。

関連項目

Webサービスをアセンブルするコマンドの詳細は、「Webサービス・アセンブリ・コマンド」を参照してください。  

クライアントのアセンブル

OracleAS Web Servicesには、J2SEおよびJ2EEのクライアント・コードをアセンブルするコマンドが用意されています。

Oracle JDeveloperは、OC4J J2SE Webサービス・クライアントをサポートします。これは、WebサービスWSDL記述からのJavaスタブの作成を可能にするという形で行われます。作成したスタブを使用して、既存のWebサービスにアクセスできます。

Webサービスのデプロイ

Webサービスのデプロイは、Java言語のコマンドまたはAntタスクを使用して実行できます。Antタスクは、ビルド・ファイルへの記述、またはOracle JDeveloperからの直接発行が可能です。また、Oracle JDeveloperには、デプロイ可能なEARファイルを構成してデプロイするデプロイ・ウィザードが用意されています。

デプロイはApplication Server Controlでも実行できます。ただし、このツールはEARファイルの構成やそのコンテンツの変更には使用できません。

Webサービスのテスト

OracleAS Web Servicesスタックでは、デプロイされたWebサービスごとにWebサービス・テスト・ページが提供されます。サービス・エンドポイントのアドレスをWebブラウザに入力することで、Webサービスによって公開されている操作にアクセスできます。対話式のページを使用して、入力した値による操作を実行できます。

WebServicesAssemblerコマンドライン・ツールを使用すると、Webサービスの各メソッドのJUnitフレームワークに関して適切なテストを生成できます。WebServicesAssemblerツールを使用して、assembleplsqlAssembleおよびgenProxyコマンドに対するJUnitテストを生成すると、Oracle JDeveloperはこれらのテストをデフォルトでインポートできます。

デプロイ後タスクの実行

デプロイ後に実行可能なタスクがいくつか存在します。これらのうちのいくつかは、セキュリティ・ポリシーやロギング・ポリシーの変更など、Webサービスのパフォーマンスの微調整に関するものです。また、キー・ストア構成の変更など、Webサービスの大幅な変更に関するものもあります。これらの変更は、動的に行うことが可能なものもありますが、Webサービスの再デプロイを必要とするものもあります。これらのタスクを実行する場合は、Oracle Application Server Controlを使用します。これらのタスクの詳細は、Application Server Controlのオンライン・ヘルプを参照してください。


戻る 次へ
Oracle
Copyright © 2006 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引