ヘッダーをスキップ
Oracle Database Application Expressアドバンスト・チュートリアル
リリース3.0
E05693-01
  目次
目次

戻る
戻る
 
次へ
次へ
 

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エンベロープに入れて送受信できます。

このチュートリアルでは、Oracle Application Expressアプリケーション内からWebサービスをコールする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参照を作成する場合、次の方法のいずれかを使用できます。

このチュートリアルでは、両方の方法を説明します。まず、UDDIレジストリを検索して、Webサービス参照を作成します。その後、2つ目のWebサービス参照を手動で作成します。

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

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

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

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

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

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

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

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

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

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

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

      図7-1 ページの追加

      図7-1の説明が続きます。
      「図7-1 ページの追加」の説明

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

UDDIレジストリの検索

この演習では、UDDIレジストリでサービス名を検索して、Webサービス参照を作成します。その後で、映画館と場所を表示するためのフォームとレポートを作成します。


注意:

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

サービス名を検索して、新しいWebサービスを作成するには、次のステップを実行します。

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

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

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

    「Webサービス参照」ページが表示されます。

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

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

  5. 「UDDIの位置」で、「XMethods UDDI v2」を選択して「次へ」をクリックします。

  6. 「検索」で、次の各項目を指定します。

    1. 「検索タイプ」で、「サービス名」を選択します。

    2. 「名前」に、ignyteと入力して「検索」をクリックします。

    3. 「一致しているサービス」で、「Ignyte's Retrieve Theaters and Movie Showtimes」を選択します。

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

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

  7. 選択内容を確認して、「次へ」をクリックします。

    「WSDLの位置」フィールドに、WSDLドキュメントへのURLが表示されます。

  8. デフォルトを受け入れて「終了」をクリックします。このサービスは認証を必要としないため、ユーザー名およびパスワードを入力する必要はありません。

「Webサービス参照の作成」ページが表示されます。Webサービス参照(MovieInformation)が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-2に示すようなフォームとレポートが表示されます。ページの上部にある「Theater Information」フォームには、データ・エントリ・フィールドおよび「送信」ボタンがありますが、「Results」レポートにはデータがありません。

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

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

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

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

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

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

手動によるWeb参照の作成

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

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

手動によるWeb参照の作成

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

手動で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というname属性を持つoperation要素の子要素です。コード内で、soap:operation soapActionという文字列を検索します。

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

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

  11. SOAPリクエスト・エンベロープを検出するには、次のステップを実行します。

    1. MindreefなどのWebサービス・ツ―ルに移動します。

      http://www.mindreef.net/tide/scopeit/start.do?referer=xmethods&url=http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx?wsdl
      
      
    2. Invoke」タブをクリックし、「GetTheatersAndMovies」をクリックします。

    3. Mindreefの「Message Envelope」セクションで、次を実行します。

      - 「xs:string tns:zipCode」フィールドに#ZIP#と入力します。

      - 「xs:int tns:radius」フィールドに#RADIUS#と入力します。

      後で、ページに2つのアイテム「ZIP Code」および「Radius」を作成します。このサービスがコールされると、2つのアイテムに入力された値がリクエストとともに送信されます。

    4. Mindreefの「Invoke」ページにある「Preview/Edit」をクリックします。これにより、入力した値で定義されたパラメータを含むSOAPリクエスト・エンベロープが表示されます。

      このリリースの時点では、「Invoke」ページの「HTTP Authentication」リージョンの下に次の内容が表示されました。

      <?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>
      
      
  12. 「Web参照の作成/編集」の「SOAPエンベロープ」フィールドに、「Invoke」ページの「HTTP Authentication」リージョンの下に表示されたXMLコード(例: ステップ11dに示したコード)を入力します。

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

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

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

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

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

    「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. 「ページにブランチ」フィールドで、リストから「Movie Information」を選択します。フィールドにページ番号が表示されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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-5に示すような、「Movie Information」フォームが表示されます。

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

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

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

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