ヘッダーをスキップ

Oracle Application Server アプリケーション開発者ガイド
10gリリース2(10.1.2)
B15629-01
目次
目次
索引
索引

戻る 次へ

11
アプリケーションでのWebサービスの有効化

アプリケーションのビジネス・ロジックをWebサービスとして公開すると、ビジネス・パートナおよびその他のクライアントは、そのビジネス・ロジックにアクセスできます。これらのクライアントには、Webベース・クライアント(JSPなど)および非Webベース・クライアント(スタンドアロンのJavaアプリケーションなど)が含まれます。

アプリケーションのビジネス・ロジックをWebサービスとして公開する場合は、クライアントがコールできるメソッドおよびそのパラメータを指定します。クライアント・アプリケーションの開発者は、公開したメソッド用のクライアント・サイドのプロキシ・クラス(プロキシ・スタブ)、およびメソッド名とそのパラメータを指定するWSDLファイルをダウンロードします。その後、開発者は、プロキシ・クラスで提供されているメソッドをコールして、リモートWebサービスと透過的に対話します。プロキシ・クラスは、JavaオブジェクトとSOAP間のマーシャリングと非マーシャリングや、公開したWebサービス・ロケーションとの間でのSOAPメッセージの送受信など、Webサービスとのリモート対話をすべて管理します。

この章では、サンプル・アプリケーション2でWebサービスを有効にする方法について説明します。また、JSPクライアント・アプリケーションを作成してWebサービスにアクセスする方法についても説明します。JSPクライアントは別のアプリケーションの一部です。JSPは、公開したWebサービスを使用するために、外部のビジネス・パートナが実行できる作業をシミュレートします。

関連項目

『Oracle Application Server Web Services 開発者ガイド』 

この章の項目は次のとおりです。

11.1 サンプル・アプリケーション2でのWebサービスの有効化

Webサービスとして公開するサンプル・アプリケーション2のビジネス・ロジックは、EmployeeBenefitManagerステートレス・セッションのEJBに含まれます。Webサービスのクライアントは、リモート・インタフェースに表示されるメソッドを起動できます。

前の章で、EmployeeBenefitManagerステートレスSession Beanが、サンプル・アプリケーションのビジネス・ロジックを提供することを説明しました。このSession Beanはセッション・ファサード設計パターンに基づいて、別のEJBコンポーネントを使用してタスクを実行します。

サンプル・アプリケーションでWebサービスを有効にするには、次の手順を実行します。

  1. パラメータのデータ型および戻り値が、Webサービスで有効であることを確認します。

    関連項目

    有効なデータ型の一覧については、『Oracle Application Server Web Services 開発者ガイド』を参照してください。 

  2. クラス・ファイルおよびデプロイメント・ディスクリプタ(ejb-jar.xmlorion-ejb-jar.xml)を含むJARファイルを作成します。

    これはJ2EEアプリケーション用の通常のJARファイルです。Webサービスのため、通常のJARファイルと異なることはありません。

  3. 構成ファイルを作成して、次の手順で実行するWeb Services Assemblyツールに入力値を提供します。

    関連項目

    「Web Services Assemblyツールの構成ファイルの作成」 

    構成ファイルは、JARファイルの位置、公開したサンプル・アプリケーションのメソッドにWebサービスのクライアントがアクセスできるURL、Webサービスとして公開するビジネス・ロジックを提供するEJBの名前などの情報を提供します。

    オプションで、Javaインタフェース・オブジェクトを追加することもできます。このオブジェクトは、Webサービスで公開するEJBのメソッドを識別するマーカーとして動作します。このオブジェクトを追加しない場合、Web Services AssemblyツールはEJBのリモート・インタフェースで各メソッドを公開します。このアプリケーションの例ではSession Beanの各メソッドが公開されるため、Javaインタフェース・オブジェクトを追加する必要はありません。

    関連項目

    Javaインタフェース・オブジェクトの詳細は、『Oracle Application Server Web Services 開発者ガイド』を参照してください。 

  4. Web Services Assemblyツール(WebServicesAssembler.jar)を実行して、EARファイルを作成します。

    関連項目

    「Web Services Assemblyツールの実行」 

  5. EARファイルをデプロイします。

  6. 公開したメソッドをテストします。

    関連項目

    「Webサービスのホームページからの公開メソッドのテスト」 

11.1.1 Web Services Assemblyツールの構成ファイルの作成

サンプル・アプリケーション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に構成ファイルの要素を示します。すべての要素の詳細は、次の関連項目を参照してください。

関連項目

『Oracle Application Server Web Services 開発者ガイド』 

表11-1    Web Services Assemblyツールに対する構成ファイルの要素 
要素  説明 

web-service 

これは構成ファイルの最上位の要素です。 

display-name 

Web Services Assemblyツールは、application.xmlファイルのdisplay-name要素にこの値を指定します。 

destination-path 

この要素は、Web Services Assemblyツールによって生成されたEARファイルの名前および位置を指定します。 

temporary-directory 

この要素は、Web Services Assemblyツールが一時ファイルを格納できるディレクトリを指定します。 

context 

Web Services Assemblyツールは、application.xmlファイルのcontext-root要素にこの値を指定します。

この要素は、アプリケーションのWebサービスの情報をダウンロードするためにクライアントが使用するURLの前半を指定します。URLの後半はuri要素で指定します。 

stateless-session-ejb-service 

これは、Webサービスを提供するステートレスSession Beanの親要素です。 

path 

この要素は、ステートレスSession Beanを含むJARファイルを指定します。 

uri 

Web Services Assemblyツールは、web.xmlファイルのurl-pattern要素にこの値をコピーします。

この要素は、アプリケーションのWebサービスの情報をダウンロードするためにクライアントが使用するURLの後半を提供します。このURLの前半は、context要素で指定します。 

ejb-name 

この要素は、ステートレスSession Beanの名前を指定します。 

11.1.2 Web Services Assemblyツールの実行

Web Services Assemblyツールを実行するコマンドは次のとおりです。

prompt> java -jar $ORACLE_HOME/webservices/lib/WebServicesAssembler.jar -config ws-assemble.xml

Web Services Assemblyツールは次の操作を実行します。

11.1.3 アプリケーションのデプロイ

Web Services AssemblyツールによってEARファイルが生成された後、アプリケーションをデプロイできます。次のコマンドでは、dcmctlコマンドを使用してアプリケーションをデプロイします。

prompt> cd $ORACLE_HOME/dcm/bin
prompt> ./dcmctl deployApplication -file /home/joe/build/empbft-ws.ear -a empbft

11.1.4 Webサービスのホームページからの公開メソッドのテスト

ホームページからWebサービスをテストできます。

  1. Webサービスのホームページを開きます。

    「Web Services Assemblyツールの構成ファイルの作成」で作成した構成ファイルで、ホームページのURLを指定します。このURLはcontext要素とuri要素の値が組み合された値です。この場合、contextの値は/employeebenefitmanageruriの値は/Serviceです。したがって、サーブレットのURLは/employeebenefitmanager/Serviceとなります。

    図11-4にホームページを示します。

    図11-4    Webサービスのホームページ


    画像の説明

  2. メソッドをクリックします。メソッドのパラメータ値を入力できるページが表示されます。

  3. メソッドにパラメータ値がある場合は、パラメータ値を入力します。

    図11-5に、listBenefitsOfEmployeeメソッドのパラメータ・ページを示します。このメソッドには従業員IDが必要です。このメソッドの場合、「long value」を実際の従業員IDの値(たとえば188)に置き換えます。

    図11-5    パラメータ値の入力ページ


    画像の説明

  4. パラメータ・ページの「Invoke」をクリックして、メソッドを起動します。

    図11-6に、listBenefitsOfEmployeeメソッドに戻されるXMLを示します。

    ホームページは、基本的にはWebサービスのテストおよびトラブルシューティングに使用するツールで、未加工のXMLデータを表示します。クライアントがメソッドを起動すると、リクエストがプロキシ・クラスを通過します。このプロキシ・クラスはXMLデータを解析し、メソッドが戻すもののみを戻します。クライアントは未加工のXMLデータを解析する必要はありません。

    図11-6    listBenefitsOfEmployeeメソッドの戻り値


    画像の説明

「Invoke」をクリックした後の動作

図11-7に、「Invoke」をクリックした後の動作を示します。

  1. 「Invoke」をクリックすると、ブラウザはサーブレットとして実装されているホームページにHTTPリクエストを送信します。リクエストには、必要に応じて、起動するメソッドおよびそのメソッドのパラメータ値についての情報が含まれます。

  2. ホームページのサーブレットは、情報が含まれたXML文書を作成し、SOAPメッセージとしてOracleAS Web Servicesサーブレットに送信します。

  3. OracleAS Web Servicesサーブレットは、XML文書を読み取り、Javaオブジェクトを作成してメソッドを起動します。

  4. Javaオブジェクトは指定したEJBでメソッドを起動します。

  5. EJBはJavaオブジェクトに結果を戻します。

  6. JavaオブジェクトはOracleAS Web Servicesサーブレットに結果を戻します。

  7. OracleAS Web Servicesサーブレットは、XML文書を作成し、そのXML文書に結果を挿入します。その後、そのXML文書をホームページのサーブレットに送信します。

  8. ホームページのサーブレットは、そのXML文書をクライアントに戻します。

    図11-7    リクエスト・フロー


    画像の説明

11.2 Webサービス・クライアント・アプリケーションの作成

公開したメソッドをアプリケーションでテストした後、他の開発者に対して、公開したメソッドへのWebサービスを介したアクセスを許可できます。この項では、サンプル・アプリケーション2のEmployeeBenefitManagerクラスによって提供されるメソッドを起動するクライアント・アプリケーションについて説明します。

11.2.1 Webサービス・クライアントの設計

サンプル・クライアントはMVC設計パターン(第2章「アプリケーションの設計」を参照)を使用します。MVCは、ビュー(データの表示方法を決定)からモデル(ビジネス・ロジックを処理)を分離します。コントローラはリクエストを適切なクラスに送信します。

サンプル・クライアントの、Webサービスを起動する部分がモデルです。モデルを構成するクラスはリクエストをビジネス・ロジック処理するため、ハンドラ・クラスと呼ばれます。

ハンドラ・クラスは、生成されたプロキシ・クラスを使用してWebサービスを起動します。このプロキシ・クラスは、Webサービスを提供するホストおよびアプリケーションに静的にバインドされています。

Webサービスを動的に起動するWebサービス・クライアント

プロキシ・クラスを使用するクライアントを作成するかわりに、Webサービスを動的に起動するクライアントを作成できます。WSDLファイルを使用して、独自のクライアントを最初から生成することもできます。

関連項目

クライアントのタイプについては、『Oracle Application Server Web Services 開発者ガイド』を参照してください。 

Webサービス・クライアントのその他の設計方法

この項で説明するサンプル・クライアントは、標準J2EEアプリケーションです。したがって、このサンプル・クライアントはJ2EEアプリケーションのガイドラインに基づいています。異なる点は、クライアント・アプリケーションが、生成されたプロキシ・クラスをWARファイルに含んでいることです。

Webサービスはその他のタイプのクライアント(JSP、スタンドアロンのJavaアプリケーションなど)も使用できます。これらのクライアント・アプリケーションを使用する場合は、これらのタイプのアプリケーションのガイドラインに従う必要があります。

クライアントはアプリケーションと同じマシン、異なるマシンまたは異なるネットワーク上のマシンで起動することができます。

11.2.2 Webサービス・クライアントの開発手順

生成されたプロキシ・クラスを使用してクライアントを開発する場合は、次の手順を実行します。

  1. 第11.1項「サンプル・アプリケーション2でのWebサービスの有効化」で作成したサンプル・アプリケーションをデプロイしたホストから、EmployeeBenefitManager Beanのプロキシ・クラス(zipファイルで格納)をダウンロードします。

    プロキシ・クラスのダウンロードに使用するURLは次のとおりです。

    http://<hostname>:<port>/employeebenefitmanager/Service?proxy_jar
    
    
  2. ZIPファイルをCLASSPATHに追加します。

  3. WSDLファイルをダウンロードします。このファイルには、公開したメソッドおよびそのメソッドに必要なパラメータの説明があります。

    WSDLファイルのダウンロードに使用するURLは次のとおりです。

    http://<hostname>:<port>/employeebenefitmanager/Service?WSDL
    
    
  4. ハンドラ・クラスを作成して、プロキシ・クラスのメソッドを起動します。

  5. JSPファイル、MVCクラスおよびダウンロードしたプロキシ・クラスを含むWARファイルを作成します。Webアプリケーションの場合は、WARファイルのWEB-INF/libディレクトリにプロキシ・クラスを格納します。

  6. WARファイルおよびapplication.xmlファイルを含むEARファイルを作成します。

  7. EARファイルをデプロイします。

11.2.3 Webサービス・クライアントのディレクトリ構造

図11-8に、Webサービス・クライアントのファイルの構成を示します。

図11-8    Webサービス・クライアントのディレクトリ構造


画像の説明

11.2.4 Webサービス・クライアントのリクエスト・フロー

Webサービス・クライアントはMVC設計パターン(第2章「アプリケーションの設計」を参照)を使用します。このパターンは、クライアントによるリクエストへの応答方法を示します。

  1. 最初に、Webサービス・クライアントのサーブレットがリクエストを処理します。このサーブレットは、リクエストの問合せ文字列を確認して、リクエストを処理するクラスを決定します。

  2. リクエストを処理するハンドラ・クラスには、performActionと呼ばれるメソッドがあります。サーブレットは、ハンドラ・クラスのこのメソッドを起動します。

  3. プロキシ・スタブのメソッドを起動する場合、クラスは次の操作を実行します。

    1. プロキシ・スタブのインスタンス(この場合はEmployeeBenefitManagerProxy)を取得します。インスタンスが存在しない場合は、次のように指定して作成します。

      EmployeeBenefitManagerProxy proxy = new EmployeeBenefitManagerProxy();
      
      

      Webサービス・クライアントでは、セッションの間、SessionHelperクラスがプロキシ・クラスをインスタンス化および維持します。

    2. プロキシ・クラスのメソッドを起動します。このメソッドは、リモートWebサービス上の対応するメソッドを起動します。次に、例を示します。

      Object[] model = proxy.listBenefits();
      
      

      Webサービス・クライアントでは、ハンドラ・クラスはメソッドの結果を属性としてリクエストに格納します。その後、ハンドラ・クラスはJSPにリクエストを転送します。JSPは、属性に対応付けられたJavaBeanオブジェクトを転送されたリクエストから取得し、ページにデータを表示します。

11.2.5 Webサービス・クライアントの画面

クライアントを起動すると、次の画面が表示されます。

  1. クライアントを起動します。クライアントのURLは、次のとおりです。

    http://host:port/benefitmgr
    
    

    hostを、クライアント・アプリケーションをデプロイしたホスト名に置き換えます。portを、Oracle HTTP Serverがリスニングしているポート番号に置き換えます。

    図11-9にクライアントの最初のページを示します。

    図11-9    Webサービス・クライアントの最初のページ


    画像の説明

  2. タイトルの下の項目をクリックして、Webサービスを介してメソッドを起動します。

    メソッドにパラメータが必要ない場合は、クライアントがプロキシ・クラスを介してメソッドを起動します。プロキシ・クラスはリクエストを適切なXML形式にパッケージし、ホストに送信します。このフローは、Webサービス・アプリケーションをテストした場合と同様のフローです。

    関連項目

    フロー図は、図11-7「リクエスト・フロー」を参照してください。 

    メソッドにパラメータが必要な場合は、クライアントによってパラメータに値を入力できるページが表示されます。たとえば、「Add New Benefit」オプションをクリックすると、クライアントによって次のページが表示されます。

    関連項目

    図11-10「Add New Benefitのパラメータ・ページ」 

    データを入力して発行ボタンをクリックすると、プロキシ・クラスによってリクエストが送信されます。

    関連項目

    リクエスト・フロー図は、図11-7「リクエスト・フロー」を参照してください。 

    図11-10    Add New Benefitのパラメータ・ページ


    画像の説明


戻る 次へ
Oracle
Copyright © 2003, 2004, Oracle.

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