Oracle Application Server アプリケーション開発者ガイド 10gリリース2(10.1.2) B15629-01 |
|
アプリケーションのビジネス・ロジックをWebサービスとして公開すると、ビジネス・パートナおよびその他のクライアントは、そのビジネス・ロジックにアクセスできます。これらのクライアントには、Webベース・クライアント(JSPなど)および非Webベース・クライアント(スタンドアロンのJavaアプリケーションなど)が含まれます。
アプリケーションのビジネス・ロジックをWebサービスとして公開する場合は、クライアントがコールできるメソッドおよびそのパラメータを指定します。クライアント・アプリケーションの開発者は、公開したメソッド用のクライアント・サイドのプロキシ・クラス(プロキシ・スタブ)、およびメソッド名とそのパラメータを指定するWSDLファイルをダウンロードします。その後、開発者は、プロキシ・クラスで提供されているメソッドをコールして、リモートWebサービスと透過的に対話します。プロキシ・クラスは、JavaオブジェクトとSOAP間のマーシャリングと非マーシャリングや、公開したWebサービス・ロケーションとの間でのSOAPメッセージの送受信など、Webサービスとのリモート対話をすべて管理します。
この章では、サンプル・アプリケーション2でWebサービスを有効にする方法について説明します。また、JSPクライアント・アプリケーションを作成してWebサービスにアクセスする方法についても説明します。JSPクライアントは別のアプリケーションの一部です。JSPは、公開したWebサービスを使用するために、外部のビジネス・パートナが実行できる作業をシミュレートします。
この章の項目は次のとおりです。
Webサービスとして公開するサンプル・アプリケーション2のビジネス・ロジックは、EmployeeBenefitManager
ステートレス・セッションのEJBに含まれます。Webサービスのクライアントは、リモート・インタフェースに表示されるメソッドを起動できます。
前の章で、EmployeeBenefitManager
ステートレスSession Beanが、サンプル・アプリケーションのビジネス・ロジックを提供することを説明しました。このSession Beanはセッション・ファサード設計パターンに基づいて、別のEJBコンポーネントを使用してタスクを実行します。
サンプル・アプリケーションでWebサービスを有効にするには、次の手順を実行します。
ejb-jar.xml
とorion-ejb-jar.xml
)を含むJARファイルを作成します。これはJ2EEアプリケーション用の通常のJARファイルです。Webサービスのため、通常のJARファイルと異なることはありません。
構成ファイルは、JARファイルの位置、公開したサンプル・アプリケーションのメソッドにWebサービスのクライアントがアクセスできるURL、Webサービスとして公開するビジネス・ロジックを提供するEJBの名前などの情報を提供します。
オプションで、Javaインタフェース・オブジェクトを追加することもできます。このオブジェクトは、Webサービスで公開するEJBのメソッドを識別するマーカーとして動作します。このオブジェクトを追加しない場合、Web Services AssemblyツールはEJBのリモート・インタフェースで各メソッドを公開します。このアプリケーションの例ではSession Beanの各メソッドが公開されるため、Javaインタフェース・オブジェクトを追加する必要はありません。
WebServicesAssembler.jar
)を実行して、EARファイルを作成します。
サンプル・アプリケーション2の構成ファイルws-assemble.xml
には、次の行が含まれます。
<web-service> <display-name>Employee Benefit Manager Web Service</display-name> <destination-path>build/empbft-ws.ear</destination-path> <temporary-directory>.</temporary-directory> <context>/employeebenefitmanager</context> <stateless-session-ejb-service> <path>build/empbft/empbft-ejb.jar</path> <uri>/Service</uri> <ejb-name>EmployeeBenefitManager</ejb-name> </stateless-session-ejb-service> </web-service>
この場合、ファイルにwsdl-gen
要素が指定されていません。そのため、Web Services Assemblyツールは、EARファイルに含めるWSDLファイルを生成しません。実行中、クライアントがWSDLをリクエストすると、OracleAS Web Servicesのランタイムがそのクライアントに対してWSDLを生成します。
表11-1に構成ファイルの要素を示します。すべての要素の詳細は、次の関連項目を参照してください。
Web Services Assemblyツールを実行するコマンドは次のとおりです。
prompt> java -jar $ORACLE_HOME/webservices/lib/WebServicesAssembler.jar -config ws-assemble.xml
Web Services Assemblyツールは次の操作を実行します。
uri
要素から取得)を設定します。このURLを使用して、Webサービスのホームページにアクセスします。クライアント・アプリケーションの開発者も、問合せ文字列を追加してこのURLを使用し、Webサービス用のWSDLファイルおよびプロキシ・クラスをダウンロードします。
application.xml
ファイルを生成します。Web Services Assemblyツールは、context
要素およびdisplay-name
要素からの値を、このファイルに移入します。また、パス要素で指定したJARファイルの名前をapplication.xml
ファイルのejb
要素に挿入します。
web.xml
ファイルを生成します。Web Services Assemblyツールは、構成ファイルのuri
要素からWebサービスのエンドポイントURLを取得し、web.xml
ファイルに挿入します。
表11-2にEARファイルの内容を示します。このファイルには、empbft-ejb.jar
、empbft-ws_web.war
およびapplication.xml
の3つの主要なファイルが含まれます。
図11-3にEARファイルの内容を示します。
Web Services AssemblyツールによってEARファイルが生成された後、アプリケーションをデプロイできます。次のコマンドでは、dcmctl
コマンドを使用してアプリケーションをデプロイします。
prompt> cd $ORACLE_HOME/dcm/bin prompt> ./dcmctl deployApplication -file /home/joe/build/empbft-ws.ear -a empbft
ホームページからWebサービスをテストできます。
「Web Services Assemblyツールの構成ファイルの作成」で作成した構成ファイルで、ホームページのURLを指定します。このURLはcontext
要素とuri
要素の値が組み合された値です。この場合、context
の値は/employeebenefitmanager
、uri
の値は/Service
です。したがって、サーブレットのURLは/employeebenefitmanager/Service
となります。
図11-4にホームページを示します。
図11-5に、listBenefitsOfEmployee
メソッドのパラメータ・ページを示します。このメソッドには従業員IDが必要です。このメソッドの場合、「long value」を実際の従業員IDの値(たとえば188
)に置き換えます。
図11-6に、listBenefitsOfEmployee
メソッドに戻されるXMLを示します。
ホームページは、基本的にはWebサービスのテストおよびトラブルシューティングに使用するツールで、未加工のXMLデータを表示します。クライアントがメソッドを起動すると、リクエストがプロキシ・クラスを通過します。このプロキシ・クラスはXMLデータを解析し、メソッドが戻すもののみを戻します。クライアントは未加工のXMLデータを解析する必要はありません。
図11-7に、「Invoke」をクリックした後の動作を示します。
公開したメソッドをアプリケーションでテストした後、他の開発者に対して、公開したメソッドへのWebサービスを介したアクセスを許可できます。この項では、サンプル・アプリケーション2のEmployeeBenefitManager
クラスによって提供されるメソッドを起動するクライアント・アプリケーションについて説明します。
サンプル・クライアントはMVC設計パターン(第2章「アプリケーションの設計」を参照)を使用します。MVCは、ビュー(データの表示方法を決定)からモデル(ビジネス・ロジックを処理)を分離します。コントローラはリクエストを適切なクラスに送信します。
サンプル・クライアントの、Webサービスを起動する部分がモデルです。モデルを構成するクラスはリクエストをビジネス・ロジック処理するため、ハンドラ・クラスと呼ばれます。
ハンドラ・クラスは、生成されたプロキシ・クラスを使用してWebサービスを起動します。このプロキシ・クラスは、Webサービスを提供するホストおよびアプリケーションに静的にバインドされています。
プロキシ・クラスを使用するクライアントを作成するかわりに、Webサービスを動的に起動するクライアントを作成できます。WSDLファイルを使用して、独自のクライアントを最初から生成することもできます。
この項で説明するサンプル・クライアントは、標準J2EEアプリケーションです。したがって、このサンプル・クライアントはJ2EEアプリケーションのガイドラインに基づいています。異なる点は、クライアント・アプリケーションが、生成されたプロキシ・クラスをWARファイルに含んでいることです。
Webサービスはその他のタイプのクライアント(JSP、スタンドアロンのJavaアプリケーションなど)も使用できます。これらのクライアント・アプリケーションを使用する場合は、これらのタイプのアプリケーションのガイドラインに従う必要があります。
クライアントはアプリケーションと同じマシン、異なるマシンまたは異なるネットワーク上のマシンで起動することができます。
生成されたプロキシ・クラスを使用してクライアントを開発する場合は、次の手順を実行します。
EmployeeBenefitManager
Beanのプロキシ・クラス(zipファイルで格納)をダウンロードします。プロキシ・クラスのダウンロードに使用するURLは次のとおりです。
http://<hostname>:<port>/employeebenefitmanager/Service?proxy_jar
WSDLファイルのダウンロードに使用するURLは次のとおりです。
http://<hostname>:<port>/employeebenefitmanager/Service?WSDL
WEB-INF/lib
ディレクトリにプロキシ・クラスを格納します。
application.xml
ファイルを含むEARファイルを作成します。
図11-8に、Webサービス・クライアントのファイルの構成を示します。
Webサービス・クライアントはMVC設計パターン(第2章「アプリケーションの設計」を参照)を使用します。このパターンは、クライアントによるリクエストへの応答方法を示します。
performAction
と呼ばれるメソッドがあります。サーブレットは、ハンドラ・クラスのこのメソッドを起動します。
EmployeeBenefitManagerProxy
)を取得します。インスタンスが存在しない場合は、次のように指定して作成します。
EmployeeBenefitManagerProxy proxy = new EmployeeBenefitManagerProxy();
Webサービス・クライアントでは、セッションの間、SessionHelper
クラスがプロキシ・クラスをインスタンス化および維持します。
Object[] model = proxy.listBenefits();
Webサービス・クライアントでは、ハンドラ・クラスはメソッドの結果を属性としてリクエストに格納します。その後、ハンドラ・クラスはJSPにリクエストを転送します。JSPは、属性に対応付けられたJavaBeanオブジェクトを転送されたリクエストから取得し、ページにデータを表示します。
クライアントを起動すると、次の画面が表示されます。
http://host:port/benefitmgr
hostを、クライアント・アプリケーションをデプロイしたホスト名に置き換えます。portを、Oracle HTTP Serverがリスニングしているポート番号に置き換えます。
図11-9にクライアントの最初のページを示します。
メソッドにパラメータが必要ない場合は、クライアントがプロキシ・クラスを介してメソッドを起動します。プロキシ・クラスはリクエストを適切なXML形式にパッケージし、ホストに送信します。このフローは、Webサービス・アプリケーションをテストした場合と同様のフローです。
メソッドにパラメータが必要な場合は、クライアントによってパラメータに値を入力できるページが表示されます。たとえば、「Add New Benefit」オプションをクリックすると、クライアントによって次のページが表示されます。
データを入力して発行ボタンをクリックすると、プロキシ・クラスによってリクエストが送信されます。
|
Copyright © 2003, 2004, Oracle. All Rights Reserved. |
|