24 SOAP Webサービスの作成

ローカル・マシンでOracle JDeveloperを使用して、JavaクラスからSOAP Webサービスを作成し、そのWebサービスをローカルでテストしてから、JCS - SaaS Extensionインスタンスにデプロイします。

データベース・コンテンツ、Javaクラスまたは他のサービスを含む様々なデータ・ソースへのインタフェースを提供するためのWebサービスを構築できます。  JCS - SaaS Extensionは、異種のデータ・ソースの統合ポイントとして機能し、これらのデータ・ソースをアウトバウンド向けWebサービスとして再パッケージできます。Webサービスは、Javaクラスから開始して作成(ボトムアップ・アプローチ)することも、WSDLファイルから開始して作成(トップダウン・アプローチ)することもできます。

Java Webサービスを新規に開発する場合、または既存のJavaクラスをWebサービスとして公開する場合、これが最も直接的なアプローチです。通常、標準によって、またはサービスの既存のインスタンスによってすでに定義されているWebサービスを実装する場合、WSDLから開始してWebサービスを構築します。どちらの場合も、WSDLはすでに存在します。 

 この例では、単純なJavaクラスから開始して、ボトムアップ・アプローチを使用してWebサービスを構築します。開発を簡略化するために、Oracle JDeveloperを使用して、クラスを作成し、これらのクラスからWebサービスを生成します。

注意:

ここに示す例を実行する前に、「JCS - SaaS Extensionを使用した開発用のIDEの構成」内のタスクをまだ実行していない場合は、これらのタスクを実行してください。

Javaクラスを使用した汎用プロジェクトの作成

Oracle JDeveloperを使用して、汎用プロジェクトを作成してから、Webサービスの作成元にするJavaクラスを追加します。

Oracle JDeveloperで汎用プロジェクトを作成してから、Javaクラスを追加する手順:
  1. 「ファイル」メニューから、「新規」を選択します。
    「新規ギャラリ」ダイアログが表示されます。
  2. 「カテゴリ」の下で、「一般」を展開し、「プロジェクト」を選択します。
  3. 「アイテム」の下で、「汎用プロジェクト」を選択し、「OK」を押します。
    汎用プロジェクトの作成ダイアログが表示されます。
  4. 「プロジェクト名」フィールドで、プロジェクトの名前を入力します。
    たとえば、「AccountWSProject」と入力します。
  5. 「ディレクトリ」フィールドで、アプリケーションのディレクトリを入力するか、「参照」をクリックしてディレクトリを探します。
  6. 「プロジェクト・テクノロジ」タブで、「Java」を選択し、矢印を使用して「使用可能なテクノロジ」リストから「選択済のテクノロジ」リストに移動します。
  7. 「Next」を押します。
    2番目の汎用プロジェクトの作成ダイアログが表示されます。
  8. 「デフォルト・パッケージ」フィールドで、「 com.oracle.examples.account」と入力し、「終了」を押します。
    作成したプロジェクトが「アプリケーション・ナビゲータ」に表示されます。ここに表示されるデフォルト・パッケージ構造は絶対要件ではありません。どのようなデフォルト構造であれ、アプリケーションにとって意味のあるものを使用する必要があります。
  9. 「ファイル」メニューから、「新規」を選択します。
    「新規ギャラリ」ダイアログが表示されます。
  10. 「カテゴリ」の下で、「一般」を展開し、「Java」を選択します。
  11. 「アイテム」の下で、「Javaクラス」を選択し、「OK」を押します。
    「Javaクラスの作成」ダイアログが表示されます。
  12. 「名前」フィールドに「Account」と入力し、「OK」を押します。
    AccountWSProjectの「アプリケーション・ソース」ディレクトリの下にあるcom.oracle.examples.accountパッケージにAccount.javaが作成されます。IDEコード・エディタにAccount.javaのソース・ファイルが開きます。
  13. コード・エディタで、[Ctrl]を押しながら[A]を押し、生成したコードを選択してから、作成するWebサービスによって使用されるアクセサ・メソッドを定義するこのコードと置き換えます。
    package com.oracle.examples.account; public class Account { private long accountId; private String accountName; private double balance; public Account(long id, String accName, double bal) { this.accountId = id; this.accountName = accName; this.balance = bal; } public long getAccountId() { return accountId; } public void setAccountId(long accountId) { this.accountId = accountId; } public String getAccountName() { return accountName; } public void setAccountName(String accountName) { this.accountName = accountName; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; } }
  14. [Ctrl]を押しながら[S]を押し、ファイルを保存します。
  15. 「ファイル」メニューから、「新規」を選択します。
    「新規ギャラリ」ダイアログが表示されます。
  16. 「カテゴリ」の下で、「一般」を展開し、「Java」を選択します。
  17. 「アイテム」の下で、「Javaクラス」を選択し、「OK」を押します。
    「Javaクラスの作成」ダイアログが表示されます。
  18. 「名前」フィールドに「AccountService」と入力し、「OK」を押します。
    AccountWSProjectの「アプリケーション・ソース」ディレクトリの下にあるcom.oracle.examples.accountパッケージにAccountService.javaが作成されます。IDEコード・エディタにAccountService.javaのソース・ファイルが開きます。
  19. コード・エディタで、[Ctrl]を押しながら[A]を押し、生成したコードを選択してから、Webサービスを定義(コンストラクタにデータを追加し、コレクションを定義し、ユーティリティ・メソッドを提供)するこのコードと置き換えます。
    package com.oracle.examples.account; import java.util.ArrayList; import java.util.Collection; public class AccountService { Collection<Account> accounts = new ArrayList<Account>(); public AccountService(){ createAccount(1, "Bill", 100.00); createAccount(2, "Dave", 75.00); createAccount(3, "Joe", 50.00); } private void createAccount(long id, String name, double balance) { Account newAccount = new Account(id, name, balance); accounts.add(newAccount); } public double getBalance(long id) { double result; result = 0.0; if (accounts != null) { for (Account acc : accounts) { if (acc.getAccountId() == id) { result = acc.getBalance(); } } } return result; } public String getName(long id) { String result = null; if (accounts != null) { for (Account acc : accounts) { if (acc.getAccountId() == id) { result = acc.getAccountName(); } } } return result; } public Collection<Account> getAllAcccounts() { return accounts; } }
  20. [Ctrl]を押しながら[S]を押し、ファイルを保存します。
次に、2つのJavaクラス(Account.javaおよびAccountService.java)からWebサービスを作成します。

JavaクラスからのSOAP Webサービスの作成

ここでは、ボトムアップのSOAP Webサービスを作成します。つまり、JavaクラスからWebサービスを作成します。

「Javaクラスを使用した汎用プロジェクトの作成」で作成したJavaクラスからAccountService SOAP Webサービスを作成する手順:
  1. 「アプリケーション・ナビゲータ」ウィンドウで、「AccountWSProject」内の「アプリケーション・ソース」ディレクトリの下の「com.oracle.examples.account」パッケージ内の「AccountService.java」ソース・ファイルを選択します。
  2. 右クリックして「Webサービスの作成」を選択します。
    「Java Webサービスの作成」ウィザードが表示されます。
  3. 「デプロイメント・プラットフォームの選択」ステップで、「Java EE 1.5(JAX-WS注釈のサポート付き)」を選択し、「Next」を選択します。
    ウィザードが次のステップ「生成オプション」に進みます。
  4. 「生成オプション」ステップで、「Next」を押してデフォルト値を受け入れます。
    ウィザードが次のステップ「メッセージの書式」に進みます。
  5. 「メッセージの書式」ステップで、「Next」を押してデフォルト値を受け入れます。
    ウィザードが次のステップ「メソッド」に進みます。
  6. 「メソッド」ステップで、「getBalance」、「getName」の順に選択し、Webサービスによってこれらのメソッドが公開されるようにします。「getAllAccounts」メソッドの選択は解除できます。
    場合によっては、SOAP Webサービスによって公開されるメソッドを微調整することが求められます。
  7. 「終了」を押します。
  8. 「アプリケーション・ナビゲータ」ウィンドウで、「AccountWSProject」を選択し、[Ctrl]を押しながら[S]を押し、プロジェクトを保存します。
  9. プロジェクト内のweb.xmlファイルを選択してから、[Ctrl]を押しながら[S]を押し、これも保存します。
  10. AccountService.java」を選択し、IDEコード・エディタで開きます。
    「Webサービスの作成」ウィザードで追加したWebサービスの注釈に注意します。
次に、HTTPアナライザを使用して、Webサービスをテストします。これについては、「HTTPアナライザを使用したSOAP Webサービスのテストおよびトラブルシューティング」を参照してください。

HTTPアナライザを使用したSOAP Webサービスのテストおよびトラブルシューティング

HTTPアナライザを実行し、Webサービスによって公開されたメソッドが実際に機能するかどうかを確認します。

HTTPアナライザを実行する手順:
  1. 「アプリケーション・ナビゲータ」ウィンドウで「AccountService.java」を右クリックし、「Webサービスのテスト」を選択します。
    構成されていた場合、統合アプリケーション・サーバーが起動し、Webサービスがデプロイされます。WebサービスのターゲットURLがサーバー・ログに表示されます。「HTTPアナライザ」ウィンドウが表示され、URLおよびWSDLファイルへのリンクが表示されます。
  2. 「操作」ドロップダウンで、テストするメソッドを選択します。
    Webサービスによって公開されるメソッドには、getNameおよびgetBalanceが含まれます。
  3. 「パラメータ」セクションで、有効なID (12または3)を入力してから、「リクエストの送信」を押します。
    getNameを選択した場合、Bill、DaveまたはJoeが表示されます。getBalanceを選択した場合、100.0、75.0または50.0が表示されます。
  4. 「アプリケーション・サーバー」ウィンドウで、「アプリケーション・サーバー」ノード、統合Webサーバー・ノード、「デプロイメント」ノードを展開し、テスト用としてデプロイされたWebサービスを探します。
  5. デプロイしたWebサービスを右クリックし、「アンデプロイ」を選択します。
次に、JCS - SaaS ExtensionにデプロイするWARファイルにWebサービスをデプロイします。「JCS - SaaS ExtensionへのSOAP Webサービスのデプロイ」を参照してください。

JCS - SaaS ExtensionへのSOAP Webサービスのデプロイ

Oracle JDeveloperを使用して、ローカル・マシン上のWARファイルにWebサービスをデプロイしてから、JCS - SaaS Extensionインスタンスに手動でデプロイします。

Oracle JDeveloperを使用してローカルWebサービスをJCS - SaaS Extensionインスタンスにデプロイする手順:
  1. 「アプリケーション・ナビゲータ」ウィンドウで、「AccountWSProject」を右クリックし、「デプロイ」「Webサービス」の順に選択します。
    Webサービスのデプロイ・ダイアログの「デプロイメント・アクション」パネルが表示されます。
  2. 「WARにデプロイ」を選択してから、「終了」を押します。
    「デプロイメント」ログに、Webアプリケーション・モジュールが書き込まれている場所が表示されます。
  3. JCS - SaaS Extensionアカウントにログインします。
  4. ダッシュボードの「アプリケーション」ペインで、「新規デプロイ」アイコン(緑色のプラス記号)を選択します。
  5. 「アプリケーションのデプロイ」ウィンドウで、デプロイするアプリケーションの名前を入力してから、アプリケーションのアーカイブにナビゲートし、「デプロイ」を押します。
    ダッシュボードをリフレッシュし、アプリケーションのリスト内でデプロイしたアプリケーションを確認してください。
  6. サービスが予期したとおりに動作しない場合、HTTPアナライザでリクエスト・ペイロードおよびレスポンス・ペイロードを調査し、問題の原因を確認する必要があります。
    HTTPアナライザを使用すると、Webサービス・クライアントとサービスの間のリクエスト/レスポンス・トラフィックを監視できます。HTTPアナライザは、送受信されたHTTPトラフィックの観点からWebサービスをデバッグする上で役に立ちます。HTTPアナライザの「テスト」ウィンドウの下部にある適切なタブを選択し、リクエスト・パケットおよびレスポンス・パケットのHTTPヘッダーのコンテンツを調査します。選択するタブに応じて、SOAP構造(JAX-WS Webサービスの場合)、HTTPコンテンツ、またはHexコンテンツまたはRAWメッセージ・コンテンツを確認できます。
次に、JCS - SaaS ExtensionインスタンスにデプロイしたWebサービスのWSDLファイルを表示します。「WSDLファイルの調査によるSOAP Webサービスの問題のトラブルシューティング」を参照してください。

WSDLファイルの調査によるSOAP Webサービスの問題のトラブルシューティング

デプロイ済WebサービスのWSDLの表示は、デプロイ済Webサービスの可用性を確認するために使用できるトラブルシューティング・ツールの1つです。WSDLが表示された場合、Webサービスは使用可能です。

「JCS - SaaS ExtensionへのSOAP Webサービスのデプロイ」JCS - SaaS ExtensionにデプロイしたWebサービスのWSDLを表示する手順:
  1. JCS - SaaS Extensionコントロール・ウィンドウから、アプリケーションURLをクリックします。
    アプリケーションURLが表示された新しいブラウザ・ウィンドウが表示されます。
  2. URLにAccountServicePort?wsdlを追加します。
    Webサービスが使用可能である場合、WSDLが表示されます。
  3. WSDLファイルのコンポーネントを入念に調べます。
    慎重かつ入念に調べれば、設計したとおりにWebサービスで下位レベルのJavaクラスが公開されているかどうかを確認しやすくなります。