Webサービスの作成、デプロイ、検索およびアプリケーションへの組込みは、JDeveloperのウィザードを使用することで容易に実現できます。
作成したWebサービスは、JDeveloperの埋込みOC4Jサーバーでローカルに実行してテストできます。 あるいは、Webサービスをマシン上のJDeveloperの外部で実行されているOC4Jインスタンスにリモートにデプロイすることもできます。 Webサービスのテストの詳細は、第5.4項「JDeveloperでのWebサービスのデバッグ、テストおよび分析」を参照してください。
Webサービスとの間で受渡しが可能なオブジェクトは、XML型にシリアライズしたり、元の型にデシリアライズできる必要があります。 Oracle Web Servicesランタイムは、オブジェクトをJava2XMLおよびXML2Javaからシリアライズする方法を定義したJAX-RPC標準に基づいています。 JDeveloperによって、Javaプリミティブ型および特定のJava標準型が自動的に処理され、XML型に変換されます。 簡単にいうと、Webサービス・メソッドの各パラメータと戻り値は、次のルールのいずれかに準拠している必要があります。
Javaプリミティブ(例: int
、long
、byte
)、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操作のマッピングの設定に関するトピックを検索してください。
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サービスを作成できます。
Java J2EE Webサービス作成ウィザードでは、次の場所から開始してWebサービスを作成できます。
Javaクラス
EJB2.0または2.1のリモート・インタフェース
EJBとしてラップされたADF Business Componentsサービス・セッションBean
JMS J2EE Webサービス作成ウィザードでは、JMS宛先を公開するWebサービスを公開できます。
PL/SQL J2EE Webサービス作成ウィザードでは、PL/SQLパッケージに格納されているPL/SQLプログラム・ユニットに基づくWebサービスを公開できます。
JDeveloperでは、JAX-RPCまたは以前のOracle SOAPスタックに準拠したWebサービスを作成できます。 これらのWebサービスは次のように呼ばれます。
J2EE 1.4 Webサービス。J2EEアプリケーション・サーバーにデプロイできます。
J2EE 1.3 Webサービス。OC4JのSOAPコンテナにのみデプロイできます。 このWebサービスは、以前のOracle SOAPスタックに準拠し、JAX-RPC機能は使用できません。
Webサービスを作成します。 必要に応じて、デプロイメント・プロファイルを編集してJ2EEコンテキスト・ルートを変更し、Webサービスをデプロイします。
Webサービスを作成する手順は、次のとおりです。
アプリケーション・ナビゲータで、プロジェクトを右クリックし、「新規」を選択します。
新規ギャラリの「カテゴリ」リストで、「Web Services」を開いて選択します。 「項目」リストから、基礎となる実装に応じて「Java Webサービス」、「JMS Webサービス」または「PL/SQL Webサービス」を選択します。
「J2EE Webサービス・バージョンの選択」ダイアログで、作成するWebサービスのタイプを選択します。 このダイアログが表示されるのは、プロジェクトにWebサービスを最初に作成するときのみです。選択したバージョンは、そのプロジェクトに作成するすべてのWebサービスに使用されます。
J2EE Webサービスの作成ウィザードで、ようこそページに表示される情報を参照した後、「次へ」をクリックします。
ウィザードを完了します。
ウィザードに表示されるページの詳細は、「ヘルプ」をクリックしてください。
Webサービスが生成され、生成済のアーチファクトがアプリケーション・ナビゲータにリストされます。 図5-4を参照してください。
CreditService
は、生成されたWebサービス・コンテナです。 このWebサービス・コンテナを選択すると、Webサービスを構成するファイルが構造ウィンドウにリストされます。図5-5を参照してください。
WARをデプロイする前に、生成されたアーカイブの内容を確認することをお薦めします。 デフォルトを使用してデプロイすると、冗長なクラスまたは他のアーチファクトがデプロイされる場合があります。
生成されたアーカイブを確認する別の理由は、Webコンテキスト・ルートを変更するためです。 デフォルトでは、生成されたWARデプロイメント・プロファイルのプロパティによって、JDeveloperのJ2EEプロジェクト設定のパネルで構成した設定が上書きされます。 このため、J2EEコンテキスト・ルートはプロジェクトから継承されます。 SOA Order Bookingアプリケーションに従う場合は、Rapid Manufacturerサービスをデプロイする前に、J2EE Webコンテキスト・ルートを変更する必要があります。
WARデプロイメント・プロファイルを確認して編集する手順は、次のとおりです。
アプリケーション・ナビゲータで、該当するプロジェクト、「リソース」フォルダの順に開きます。
「WebServices.deploy
」をダブルクリックして、「WARデプロイメント・プロファイルのプロパティ」ダイアログを開きます。
「一般」ページで、デプロイするファイルを確認し、必要に応じてファイルを追加または削除します。 このページでは、J2EE Webコンテキスト・ルートを変更することもできます。
図5-6に、「WARデプロイメント・プロファイルのプロパティ」ダイアログを示します。
Webサービスをデプロイする手順は、次のとおりです。
アプリケーション・ナビゲータで、該当するプロジェクト、「リソース」フォルダの順に開きます。
「WebServices.deploy
」を右クリックし、アプリケーション・サーバー接続を選択します。
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ライブラリを追加する手順は、次のとおりです。
アプリケーション・ナビゲータで、プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。
「プロジェクト・プロパティ」ダイアログで、「ライブラリ」を選択し、「ライブラリの追加」をクリックします。
「ライブラリの追加」ダイアログで、「JSR-181 Web Services」を選択し、「OK」をクリックします。
「プロジェクト・プロパティ」ダイアログで、「JSR-181 Web Services」に対して「エクスポート」が選択されていることを確認し、「OK」をクリックします。
Javaクラスに注釈を追加する手順は、次のとおりです。
RequestQuote
クラスに、次のコードをクラス・レベル注釈として追加します。
@WebService(serviceName="RapidService",targetNamespace="http://www.globalcompany.com/ns/rapidservice")
RequestQuoteクラスに、次のコードをメソッド・レベル注釈として追加します。
@WebMethod(operationName="OrderQuote")
EJB 2.1からWebサービスを作成する場合は、Java J2EE 1.4 Webサービスの作成ウィザードを使用します。このウィザードは、新規ギャラリから起動します。 ただし、EJB 3.0からWebサービスを作成する場合は、JSR-181 Webサービス・ライブラリをプロジェクトに追加し、実装クラスに注釈を追加してEJBをデプロイするのみです。 注釈は、実行時にアプリケーション・サーバーで解釈され、必要なすべてのアーチファクトがサーバー側に生成されます。 次の例は、SOADEMO-CUSTOMERSERVICEを使用して、この操作を示しています。
EJB 3.0 Webサービスを作成する手順は、次のとおりです。
JSR-181ライブラリを追加します。 詳細は、第5.2.4項「Webサービス・メタデータのJSR-181」を参照してください。
実装クラス(ここでは、CustomerService.java
)を検索し、ソース・エディタで開きます。 クラス・レベルの注釈を入力します。次に例を示します。
@WebService(serviceName="CustomerSvc", targetNamespace="http://www.globalcompany.com/ns/customer")
図5-7を参照してください。
EJBをアプリケーション・サーバーにデプロイします。 注釈によって、サーバーはこのEJBがWebサービスであることを認識し、アプリケーション名に基づいて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から作成されているバックエンド・サービスです。
このウィザードでは、ローカル・ファイル・システム上の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を参照してください。
実際の値を参照するには、エディタで「soap:address
」を選択します。 値は、プロパティ・インスペクタに表示されます。図5-10を参照してください。
WSDLをエディタにXML書式で表示するには、「ソース」タブをクリックします。図5-11を参照してください。
トップダウンWebサービスを作成する手順は、次のとおりです。
新規ギャラリを開きます。 あるいは、次のいずれかの操作を実行します。
「ファイル」→「新規」の順に選択します。または、
[Ctrl]を押しながら[N]を押します。
「新規ギャラリ」ダイアログで、「Business Tier」を開きます。 「Web Services」を選択し、「WSDLからJava Webサービス」をダブルクリックします。
ステップ1/5: Webサービス記述ページで、Webサービスの基礎となるWSDLを入力または参照します。
デフォルトをそのまま使用し、ウィザードを完了します。
Webサービスが生成され(図5-12を参照)、デプロイメント・プロファイルが作成されます。
CreditService
は、生成されたWebサービス・コンテナです。 このWebサービス・コンテナを選択すると、Webサービスを構成するファイルが構造ウィンドウにリストされます。図5-13を参照してください。
Webサービスをデプロイする手順は、次のとおりです。
アプリケーション・ナビゲータで、該当するプロジェクト、「リソース」フォルダの順に開きます。
「WebServices.deploy
」を右クリックし、アプリケーション・サーバー接続を選択します。
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サービスの作成方法」を参照してください。 |