この章では、RapidServiceプロジェクトの作成方法について説明します。 項目は次のとおりです。
RapidServiceプロジェクトは、顧客注文に対して価格の見積りを提示するサプライヤを表します。 RapidServiceと競合する、もう1つのサプライヤはSelectManufacturerです。 顧客の注文に対してより低い見積金額を提示したサプライヤが注文を履行します。
RapidServiceプロジェクトとCreditServiceプロジェクトの場合は、設計時にディスクリプタが生成されます。 RapidServiceプロジェクトはボトムアップ方法で開発します。Javaクラスから開始し、そのJavaクラスからWSDLファイルを開発します。 これとは逆に、CreditServiceはトップダウン方法で開発します。WSDLから開始し、そのWSDLファイルを使用してJavaクラスを生成します。
最初に、JDeveloperでRapidService用の新規プロジェクトを作成します。手順は次のとおりです。
「SOADEMO」アプリケーションを右クリックし、「新規プロジェクト」を選択します。
新規ギャラリの「カテゴリ」セクションで、「General」を開き、「Projects」を選択します。 「項目」セクションで、「空のプロジェクト」を選択します。
「OK」をクリックします。
「プロジェクトの作成」ダイアログで、「プロジェクト名」フィールドに「RapidService」と入力します。
「OK」をクリックします。
アプリケーション・ナビゲータで、SOADEMOアプリケーションの下に空のRapidServiceプロジェクトが表示されていることを確認します。
「ファイル」→「保存」の順に選択して、作業内容を保存します。
RapidServiceプロジェクトは、JSR-181ライブラリを追加してから、コンパイルおよびデプロイする必要があります。 第6.6項「RequestQuote.javaの作成」で作成するRequestQuote.java
には、JSR-181注釈が含まれています。
「RapidService」プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。 「プロジェクト・プロパティ」ダイアログで、左側にある「ライブラリ」を選択します。
「ライブラリの追加」をクリックします。
「ライブラリの追加」ダイアログで、「拡張」の下にある「JSR-181 Web Services」を選択します。
「ライブラリの追加」ダイアログで、「OK」をクリックします。 「プロジェクト・プロパティ」ダイアログで、JSR-181ライブラリがリストに追加されていることを確認します。
「プロジェクト・プロパティ」ダイアログで、「OK」をクリックします。
アプリケーション・ナビゲータで「RapidService」を選択し、「ファイル」→「保存」の順に選択して作業内容を保存します。
「RapidService」プロジェクトを右クリックし、「新規」を選択します。 新規ギャラリの「カテゴリ」セクションで、「General」を開き、「Simple Files」を選択します。 「項目」セクションで、「Javaクラス」を選択します。
「OK」 をクリックします。 「Javaクラスの作成」ダイアログが表示されます。
「Javaクラスの作成」ダイアログで、次の値を入力します。
名前: 「Item」と入力します。
パッケージ: 「org.soademo.rapidservice.types」と入力します。
拡張対象: 「java.lang.Object」と入力します。
Public: このオプションを選択します。
デフォルトのコンストラクタを生成: このオプションを選択します。
mainメソッドの生成: 選択しません。
「OK」をクリックします。 JDeveloperのエディタに、Item.java
ファイルが表示されます。
このファイルを編集して、次の行を含めます。
package org.soademo.rapidservice.types; public class Item { public Item() { } String itemId; long Quantity; public void setItemId(String itemId) { this.itemId = itemId; } public String getItemId() { return itemId; } public void setQuantity(long quantity) { this.Quantity = quantity; } public long getQuantity() { return Quantity; } }
「ファイル」→「保存」の順に選択し、ファイルを保存します。
「RapidService」プロジェクトを右クリックし、「新規」を選択します。 新規ギャラリの「カテゴリ」セクションで、「General」を開き、「Simple Files」を選択します。 「項目」セクションで、「Javaクラス」を選択します。
「OK」をクリックします。 「Javaクラスの作成」ダイアログが表示されます。
「Javaクラスの作成」ダイアログで、次の値を入力します。
名前: 「Quote」と入力します。
パッケージ: 「org.soademo.rapidservice.types」と入力します。
拡張対象: 「java.lang.Object」と入力します。
Public: このオプションを選択します。
デフォルトのコンストラクタを生成: このオプションを選択します。
mainメソッドの生成: 選択しません。
「OK」をクリックします。 JDeveloperのエディタに、Quote.java
ファイルが表示されます。
このファイルを編集して、次の行を含めます。
package org.soademo.rapidservice.types; public class Quote implements java.io.Serializable { protected java.lang.String supplierName; protected java.lang.String supplierPrice; public Quote() { } public java.lang.String getSupplierName() { return supplierName; } public void setSupplierName(java.lang.String supplierName) { this.supplierName = supplierName; } public java.lang.String getSupplierPrice() { return supplierPrice; } public void setSupplierPrice(java.lang.String supplierPrice) { this.supplierPrice = supplierPrice; } }
「ファイル」→「保存」の順に選択し、ファイルを保存します。
「RapidService」プロジェクトを右クリックし、「新規」を選択します。 新規ギャラリの「カテゴリ」セクションで、「General」を開き、「Simple Files」を選択します。 「項目」セクションで、「Javaクラス」を選択します。
「OK」をクリックします。 「Javaクラスの作成」ダイアログが表示されます。
「Javaクラスの作成」ダイアログで、次の値を入力します。
名前: 「RequestQuote」と入力します。
パッケージ: 「org.soademo.rapidservice」と入力します。 この値は、以前作成したJavaクラスの値とは異なることに注意してください。
拡張対象: 「java.lang.Object」と入力します。
Public: このオプションを選択します。
デフォルトのコンストラクタを生成: このオプションを選択します。
mainメソッドの生成: 選択しません。
「OK」をクリックします。 JDeveloperのエディタに、RequestQuote.javaファイルが表示されます。
このファイルを編集して、次の行を含めます。
package org.soademo.rapidservice; import javax.jws.WebMethod; import javax.jws.WebService; import org.soademo.rapidservice.types.Item; import org.soademo.rapidservice.types.Quote; @WebService(serviceName="RapidService", targetNamespace="http://www.globalcompany.com/ns/rapidservice") public class RequestQuote { public RequestQuote() { } @WebMethod(operationName="OrderQuote") public Quote processRequestQuote(String productName, String itenType, String partnum, String quantity, String price) { Quote priceQuote = new Quote(); priceQuote.setSupplierName("RapidDistributors"); priceQuote.setSupplierPrice("5000"); return priceQuote; } @WebMethod(operationName="POItemsQuote") public Quote processQuote(Item[] items){ Long totalPrice = new Long(0); for ( int i=0; i<items.length; i++) { Item localItem = items[i]; totalPrice += localItem.getQuantity()*110; } Quote priceQuote = new Quote(); priceQuote.setSupplierName("RapidDistributors"); priceQuote.setSupplierPrice(totalPrice.toString()); return priceQuote; } }
「ファイル」→「保存」の順に選択し、ファイルを保存します。
アプリケーション・ナビゲータで、RapidServiceプロジェクト用の次のファイルが表示されていることを確認します。
「RapidService」プロジェクトを右クリックし、「再ビルド」を選択します。 エラーがないかログ・ウィンドウで確認します。
「RapidService」プロジェクトを右クリックし、「新規」を選択します。 新規ギャラリの「カテゴリ」セクションで、「Business Tier」を開き、「Web Services」を選択します。 「項目」セクションで、「Java Webサービス」を選択します。
「OK」をクリックします。 「J2EE Webサービス・バージョンの選択」ダイアログが表示されます。
「J2EE Webサービス・バージョンの選択」ダイアログで「J2EE 1.4 (JAX-RPC) Webサービス」を選択し、「OK」をクリックします。
Java J2EE 1.4 Webサービスの作成ウィザードが起動します。 「次へ」をクリックして開始します。
ステップ1のクラス・ページで、次の操作を実行します。
Webサービス名: 「RapidService」と入力します。
公開するコンポーネント: ドロップダウンから「org.soademo.rapidservice.RequestQuote」を選択します。
サービス・エンドポイント・インタフェースの自動生成: このオプションを選択します(自動的に選択されます)。
サービス・エンドポイント・インタフェース: 「org.soademo.rapidservice.RequestQuotePortType」を選択します(自動的に入力されます)。
SOAP 1.1バインディング: このオプションを選択します。
SOAP 1.2バインディング: 選択しません。
WSIFバインディング: 選択しません。
クラスに注釈を生成: このオプションを選択します。
「次へ」をクリックします。
ステップ2のメッセージの書式ページで、次の操作を実行します。
SOAPメッセージ形式: 「ドキュメント/ラップ」を選択します。
SOAPポートへのRESTアクセスの有効化: 選択しません。
修飾要素を使用してスキーマを生成: このオプションを選択します。
DIMEエンコーディングの使用: 選択しません。
図6-15 Java J2EE 1.4 Webサービスの作成ウィザード: ステップ2、メッセージの書式
「次へ」をクリックします。
ステップ3のカスタムDataTypeシリアライザを指定ページで、「次へ」をクリックします。
図6-16 Java J2EE 1.4 Webサービスの作成ウィザード: ステップ3、カスタムDataTypeシリアライザを指定
ステップ4のマッピング・ページで、「次へ」をクリックします。
図6-17 Java J2EE 1.4 Webサービスの作成ウィザード: ステップ4、マッピング
ステップ5のメソッド・ページで、「processQuote」と「processRequestQuote」を選択します。
図6-18 Java J2EE 1.4 Webサービスの作成ウィザード: ステップ5、メソッド
「次へ」をクリックします。
ステップ6のハンドラ詳細ページで、「次へ」をクリックします。
図6-19 Java J2EE 1.4 Webサービスの作成ウィザード: ステップ6、ハンドラ詳細
ステップ7の状態ページで、「次へ」をクリックします。
ステップ8の追加クラス・ページで、「次へ」をクリックします。
図6-21 Java J2EE 1.4 Webサービスの作成ウィザード: ステップ8、追加クラス
終了ページで、「終了」をクリックします。
JDeveloperのエディタに、RapidService.wsdl
ファイルが表示されます。 RapidService.wsdl
は、このウィザードで作成されたファイルの1つです。
次の項では、JDeveloperで作成されたファイルを確認します。
RapidService.wsdlファイルのホスト名とポートが正しいかどうかを検証します。
RapidService.wsdl
がエディタに表示されていない場合は、アプリケーション・ナビゲータでダブルクリックします。 このファイルは、「RapidService」→「Webコンテンツ」→「WEB-INF¥wsdl」の下にあります。
「サービス」の下にある「RequestQuoteSoapHttpPort」を開きます。
「soap:address」を右クリックし、「プロパティ」を選択します。 「soap:addressのプロパティ」ダイアログが表示されます。
「soap:addressのプロパティ」ダイアログで、ホスト名とポートが正しいかどうかを検証します。 ホスト名は、Oracle Application Serverを実行しているマシンの名前、ポートは、Oracle HTTP ServerまたはOC4JがリスニングしているHTTPポートを指定します。
図6-23 RapidService.wsdlに関する「soap:addressのプロパティ」ダイアログ
変更した場合は、変更内容を保存します。
このウィザードを完了した後は、アプリケーション・ナビゲータおよび構造ウィンドウで、次のファイルが表示されていることを確認します。
「表示」→「構造」の順に選択して、構造ウィンドウを表示します。
アプリケーション・ナビゲータで、「SOADEMO」→「RapidService」→「アプリケーション・ソース」→「org.soademo.rapidservice」→「RapidService」の順に選択します。
構造ウィンドウで、次のファイルが表示されていることを確認します。
RequestQuote.java
RequestQuotePortType.java
RapidService.wsdl
RapidService-java-wsdl-mapping.xml
アプリケーション・ナビゲータで、「SOADEMO」→「RapidService」→「Webコンテンツ」の順にノードを開いて、JDeveloperで作成された他のファイルを確認します。 図6-24を参照してください。
「RapidService」プロジェクトをダブルクリックして、「プロジェクト・プロパティ」ダイアログを表示します。
左側で、「J2EEアプリケーション」を選択します。
「J2EE Webアプリケーション名」および「J2EE Webコンテキスト・ルート」の値を「RapidService」に設定します。
「OK」をクリックします。
「ファイル」→「保存」の順に選択して、作業内容を保存します。
デプロイメント・ディスクリプタ(「リソース」→「WebServices.deploy」)をダブルクリックして、「WARデプロイメント・プロファイルのプロパティ」ダイアログを表示します。
左側で、「一般」を選択します。
「エンタープライズ・アプリケーション名」を「RapidService」に設定します。
「OK」をクリックします。
「ファイル」→「保存」の順に選択して、作業内容を保存します。
「リソース」を開いて「WebServices.deploy」を右クリックし、「配布先」→「SoademoApplicationServer」の順に選択します。SoademoApplicationServerは、使用しているアプリケーション・サーバーへの接続を指定します。
「アプリケーションの構成」ダイアログで「OK」をクリックします。
RapidServiceに対するWSDLは、次のURLをブラウザに入力してアクセスできます。
http://
hostname
:
port
/RapidService/RequestQuoteSoapHttpPort?WSDL
hostnameには、Oracle Application Serverが実行されているマシンの名前を入力します。
portには、Oracle HTTP ServerまたはOC4JがリスニングしているHTTPポートを入力します。 デフォルト・ポートは8888です。
RapidServiceは、Application Server ControlのOC4J: ホーム・ページの「Webサービス」タブ(図6-28)と「アプリケーション」タブ(図6-29)に表示されます。
図6-28 RapidService Webサービスが表示されたOC4J: ホーム・ページの「Webサービス」タブ
図6-29 RapidServiceアプリケーションが表示されたOC4J: ホーム・ページの「アプリケーション」タブ