ヘッダーをスキップ
Oracle SOA Suite開発者ガイド
10g(10.1.3.1.0)
B31839-01
  目次へ
目次
索引へ
索引

前へ
前へ
 
次へ
次へ
 

5.2 JDeveloperでのWebサービスの作成

Webサービスの作成、デプロイ、検索およびアプリケーションへの組込みは、JDeveloperのウィザードを使用することで容易に実現できます。

作成したWebサービスは、JDeveloperの埋込みOC4Jサーバーでローカルに実行してテストできます。 あるいは、Webサービスをマシン上のJDeveloperの外部で実行されているOC4Jインスタンスにリモートにデプロイすることもできます。 Webサービスのテストの詳細は、第5.4項「JDeveloperでのWebサービスのデバッグ、テストおよび分析」を参照してください。

5.2.1 Javaおよびプリミティブ型のXMLへのシリアライズ方法

Webサービスとの間で受渡しが可能なオブジェクトは、XML型にシリアライズしたり、元の型にデシリアライズできる必要があります。 Oracle Web Servicesランタイムは、オブジェクトをJava2XMLおよびXML2Javaからシリアライズする方法を定義したJAX-RPC標準に基づいています。 JDeveloperによって、Javaプリミティブ型および特定のJava標準型が自動的に処理され、XML型に変換されます。 簡単にいうと、Webサービス・メソッドの各パラメータと戻り値は、次のルールのいずれかに準拠している必要があります。

  • Javaプリミティブ(例: intlongbyte)、Javaプリミティブ・ラッパー(例: java.lang.Integer)またはjava.lang.String

  • 引数を取らないコンストラクタを持ち、公開する各プロパティにgetterメソッドとsetterメソッドのペアがあるJava Bean。 各プロパティ自体はこれらのルールのいずれかに準拠する必要があります。

  • 最初の2つのルールのいずれかに一致する配列型。

詳細は、『Oracle Application Server Web Servicesアドバンスト開発者ガイド』の付録D「XML型およびWSDL型へのJava型のマッピング」を参照してください。

JDeveloperのウィザードでは、カスタムのマッピングおよびシリアライザ/デシリアライザを使用することでJavaオブジェクトのシリアライズ方法を拡張できます。 詳細は、JDeveloperのオンライン・ヘルプで、JavaメソッドとWSDL操作のマッピングの設定に関するトピックを検索してください。

5.2.2 JDeveloperのWebサービス開発ツール

Webサービスは、次の2つのアプローチを使用して開発できます。

  • ボトムアップ開発

  • トップダウン開発

JAX-RPCでのボトムアップWebサービス開発には、2つのアプローチがあります。

  • JDeveloperのWebサービス・ウィザードの1つを使用し、実装クラスに指定します。 ウィザードで、公開するメソッドを選択します。 JDeveloperによって、必要なすべてのJavaアーチファクト、デプロイメント・ディスクリプタおよびWSDLが生成されます。手動操作による処理は不要です。

  • JavaクラスまたはEJBセッションBeanでJSR-181注釈を使用します。 WSDLが、マッピング・ファイルなどの複数のヘルパー・ファイルとともに生成されます。 詳細は、次のWebサイトにあるOracle Technology Networkの「Developing Contract-Driven Web Services Using JDeveloper」チュートリアルを参照してください。

    http://www.oracle.com/technology/obe/obe1013jdev/wstopdown/wstopdown.htm
    

ボトムアップ開発アプローチは、通常、Webサービスを最も簡単にすばやく開発する方法ですが、相互運用性に影響を与える場合があります。 SOA Order Bookingアプリケーションでは、RapidServiceがボトムアップで開発されており、WSDLのWS-I Basic Profile 1.1への準拠をテストすることで相互運用性を確認できます。 詳細は、第5.4.2項「Webサービスの相互運用性の分析」を参照してください。

トップダウンWebサービス開発は、WSDLから開始します。 JDeveloperを使用すると、WSDLを作成して、必要なすべてのJavaアーチファクト、デプロイメント・ディスクリプタおよび実装Javaファイルを生成できます。 通常、トップダウン・アプローチは、相互運用性を確保するための最適な方法です。これは、XML標準を使用して様々なメッセージ書式と操作を記述したサービスから開発を開始することで、作成されたWebサービスがプラットフォームにとらわれないためです。 SOA Order Bookingアプリケーションでは、CreditServiceがトップダウンで開発されています。

JDeveloperでは、Webサービスの開発とデプロイを支援する複数のウィザードが用意されています。 各ウィザードでは、コードをWebサービスとして公開する際に必要なWSDLドキュメントおよびデプロイメント・ファイルが作成されます。

  • Java J2EE Webサービス作成ウィザード。Javaクラスのメソッドを公開したり、ステートレス・セッションEJBのリモート・インタフェースでメソッドを公開します。


    注意:

    Java J2EE Webサービス作成ウィザードは、EJB 2.0および2.1でのみ使用できます。 EJB 3.0でのWebサービスの作成方法については、第5.2.5項「EJB 3.0からのWebサービスの作成方法」を参照してください。

  • JMS J2EE Webサービス作成ウィザード。JMS宛先との間でメッセージの送受信を行うWebサービスを作成します。

  • PL/SQL J2EE Webサービス作成ウィザード。PL/SQLパッケージに格納されているPL/SQLプログラム・ユニットを公開します。

  • WSDLからJ2EE Java Webサービス作成ウィザード。既存のWSDLからトップダウンWebサービスを作成します。 トップダウンWebサービス開発はWSDLから開始します。JDeveloperでは、WSDLを使用して、必要なJavaアーチファクトおよびデプロイメント・ディスクリプタを生成します。

ADF Business ComponentsからWebサービスを作成することもできます。アプリケーション・モジュール・エディタのリモート・ページから直接作成するか、またはビジネス・コンポーネントをステートレス・セッションEJBとしてラップし、Java J2EE Webサービス作成ウィザードを使用して作成します。 詳細は、JDeveloperのオンライン・ヘルプで、ADF Business Componentsアプリケーション・モジュールのWebサービスとしての公開に関するトピックを検索してください。

すぐに一部の機能を試してみる場合は、Javaクラスのポップアップ・メニューからデフォルト値のWebサービスを作成できます。

5.2.3 ボトムアップWebサービスの作成方法

Java J2EE Webサービス作成ウィザードでは、次の場所から開始してWebサービスを作成できます。

  • Javaクラス

  • EJB2.0または2.1のリモート・インタフェース


    注意:

    EJB 3.0のWebサービスは、Beanまたはインタフェースに注釈を指定することで作成します。 詳細は、第5.2.5項「EJB 3.0からのWebサービスの作成方法」を参照してください。

  • EJBとしてラップされたADF Business Componentsサービス・セッションBean

JMS J2EE Webサービス作成ウィザードでは、JMS宛先を公開するWebサービスを公開できます。

PL/SQL J2EE Webサービス作成ウィザードでは、PL/SQLパッケージに格納されているPL/SQLプログラム・ユニットに基づくWebサービスを公開できます。

5.2.3.1 JAX-RPC WebサービスおよびOracle SOAP Webサービス

JDeveloperでは、JAX-RPCまたは以前のOracle SOAPスタックに準拠したWebサービスを作成できます。 これらのWebサービスは次のように呼ばれます。

  • J2EE 1.4 Webサービス。J2EEアプリケーション・サーバーにデプロイできます。

  • J2EE 1.3 Webサービス。OC4JのSOAPコンテナにのみデプロイできます。 このWebサービスは、以前のOracle SOAPスタックに準拠し、JAX-RPC機能は使用できません。

5.2.3.2 Webサービスの作成とデプロイ

Webサービスを作成します。 必要に応じて、デプロイメント・プロファイルを編集してJ2EEコンテキスト・ルートを変更し、Webサービスをデプロイします。

Webサービスを作成する手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、プロジェクトを右クリックし、「新規」を選択します。

  2. 新規ギャラリの「カテゴリ」リストで、「Web Services」を開いて選択します。 「項目」リストから、基礎となる実装に応じて「Java Webサービス」「JMS Webサービス」または「PL/SQL Webサービス」を選択します。

  3. 「J2EE Webサービス・バージョンの選択」ダイアログで、作成するWebサービスのタイプを選択します。 このダイアログが表示されるのは、プロジェクトにWebサービスを最初に作成するときのみです。選択したバージョンは、そのプロジェクトに作成するすべてのWebサービスに使用されます。

  4. J2EE Webサービスの作成ウィザードで、ようこそページに表示される情報を参照した後、「次へ」をクリックします。

  5. ウィザードを完了します。

    ウィザードに表示されるページの詳細は、「ヘルプ」をクリックしてください。

Webサービスが生成され、生成済のアーチファクトがアプリケーション・ナビゲータにリストされます。 図5-4を参照してください。

図5-4 アプリケーション・ナビゲータに表示されたWebサービスとアーチファクト

図5-4の説明は次にあります。
「図5-4 アプリケーション・ナビゲータに表示されたWebサービスとアーチファクト」の説明

CreditServiceは、生成されたWebサービス・コンテナです。 このWebサービス・コンテナを選択すると、Webサービスを構成するファイルが構造ウィンドウにリストされます。図5-5を参照してください。

図5-5 構造ウィンドウに表示されたWebサービス・ファイル

図5-5の説明は次にあります。
「図5-5 構造ウィンドウに表示されたWebサービス・ファイル」の説明

WARをデプロイする前に、生成されたアーカイブの内容を確認することをお薦めします。 デフォルトを使用してデプロイすると、冗長なクラスまたは他のアーチファクトがデプロイされる場合があります。

生成されたアーカイブを確認する別の理由は、Webコンテキスト・ルートを変更するためです。 デフォルトでは、生成されたWARデプロイメント・プロファイルのプロパティによって、JDeveloperのJ2EEプロジェクト設定のパネルで構成した設定が上書きされます。 このため、J2EEコンテキスト・ルートはプロジェクトから継承されます。 SOA Order Bookingアプリケーションに従う場合は、Rapid Manufacturerサービスをデプロイする前に、J2EE Webコンテキスト・ルートを変更する必要があります。

WARデプロイメント・プロファイルを確認して編集する手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、該当するプロジェクト、「リソースフォルダの順に開きます。

  2. WebServices.deploy」をダブルクリックして、「WARデプロイメント・プロファイルのプロパティ」ダイアログを開きます。

  3. 「一般」ページで、デプロイするファイルを確認し、必要に応じてファイルを追加または削除します。 このページでは、J2EE Webコンテキスト・ルートを変更することもできます。

図5-6に、「WARデプロイメント・プロファイルのプロパティ」ダイアログを示します。

図5-6 WARデプロイメント・プロファイルのプロパティ

図5-6の説明は次にあります。
「図5-6 WARデプロイメント・プロファイルのプロパティ」の説明

Webサービスをデプロイする手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、該当するプロジェクト、「リソースフォルダの順に開きます。

  2. WebServices.deploy」を右クリックし、アプリケーション・サーバー接続を選択します。

5.2.4 Webサービス・メタデータのJSR-181

Java Enterprise Platform(Java EE 5)の次のイテレーションにおける指針の1つは、エンタープライズ開発者にとって使いやすい機能を提供することです。 そのために、Java Platform Specification(JCP JSR 181)のWebサービス・メタデータでは、一連の注釈を提供することで、Java Webサービス・プログラミング・モデルを簡素化しています。これらの注釈を使用すると、アプリケーションのWebサービスを宣言的に指定できます。 このメタデータによって、Webサービスを実装するJavaソース・ファイルに注釈が指定されるため、デプロイメント・ディスクリプタやJAX-RPCマッピング・ファイルなど、追加のサービス・アーチファクトに対する変更や管理が不要になります。 したがって、Webサービスを開発およびデプロイするプロセスが大幅に簡素化されます。

JDeveloperでJavaクラスからWebサービスを作成すると、ランタイム・アーチファクトが「Webコンテンツ」フォルダに生成されます。

ただし、JSR-181を使用する場合は、注釈がデプロイ時に処理されるため、「Webコンテンツ」フォルダとそのコンテンツは生成されません。 JSR-181の詳細は、http://www.jcp.org/en/jsr/detail?id=181を参照してください。

SOA Order Bookingアプリケーションでは、RapidServiceにJSR-181が使用されています。JSR-181のWebサービス・ライブラリがプロジェクトに追加され、注釈が実装クラスにクラスおよびメソッド・レベルで追加されています。

JSR-181ライブラリを追加する手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。

  2. 「プロジェクト・プロパティ」ダイアログで、「ライブラリ」を選択し、「ライブラリの追加」をクリックします。

  3. 「ライブラリの追加」ダイアログで、「JSR-181 Web Services」を選択し、「OK」をクリックします。

  4. 「プロジェクト・プロパティ」ダイアログで、「JSR-181 Web Services」に対して「エクスポート」が選択されていることを確認し、「OK」をクリックします。

Javaクラスに注釈を追加する手順は、次のとおりです。

  1. RequestQuoteクラスに、次のコードをクラス・レベル注釈として追加します。

    @WebService(serviceName="RapidService",targetNamespace="http://www.globalcompany.com/ns/rapidservice")
    
  2. RequestQuoteクラスに、次のコードをメソッド・レベル注釈として追加します。

    @WebMethod(operationName="OrderQuote")
    

5.2.5 EJB 3.0からのWebサービスの作成方法

EJB 2.1からWebサービスを作成する場合は、Java J2EE 1.4 Webサービスの作成ウィザードを使用します。このウィザードは、新規ギャラリから起動します。 ただし、EJB 3.0からWebサービスを作成する場合は、JSR-181 Webサービス・ライブラリをプロジェクトに追加し、実装クラスに注釈を追加してEJBをデプロイするのみです。 注釈は、実行時にアプリケーション・サーバーで解釈され、必要なすべてのアーチファクトがサーバー側に生成されます。 次の例は、SOADEMO-CUSTOMERSERVICEを使用して、この操作を示しています。

EJB 3.0 Webサービスを作成する手順は、次のとおりです。

  1. JSR-181ライブラリを追加します。 詳細は、第5.2.4項「Webサービス・メタデータのJSR-181」を参照してください。

  2. 実装クラス(ここでは、CustomerService.java)を検索し、ソース・エディタで開きます。 クラス・レベルの注釈を入力します。次に例を示します。

    @WebService(serviceName="CustomerSvc", targetNamespace="http://www.globalcompany.com/ns/customer")
    

    図5-7を参照してください。

  3. EJBをアプリケーション・サーバーにデプロイします。 注釈によって、サーバーはこのEJBがWebサービスであることを認識し、アプリケーション名に基づいてWebコンテキストを作成し、必要なランタイム・アーチファクトを生成します。

図5-7 CustomerService.java

図5-7の説明は次にあります。
「図5-7 CustomerService.java」の説明

5.2.6 トップダウンWebサービスの作成方法

トップダウンのWebサービスは、WSDLから開発します。WSDLは、サービスに対する契約を提供します。 これは、コントラクトドリブン・アプローチとも呼ばれます。 WSDLを最初から開発する方法の詳細は、Oracle Technology Networkの「Developing Contract-Driven Web Services Using JDeveloper」チュートリアル(http://www.oracle.com/technology/obe/obe1013jdev/wstopdown/wstopdown.htm)を参照してください。

JDeveloperでは、Java J2EE 1.4 Webサービスの作成ウィザード(図5-8を参照)を使用して、WSDLからWebサービスを作成できます。このウィザードは、新規ギャラリから起動します。 SOA Order Bookingアプリケーションでは、CreditServiceがWSDLから作成されているバックエンド・サービスです。

図5-8 WSDLからJ2EE 1.4 Java Webサービスを作成

図5-8の説明は次にあります。
「図5-8 WSDLからJ2EE 1.4 Java Webサービスを作成」の説明

このウィザードでは、ローカル・ファイル・システム上のWSDLドキュメントを参照するか、インターネットまたはイントラネット上のWebサービスのURLを入力するか、パブリックまたはプライベートUDDIレジストリに接続してWebサービスを検索できます。 WSDLに含まれている契約情報を使用してWebサービスが作成され、Javaクラスおよびその他のアーチファクトが自動的に生成されます。

ステップ1で「次へ」をクリックすると、JDeveloperによって、WSDLドキュメントが有効であることが確認されます。

JDeveloperの既存のWSDLを確認するには、構造ウィンドウでそのWSDLをダブルクリックします。 デフォルトでは、設計ビューにエディタが開かれ、WSDLがグラフィカルに表示されます。 「ビューの切替え」をクリックすると、「Services」、「Bindings」、「Port Types」、「Messages」の順序を逆にできます。

設計ビューで、「Services」の下にあるノードを開いて、「soap:address」を表示します。図5-9を参照してください。

図5-9 設計エディタに表示されたCreditService.wsdl

図5-9の説明は次にあります。
「図5-9 設計エディタに表示されたCreditService.wsdl」の説明

実際の値を参照するには、エディタで「soap:address」を選択します。 値は、プロパティ・インスペクタに表示されます。図5-10を参照してください。

図5-10 プロパティ・インスペクタに表示されたsoap:address

図5-10の説明は次にあります。
「図5-10 プロパティ・インスペクタに表示されたsoap:address」の説明

WSDLをエディタにXML書式で表示するには、「ソース」タブをクリックします。図5-11を参照してください。

図5-11 ソース・エディタに表示されたCreditService.wsdl

図5-11の説明は次にあります。
「図5-11 ソース・エディタに表示されたCreditService.wsdl」の説明

トップダウンWebサービスを作成する手順は、次のとおりです。

  1. 新規ギャラリを開きます。 あるいは、次のいずれかの操作を実行します。

    「ファイル」「新規」の順に選択します。または、

    [Ctrl]を押しながら[N]を押します。

  2. 「新規ギャラリ」ダイアログで、「Business Tier」を開きます。 「Web Services」を選択し、「WSDLからJava Webサービス」をダブルクリックします。

  3. ステップ1/5: Webサービス記述ページで、Webサービスの基礎となるWSDLを入力または参照します。

  4. デフォルトをそのまま使用し、ウィザードを完了します。

Webサービスが生成され(図5-12を参照)、デプロイメント・プロファイルが作成されます。

図5-12 アプリケーション・ナビゲータに表示された生成済のWebサービス・コンテナ

図5-12の説明は次にあります。
「図5-12 アプリケーション・ナビゲータに表示された生成済のWebサービス・コンテナ」の説明

CreditServiceは、生成されたWebサービス・コンテナです。 このWebサービス・コンテナを選択すると、Webサービスを構成するファイルが構造ウィンドウにリストされます。図5-13を参照してください。

図5-13 構造ウィンドウに表示されたCreditService

図5-13の説明は次にあります。
「図5-13 構造ウィンドウに表示されたCreditService」の説明

Webサービスをデプロイする手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、該当するプロジェクト、「リソース」フォルダの順に開きます。

  2. WebServices.deploy」を右クリックし、アプリケーション・サーバー接続を選択します。

5.2.7 JDeveloperからのWebサービスのデプロイ

Webサービスを作成して、Oracle Application ServerまたはJDeveloperのOC4Jの外部インスタンスにデプロイできます。 Webサービス・ウィザードによって、WebServices.deployというWebアーカイブ(WAR)デプロイメント・プロファイルが生成されます。ナビゲータで、Webサービス・コンテナのポップアップ・メニューから「デプロイ」を選択することで、このプロファイルをデプロイできます。


注意:

EJB 3.0のWebサービスは、Beanクラスに注釈を指定することで作成します。 EJBをデプロイすると、Webサービス・アーチファクトがサーバー側に作成されます。 詳細は、第5.2.5項「EJB 3.0からのWebサービスの作成方法」を参照してください。