この章では、CreditServiceプロジェクトの作成方法について説明します。 項目は次のとおりです。
CreditServiceプロジェクトでは、顧客のクレジット・カードが有効かどうかが確認されます。 このSOA Order Bookingアプリケーションでは、コードによって、単純にクレジット・カード番号の値が確認されます。 クレジット・カード番号が12345678未満の場合、そのカードは無効です。 それ以外の場合は有効です。
CreditServiceプロジェクトは、トップダウン方法で開発します。WSDLから開始し、このWSDLファイルを使用してJavaクラスを生成します。 これとは逆に、RapidServiceはボトムアップ方法で開発します。Javaクラスから開始し、そのJavaクラスからWSDLファイルを開発します。
CreditServiceプロジェクトのWSDLファイルには、ハードコードされた値のlocalhost:8888
が含まれていることに注意してください。 次の条件に一致する場合は、これらの値を変更する必要があります。
JDeveloperとOracle Application Serverを異なるマシンで実行している場合は、localhostの値をOracle Application Serverを実行しているマシンの名前に変更します。
Oracle Application Serverインスタンスが8888以外のポートをリスニングしている場合は、ポート番号を変更する必要があります。
最初に、JDeveloperでCreditService用の新規プロジェクトを作成します。手順は次のとおりです。
「SOADEMO」アプリケーションを右クリックし、「新規プロジェクト」を選択します。
新規ギャラリの「カテゴリ」セクションで、「General」を開き、「Projects」を選択します。 「項目」セクションで、「空のプロジェクト」を選択します。
「OK」をクリックします。
「プロジェクトの作成」ダイアログで、「プロジェクト名」フィールドに「CreditService」と入力します。
「OK」をクリックします。
アプリケーション・ナビゲータで、SOADEMOアプリケーションの下に空のCreditServiceプロジェクトが表示されていることを確認します。
「ファイル」→「保存」の順に選択して、作業内容を保存します。
プロジェクト・タイプを定義し、WSDLファイルを、soademo_101310_prod.zip
ファイルからCreditService
ディレクトリにコピーします。
「CreditService」プロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログの「カテゴリ」セクションで、Business Tierを開き、「Web Services」を選択します。 「項目」セクションで、「WSDLドキュメント」を選択します。
「OK」をクリックします。 「WSDLドキュメントの作成」ダイアログが起動します。
「WSDLドキュメントの作成」ダイアログで、次の操作を実行します。
WSDL名: 「CreditService」と入力します。
ディレクトリ名: デフォルト(SOADEMO
¥CreditService¥src
)をそのまま使用します。
ターゲット・ネームスペース: 生成したWSDLファイルは上書きするため、デフォルトをそのまま使用します。 このWSDLファイルのターゲット・ネームスペースはhttp://www.globalcompany.com/ns/creditです。
「OK」をクリックします。
JDeveloperによってエディタに表示されるCreditService.wsdl
ファイルを(「ファイル」→「閉じる」の順に選択して)閉じます。
CreditService¥src¥CreditService.wsdl
をsoademo_101310_prod.zip
ファイルからコピーし、SOADEMO
¥CreditService¥src
ディレクトリにある生成したCreditService.wsdl
を上書きします。
このステップでは、WSDLファイルで宣言されているメソッドに対するJavaクラスを生成します。
「CreditService」プロジェクトを右クリックし、「新規」を選択します。 新規ギャラリの「カテゴリ」セクションで、Business Tierを開き、「Web Services」を選択します。 「項目」セクションで、「WSDLからJava Webサービス」を選択します。
「OK」をクリックします。 WSDLからJ2EE 1.4 Java Webサービスを作成ウィザードが起動します。 ウィザードで、「次へ」をクリックして開始します。
ステップ1のWebサービス記述ページで、「参照」をクリックし、SOADEMO
¥CreditService¥src
ディレクトリから「CreditService.wsdl」ファイルを選択します。
マッピング・ファイル: 空白のままにします。
図5-6 WSDLからJ2EE 1.4 Java Webサービスを作成ウィザード: ステップ1、Webサービス記述
「次へ」をクリックします。
ステップ2のデフォルト・マッピング・オプション・ページで、次の操作を実行します。
パッケージ名: 「org.soademo.creditservice」と入力します。
生成タイプのルート・パッケージ: 「org.soademo.creditservice.types」と入力します。
データ・バインディング・クラスの生成: このオプションを選択します。
既存のタイプ・クラスの再利用: このオプションを選択します。
パラメータにヘッダーをマップ: このオプションを選択します。
図5-7 WSDLからJ2EE 1.4 Java Webサービスを作成ウィザード: ステップ2、デフォルト・マッピング・オプション
「次へ」をクリックします。
ステップ3のカスタムDataTypeシリアライザを指定ページは空白のままにし、「次へ」をクリックします。
図5-8 WSDLからJ2EE 1.4 Java Webサービスを作成ウィザード: ステップ3、カスタムDataTypeシリアライザを指定
ステップ4のハンドラ詳細ページで、デフォルトをそのまま使用して「次へ」をクリックします。
図5-9 WSDLからJ2EE 1.4 Java Webサービスを作成ウィザード: ステップ4、ハンドラ詳細
ステップ5の状態ページでは、「ステートフル・サービス」を選択しないでください。 「次へ」をクリックします。
図5-10 WSDLからJ2EE 1.4 Java Webサービスを作成ウィザード: ステップ5、状態
終了ページの画面で、「終了」をクリックします。
JDeveloperで、エディタの設計ビューにCreditService.wsdl
が表示されます。
構造ウィンドウで、次のファイルが表示されていることを確認します。
「表示」→「構造」の順に選択して、構造ウィンドウを表示します。
アプリケーション・ナビゲータで、「SOADEMO」→「CreditService」→「アプリケーション・ソース」→「org.soademo.creditservice」→「CreditService」の順に選択します。
構造ウィンドウで、次のファイルが表示されていることを確認します。
CreditService.wsdl
ValidateCreditCard.java
CreditCardValidationFaultMessage.java
CreditCard.java
CreditService-java-wsdl-mapping.xml
ValidateCreditCardImpl.java
「CreditService」プロジェクトを右クリックし、「再ビルド」を選択します。
(構造ウィンドウで)「ValidateCreditCardImpl.java
」をダブルクリックし、verifyCC
メソッドを次のように編集します。
public boolean verifyCC(CreditCard creditCard) throws CreditCardValidationFaultMessage { boolean validOrNot = false; if ((creditCard.getCcType().equals("AMEX")) || (creditCard.getCcType().equals("Visa"))) { validOrNot = true; Long ccnum = new Long (creditCard.getCcNum()); if (ccnum < 12345678){ validOrNot = false; } else { validOrNot = true; } } else { validOrNot = false; } return validOrNot; }
CreditService.wsdl
ファイルには、次の2つのファイルがあります。
SOADEMO
¥CreditService¥src¥CreditService.wsdl
SOADEMO
¥CreditService¥public_html¥WEB-INF¥wsdl¥CreditService.wsdl
両方のwsdlファイルのホスト名とポートを検証する必要があります。
1番目の「CreditService.wsdl」をダブルクリックします(CreditService.wsdlは、アプリケーション・ナビゲータでは、「SOADEMO」→「CreditService」→「アプリケーション・ソース」内にあります)。
エディタで、「サービス」の下にある「CreditService」→「ValidateCreditCardServiceSoapHttp」→「soap:address」を順に開きます。
図5-11 エディタにCreditService.wsdlファイルが表示されたJDeveloper
「soap:address」を右クリックし、「プロパティ」を選択します。 「soap:addressのプロパティ」ダイアログが表示されます。
必要に応じて、「location」フィールドで、URLのホスト名とポートを編集します。 URLの先頭を表示するには、左端までスクロールする必要があります。
ホスト名は、Oracle Application Serverを実行している位置、ポートは、Oracle HTTP ServerまたはOC4JがリスニングしているHTTPポートを指定します。
「location」を変更した場合は、「OK」をクリックします。 変更しなかった場合は、「取消」をクリックします。
「ファイル」→「保存」の順に選択し、変更内容をWSDLファイルに保存します。
2番目のwsdlファイルに対して同じ手順を繰り返します。このwsdlファイルは、「CreditService」→「Webコンテンツ」→「WEB-INF¥wsdl」内にあります。
エディタで両方のファイルを閉じます。
(「SOADEMO」→「CreditService」→「リソース」内にある)「WebServices.deploy」を右クリックし、「プロパティ」を選択します。 「WARデプロイメント・プロファイルのプロパティ」ダイアログが表示されます。
左側で、「一般」を選択します。 右側で、「J2EE Webコンテキスト・ルートを指定」を選択し、その値として「CreditService」を入力します。
「OK」をクリックします。
「ファイル」→「保存」の順に選択し、変更内容を保存します。
「CreditService」プロジェクトを右クリックし、「再ビルド」を選択します。
CreditServiceプロジェクトを作成した後は、JDeveloperによって、WebServices.deployデプロイメント・プロファイルが自動的に作成されています。 このデプロイメント・プロファイルを使用して、CreditServiceプロジェクトをOracle Application Serverにデプロイできます。
「CreditService」→「リソース」の順に開き、「WebServices.deploy」を右クリックします。 「配布先」を選択し、使用しているアプリケーション・サーバー接続を選択します。
「アプリケーションの構成」ダイアログで「OK」をクリックします。
CreditServiceをデプロイした後は、ブラウザに次のURLを入力すると、CreditServiceに対するWSDLを表示できます。
http://
hostname
:
port
/CreditService/ValidateCreditCardServiceSoapHttp?WSDL
hostname
には、Oracle Application Serverが実行されているマシンの名前を指定します。
port
には、Oracle Application ServerがリスニングしているHTTPポートを指定します。 このポートは、Oracle HTTP ServerポートまたはOC4Jポートのいずれかになります。
CreditServiceをデプロイした後は、Application Server ControlのOC4J: ホーム・ページの「Webサービス」タブ(図5-14)と「アプリケーション」タブ(図5-15)に、CreditServiceが表示されていることを確認します。
図5-14 ValidateCreditCardServiceSoapHttp Webサービスが表示されたOC4J: ホーム・ページの「Webサービス」タブ
図5-15 SOADEMO-CreditService-WSアプリケーションが表示されたOC4J: ホーム・ページの「アプリケーション」タブ