ヘッダーをスキップ
Oracle® Application Expressアドバンスト・チュートリアル
リリース3.2
B53796-03
  目次へ移動
目次

前
 
次
 

7 Webサービスの実装方法

Webサービスを使用すると、プラットフォームおよび言語に依存しない環境で、Webを介したアプリケーション間の通信が可能になります。典型的なWebサービスの使用例には、ビジネス・アプリケーションでHTTPプロトコルを使用して、指定したURLのサービスにリクエストを送信することがあります。サービスは、リクエストを受信すると、これを処理し、レスポンスを返します。外部Webサービスとのコールは、Oracle Application Expressで開発したアプリケーション内に組み込むことができます。

Oracle Application ExpressのWebサービスは、SOAP(Simple Object Access Protocol)に基づいています。SOAPは、World Wide Web Consortium(W3C)が策定した、インターネットを介したリクエストとレスポンスの送受信用の標準プロトコルです。SOAPメッセージは、サービス・プロバイダとサービス・ユーザー間でSOAPエンベロープに入れて送受信できます。

Webサービスは、次の方法でOracle Application Expressアプリケーション内からコールします。

このチュートリアルでは、2つ目の方法について説明します。

この項の内容は次のとおりです。


注意:

SOAP 1.1仕様はW3C覚書です。(SOAPより優先される標準を作成するために、W3C XML Protocol Working Groupが結成されています。)

Simple Object Access Protocol(SOAP)1.1については、次のWebサイトを参照してください。

http://www.w3.org/TR/SOAP/


関連項目:

『Oracle Database Application Expressユーザーズ・ガイド』の「Webサービスの実装」

Webサービス参照の作成

Oracle Application ExpressでWebサービスを使用するには、ウィザードを使用してWebサービス参照を作成します。Web参照を作成する場合、次の方法のいずれかを使用できます。

このチュートリアルでは、2つ目の方法(手動によるWebサービス参照の作成)について説明します。

新しいアプリケーションの作成

最初に、新しいアプリケーションを作成します。

アプリケーションを作成するには、次のステップを実行します。

  1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。

  2. 「アプリケーション・ビルダー」ホームページで、「作成」をクリックします。

  3. 「方法」で、「アプリケーションの作成」を選択して「次へ」をクリックします。

  4. 「名前」で、次のステップを実行します。

    1. 「名前」に、Web Servicesと入力します。

    2. 残りのデフォルトを受け入れて「次へ」をクリックします。

  5. 次のステップで空白ページを追加します。

    1. 「ページ・タイプの選択」で、デフォルトの「空白」を受け入れます。

    2. 「ページ名」に、Web Servicesと入力して「ページの追加」をクリックします。

      ページ上部のリストに、新しいページが表示されます。

    3. 次へ」をクリックします。

  6. 「タブ」で、デフォルトの「1レベルのタブ」を受け入れて「次へ」をクリックします。

  7. 「共有コンポーネント」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。

  8. 「属性」で、「認証スキーム」、「言語」、「ユーザー言語プリファレンスの派生元」にデフォルトを受け入れて、「次へ」をクリックします。

  9. 「ユーザー・インタフェース」で、「テーマ2」を選択して「次へ」をクリックします。

  10. 選択内容を確認して、「作成」をクリックします。

「アプリケーション」ホームページが表示されます。

アプリケーション・プロキシ・サーバー・アドレスの指定

インターネットのアクセスにプロキシ・サーバーが必要な環境の場合は、Webサービス参照を作成する前に「アプリケーション属性」ページでプロキシ・サーバー・アドレスを指定する必要があります。

プロキシ・アドレスを指定するには、次のステップを実行します。

  1. 「アプリケーション」ホームページで、「共有コンポーネント」をクリックします。

  2. 「アプリケーション」で、「定義」をクリックします。

  3. 「名前」で、「プロキシ・サーバー」フィールドにプロキシ・サーバーを入力します。

  4. 変更の適用」をクリックします。

    「アプリケーション」ホームページが表示されます。

WSDLからのWebサービス参照の作成

この演習では、WebサービスにWSDLドキュメントの位置を指定して、Webサービスを作成します。その後で、映画館と場所を表示するためのフォームとレポートを作成します。


注意:

次の演習は、最終的に起動される指定したWebサービスの可用性によって異なります。Webサービスを使用できない場合、この演習を行う際に問題が発生する可能性があります。

WSDLの位置を指定して新しいWeb参照を作成するには、次のステップを実行します。

  1. 「アプリケーション」ホームページで、「共有コンポーネント」をクリックします。

    「共有コンポーネント」ページが表示されます。

  2. 「ロジック」で、「Webサービス参照」を選択します。

  3. 作成」をクリックします。

  4. WSDLを検出するためにUDDIレジストリを検索するかどうかを尋ねるプロンプトが表示されたら、「いいえ」を選択して「次へ」をクリックします。

    1. 「WSDLの位置」フィールドに、次のように入力します。

      http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx?wsdl

    2. 次へ」をクリックします。

      選択したWebサービスについて説明するサマリー・ページが表示されます。

  5. 参照の作成」をクリックします。

    「Webサービス参照の作成」ページが表示されます。MovieInformationに対するWebサービス参照がWebサービス参照リポジトリに追加されます。

フォームとレポートの作成

次に、Webサービス参照で使用するフォームとレポートを含むページを作成する必要があります。

Webサービス参照を作成した後に、フォームとレポートを作成するには、次のステップを実行します。

  1. 「Webサービス参照の作成」ページで、「Webサービスのフォームとレポートの作成」を選択します。

  2. 「サービスと操作の選択」で、次のステップを実行します。

    1. 「Webサービス参照」で、「MovieInformation」を選択します。

    2. 「操作」で、「GetTheatersAndMovies」を選択します。

    3. 次へ」をクリックします。

  3. 「ページおよびリージョン属性」で、次のステップを実行します。

    1. 「フォーム・リージョン・タイトル」を、「Theater Information」に変更します。

    2. その他のデフォルトを受け入れて「次へ」をクリックします。

  4. 「入力アイテム」で、次のステップを実行します。

    1. P2_ZIPCODEおよびP2_RADIUSで、「作成」列のデフォルトである「はい」を受け入れます。

    2. P2_ZIPCODEで、「アイテム・ラベル」のデフォルトをZIP Codeに変更します。

    3. 次へ」をクリックします。

  5. 「Webサービスの結果」で、次のステップを実行します。

    1. 「一時結果セット名(コレクション)」で、デフォルトを受け入れます。

    2. 「レポート対象の結果ツリー」で、「Theater (tns:Theater)」を選択します。

    3. 次へ」をクリックします。

  6. 「結果パラメータ」で、すべてのパラメータを選択して「終了」をクリックします。

  7. ページの実行」をクリックします。

  8. ログインするように要求されたら、ワークスペースのユーザー名およびパスワードを入力して「ログイン」をクリックします。

    図7-1に示すようなフォームとレポートが表示されます。ページの上部にある「Theater Information」フォームには、データ・エントリ・フィールドおよび「送信」ボタンがありますが、「Results」レポートにはデータがありません。

    図7-1 「Theater Information」フォームとデータのないレポート

    図7-1の説明が続きます。
    「図7-1 「Theater Information」フォームとデータのないレポート」の説明

  9. フォームをテストするには、「ZIP Code」フィールドに43221、「Radius」フィールドに5と入力します。続いて、「送信」をクリックします。

    ページの下部にあるレポートは、図7-2のようになります。レポートには、「ZIP code」および「radius」の値が、入力された値と一致する映画館の名前と住所が表示されます。

    図7-2 結果データが表示された「Theater Information」レポート

    図7-2の説明が続きます。
    「図7-2 結果データが表示された「Theater Information」レポート」の説明

手動によるWebサービス参照の作成

この演習では、Webサービスに関する情報を指定し、手動のファシリティを使用してWeb参照を作成します。手動によるWeb参照は、WSDLドキュメントを目視で確認し、Webサービス・リクエスト用のSOAPエンベロープを特定するツールを使用して作成します。

この項の内容は次のとおりです。

手動によるWebサービス参照の作成

Web参照を手動で作成するには、MovieInformationというサービス用のWSDLからコードをコピーします。

次のステップで説明する設定例は、このドキュメントがリリースされた時点でのMovieInformationサービスに基づいていることに注意してください。

手動でWeb参照を作成するには、次のステップを実行します。

  1. 「アプリケーション」ホームページで、「共有コンポーネント」をクリックします。

  2. 「ロジック」で、「Webサービス参照」をクリックします。

  3. 作成」をクリックします。

  4. 「UDDIの検索」で、「いいえ」を選択して「次へ」をクリックします。

  5. 右側にある「タスク」リストから、「Webサービス参照の手動作成」リンクをクリックします。

    「Webサービスの作成/編集」ページが表示されます。

  6. 「名前」フィールドに、Movie Infoと入力します。

  7. 次のステップを実行して、MovieInformationサービスのエンドポイントを検出します。

    1. 次のURLに移動してWSDLを開きます。

      http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx?wsdl
      
    2. WSDLで、soap:addressエレメントのlocation属性を見つけます(これはportエレメントの子です)。コード内でsoap:address locationという語を検索できます。

      このリリースの時点では、属性の値は次のようになっていました。

      http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx
      
  8. 「Webサービスの作成/編集」ページの「URL」フィールドに、検出したMovieInformationサービスのエンドポイントを入力します。例: http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx

  9. GetTheatersAndMovies操作に対するSOAPアクションを検索するには、次のステップを実行します。

    1. 必要に応じて、再度、WSDLを開きます。ステップ7aを参照してください。

    2. WSDLで、soap:operationエレメントのsoapAction属性を見つけます(これはGetTheatersAndMoviesの名前属性を持つ操作エレメントの子です)。コード内でsoap:operation soapActionという語を検索できます。

      このリリースの時点では、属性の値は次のようになっていました。

      http://www.ignyte.com/whatsshowing/GetTheatersAndMovies
      
  10. 「Webサービスの作成/編集」ページの「アクション」フィールドに、検出したSOAPアクションを入力します。例: http://www.ignyte.com/whatsshowing/GetTheatersAndMovies

  11. 「Web参照の作成/編集」ページの「SOAPエンベロープ」フィールドに、SOAPリクエスト・メッセージを表すXMLコードを入力します。次に例を示します。

    <?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:tns="http://www.ignyte.com/whatsshowing"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <soap:Body>
          <tns:GetTheatersAndMovies>
             <tns:zipCode>#ZIP#</tns:zipCode>
             <tns:radius>#RADIUS#</tns:radius>
          </tns:GetTheatersAndMovies>
       </soap:Body>
    </soap:Envelope>
    

    指定されたWebサービスに対して有効なSOAPリクエストを作成するために、MindReefなどのSOAPメッセージ生成ツールを使用できます。

  12. 「コレクションにレスポンスを格納」フィールドに、MOVIE_RESULTSと入力します。これは、Webサービスからのレスポンスが格納される場所です。

    「Webサービスの作成/編集」ページは、図7-3のようになります。

    図7-3 「Webサービスの作成/編集」ページ

    図7-3の説明が続きます。
    「図7-3 「Webサービスの作成/編集」ページ」の説明

  13. 作成」をクリックします。

    「Webサービス参照」ページが表示され、リストには「Movie Info」が表示されます。

Webサービスのテスト

Webサービスをテストするには、次のステップを実行します。

  1. 「Webサービス参照」ページで、「Movie Info」Web参照の横にある「テスト」アイコンをクリックします。

    「Webサービスのテスト」ページが表示されます。

    「ビュー」は「詳細」に設定する必要があります。それ以外の場合、「テスト」アイコンは表示されません。

  2. 「SOAPエンベロープ」フィールドで、#ZIP#を43221に置き換え、#RADIUS#を5に置き換えます。

  3. テスト」をクリックします。

  4. 「結果」フィールドで、レスポンスについて次の各項目を確認します。

    • リターン・エンベロープのベース・ノードに次のような名前が付いている。

      GetTheatersAndMoviesResponse
      
    • メッセージの名前空間が次のようになっている。

      http://www.ignyte.com/whatsshowing
      
    • 結果要素に表示されたレスポンスの該当部分へのXPathが次のようになっている。

      /GetTheatersAndMoviesResponse/GetTheatersAndMoviesResult/Theater/Movies/Movie
      
    • 結果内の該当する要素に、次のような名前が付いている。

      Name
      Rating
      RunningTime
      ShowTimes
      

手動Webサービスをコールするためのページの作成

次に、手動Webサービスをコールするためのページを作成します。

手動Webサービスをコールするためのページを作成するには、次のステップを実行します。

  1. アプリケーション」ブレッドクラム・リンクをクリックします。

  2. 「アプリケーション」ホームページで、「ページの作成」をクリックします。

  3. 「ページ」で、「空白ページ」を選択して「次へ」をクリックします。

  4. 「ページ番号」のデフォルト値を受け入れて、「次へ」をクリックします。

  5. 「名前」にFind Moviesと入力して、「次へ」をクリックします。

  6. 「タブ」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。

  7. 終了」をクリックします。

  8. 「成功」ページで、「ページの編集」をクリックします。

  9. ページ定義で、「リージョン」セクションに移動します。

  10. 作成」アイコンをクリックします。

  11. 「リージョン」で、「HTML」を選択して「次へ」をクリックします。

  12. HTMLリージョン・コンテナとして「HTML」を選択して「次へ」をクリックします。

  13. 「タイトル」フィールドに、Movie Informationと入力して「次へ」をクリックします。

  14. リージョンの作成」をクリックします。

「送信」ボタンの作成

次に、このページから検索を開始するための「送信」ボタンをリージョンに追加します。

「送信」ボタンを作成するには、次のステップを実行します。

  1. ページ定義で、「ボタン」セクションにある「作成」アイコンをクリックします。

  2. 「ボタン・リージョン」でデフォルトの「Movie Information」を受け入れて、「次へ」をクリックします。

  3. 「ボタン位置」で、デフォルトの「リージョン位置にボタンを作成」を受け入れて「次へ」をクリックします。

  4. 「ボタン属性」の「ボタン名」に送信と入力して、「次へ」をクリックします。

  5. 「ボタン・テンプレート」で、デフォルトの「ボタン」を受け入れて、「次へ」をクリックします。

  6. 「表示プロパティ」で、「位置」リストから「リージョン・テンプレートの位置の#CREATE#」を選択して「次へ」をクリックします。

  7. 「ページにブランチ」フィールドで、リストから「Find Movies」を選択します。フィールドにページ番号が表示されます。

  8. ボタンの作成」をクリックします。

「ZIP Code」および「Radius」用のアイテムの作成

次に、ユーザーが検索したい用語を入力できるアイテムを2つ作成します。

「ZIP Code」アイテムを作成するには、次のステップを実行します。

  1. 「Find Movies」のページ定義で、「アイテム」セクションにある「作成」アイコンをクリックします。

  2. 「アイテム・タイプ」で、「テキスト」を選択して「次へ」をクリックします。

  3. 「テキスト制御の表示タイプ」で、デフォルトの「テキスト・フィールド」を受け入れて「次へ」をクリックします。

  4. 「表示位置および名前」で、次のように指定します。

    1. 「アイテム名」に、ZIPと入力します。

      Movie Info Webサービス参照では、SOAPリクエストで送信される郵便番号を#ZIP#と定義しています。このため、「アイテム名」には、Webサービスに送信されるSOAPリクエストにその値が代入されるように、ZIPと指定する必要があります。

    2. 「リージョン」で、デフォルトのMovie Informationを受け入れます。

    3. 次へ」をクリックします。

  5. 「ラベル」フィールドの既存のテキストをZIP Codeに置き換え、「次へ」をクリックします。

  6. アイテムの作成」をクリックします。

「Radius」アイテムを作成するには、次のステップを実行します。

  1. 「Find Movies」のページ定義で、「アイテム」セクションにある「作成」アイコンをクリックします。

  2. 「アイテム・タイプ」で、「テキスト」を選択して「次へ」をクリックします。

  3. 「テキスト制御の表示タイプ」で、デフォルトの「テキスト・フィールド」を受け入れて「次へ」をクリックします。

  4. 「表示位置および名前」で、次のように指定します。

    1. 「アイテム名」に、RADIUSと入力します。

      Movie Info Webサービス参照では、SOAPリクエストで送信される区域を#RADIUS#と定義しています。このため、「アイテム名」には、Webサービスに送信されるSOAPリクエストにその値が代入されるように、RADIUSと指定する必要があります。

    2. 「リージョン」で、デフォルトのMovie Informationを受け入れます。

    3. 次へ」をクリックします。

  5. 「ラベル」フィールドに、Radiusと入力して「次へ」をクリックします。

  6. アイテムの作成」をクリックします。

手動作成されたWeb参照をコールするためのプロセスの作成

次に、手動で作成したWeb参照をコールするプロセスを作成します。

手動で作成したWeb参照をコールするプロセスを作成するには、次のステップを実行します。

  1. 「Find Movies」のページ定義で、「プロセス」セクションにある「作成」アイコンをクリックします。

  2. 「プロセス・タイプ」で、「Webサービス」を選択して「次へ」をクリックします。

  3. 「名前」フィールドに、Call Movie Infoと入力して「次へ」をクリックします。

  4. 「Webサービス参照」リストから「Movie Info」を選択して、「次へ」をクリックします。

  5. 「成功メッセージ」領域に、Called Movie Infoと入力します。

  6. 「失敗メッセージ」領域にError calling Movie Infoと入力して、「次へ」をクリックします。

  7. 「対象ボタン」リストから「送信」を選択して、「プロセスの作成」をクリックします。

Webサービスの結果のレポートの作成

次に、コールされたWebサービスの結果を表示するレポートを追加します。

Webサービスの結果のレポートを作成するには、次のステップを実行します。

  1. 「Find Movies」のページ定義で、「リージョン」セクションにある「作成」アイコンをクリックします。

  2. 「レポート」を選択し、「次へ」をクリックします。

  3. 「リージョン」で、「Webサービスの結果を含むコレクションのレポート」を選択して、「次へ」をクリックします。

  4. 「タイトル」フィールドに、Search Resultsと入力して「次へ」をクリックします。

  5. 「Web参照タイプ」で、「手動で作成済」を選択して、「次へ」をクリックします。

  6. 「Web参照情報」で、次の各項目を指定します。

    1. 「Webサービス参照」で、リストから「Movie Info」を選択します。

    2. 「SOAPスタイル」で、「ドキュメント」を選択します。

    3. 「メッセージの書式」で、「リテラル」を選択します。

      これらの2つの属性は、サービスのWSDLドキュメントを手動で確認することにより特定できます。

    4. 「結果ノード・パス」に、次のように入力します。

      /GetTheatersAndMoviesResponse/GetTheatersAndMoviesResult/Theater/Movies/Movie
      
    5. 「メッセージの名前空間」に、次のように入力します。

      http://www.ignyte.com/whatsshowing
      

      「結果ノード・パス」および「メッセージの名前空間」は、両方とも、サービスをテストしたときに確認が完了しています。

    6. 次へ」をクリックします。

  7. 「パラメータ名」の最初の4箇所に、NameRatingRunningTimeおよびShowTimesと入力して、「SQLレポートの作成」をクリックします。

  8. ページをテストするには、次のステップを実行します。

    1. ページの実行」をクリックします。ログインするように要求されたら、ワークスペースのユーザー名およびパスワードを入力します。図7-4に示すような、「Movie Information」フォームが表示されます。

      図7-4 データのない「Movie Information」フォーム

      図7-4の説明が続きます。
      「図7-4 データのない「Movie Information」フォーム」の説明

    2. 「ZIP Code」および「Radius」フィールドに情報を入力して、「送信」をクリックします。

      「Search Results」領域に結果が表示されます。