このチュートリアルでは、Enterprise JavaBeans(EJB)に支えられるRESTサービスを通じてデータベースのデータを問い合わせるマスター・ディテール形式のOracle ADF Webアプリケーションを構築します。構築するOracle JDeveloper 12cアプリケーションの範囲を限定するため、このハンズオン・アプリケーションの一部についてはすでに構築済みです。

部門および従業員のデータにアクセスするために、DepartmentServiceEmployeeServiceという2つのクラスを使用してREST Webサービスを実装します。このチュートリアルの目的上、各クラスのコードは省略しますが、通常、実際の実装では、各リソースについてCRUDのすべてのメソッドをサポートすることになります。

このチュートリアルを実行するには、JDeveloper 12.1.3がインストールされており、HRスキーマを利用してOracle Database 10g以降へアクセスできる必要があります。

目的 所要時間 アプリケーション

このチュートリアルでは、Oracle JDeveloper 12c Version 12.1.3.0.0を使用して、RESTfulサービスを使用するWebアプリケーションを構築します。このチュートリアルを実行するには、スタータ・アプリケーションをダウンロードし、解凍する必要があります。こちらをクリックして、スタータ・アプリケーションをダウンロードしてください。
これから作成するアプリケーションの完成版を確認するには、「Download」ボタンをクリックして最終的なアプリケーションのzipファイルをダウンロードし、JDeveloperのmyworkフォルダに解凍してください。

90分 application name.zipのダウンロード
パート1:RESTfulサービスの構築
最初に、既存のアプリケーションのPOJOから2つのRESTサービスを作成します。
ステップ1:アプリケーションの準備
コンポーネントを作成する前に、まず、スタータ・アプリケーションとプロジェクトを開く必要があります。
  1. スタート」→「すべてのプログラム」→「Oracle Fusion Middleware 12.1.3.0.0」→「JDeveloper Studio 12.1.3.0.0」を選択して、JDeveloperを起動します。

  2. ロールを選択するよう指示されたら、「Studio Developer (All Features)」を選択して、「OK」をクリックします。

    起動時のSelect Roleダイアログ
  3. Tip of the Dayウィンドウを閉じます。

    ロードが完了したら、JDeveloper IDEが表示されます。JDeveloperを初めて開いた場合、Start Pageが表示されます。後でStart Pageを再表示する場合は、「Help」→「Start Page」を選択します。

    JDeveloperのStart Page

    このページには、JDeveloperについて学習するためのさまざまなオプションが表示されています。これらのオプションについて確認したら、「X」をクリックしてStart Pageタブを閉じます(Xは、タブにマウスを合わせると表示されます)。

  4. Application」タブをクリックしてApplicationsウィンドウに戻ります。「Open Application」アイコンをクリックします。

    New Applicationリンク
  5. Open Application(s)ウィンドウで、スタータ・アプリケーションの解凍先に移動し、「...\EjbRestService\EjbRestService.jws」ファイルを選択します。
    次に「Open」をクリックします。

    New Galleryダイアログ

     

  6. Applicationウィンドウに2つのプロジェクト(ModelRestServices)が表示されます。
    Modelプロジェクトには、データ・クラスとSession Beanが含まれています。
    RestServicesプロジェクトには、サービス・クラスとヘルパー・メソッドが含まれています。

    Fusion Webアプリケーションの作成のステップ1 Fusion Webアプリケーションの作成のステップ1

  7. 次に、HRスキーマを指すようにデータベース接続を設定します。「Window」→「Database」→「Databases」を選択し、「EjbRestService」ノードを展開してhrconnノードを表示します。

    Fusion Webアプリケーションに対して作成されたデフォルトのアプリケーション・ナビゲータ

    Fusion Webアプリケーションに対して作成されたデフォルトのアプリケーション・ナビゲータ

  8. hrconn」を右クリックし、メニューから「Properties」を選択します。お使いのデータベース設定にあわせてデータベース接続情報を編集します。変更内容をテストし(「Test」をクリック)、「OK」をクリックします。

    Fusion Webアプリケーションに対して作成されたデフォルトのアプリケーション・ナビゲータ

     

  9. 次に、Oracle JDeveloperに統合されたOracle WebLogic Serverインスタンスを起動します。Oracle WebLogic Serverを起動するには、「Run」→「Start Server Instance」を選択します。統合されたOracle WebLogic Serverを初めて実行する場合には、Create Default Domainダイアログ・ボックスが開きます。デフォルトのOracle WebLogic Serverドメイン用のパスワードを作成します。

    注:統合されたOracle WebLogic Serverに、localhostおよびお使いのコンピュータのIPアドレスをリスニングさせるためには、Listen Addressからアドレスを選択しないようにしてください。

    Fusion Webアプリケーションに対して作成されたデフォルトのアプリケーション・ナビゲータ


    Fusion Webアプリケーションに対して作成されたデフォルトのアプリケーション・ナビゲータ

  10. 統合されたOracle WebLogic Serverが起動するまで待ってから、次の手順に進みます。サーバーを初めて起動したときには、Oracle WebLogic Serverドメインが構築されます。この処理には数分かかる場合があります。

     

ステップ2:部門RESTサービスの作成
ここでは、Oracle JDeveloperのRESTfulサービス作成用ウィザードを使用して、DepartmentServiceクラスをRESTに対応させ、GETアクセス用のgetAll()パブリック・メソッドを公開します。Javaファイルに追加されるREST固有のアノテーションは、Oracle JDeveloperにバンドルされたJava EE 6 JAX-RS RESTリファレンス実装であるJerseyによるものです。その後、Oracle JDeveloperに統合されたHTTP Analyzerを使用してRESTサービスをテストします。

EjbRestServiceワークスペースには2つのプロジェクトがあります。

ModelプロジェクトはOracle TopLinkとEJB Session Beanを使用して、HRスキーマ内のDepartments表およびEmployees表への問合せと更新を行います。
RestServiceプロジェクトは、2つのJavaBeans(DepartmentService.javaとEmployeeService.java)からModelプロジェクト内のEJB Session Beanを参照して、データの読取りと書込みを行います。この2つのJavaBeansは、以下の手順でRESTサービスとして公開するリソースを表します。

部門サービス(DepartmentService)を作成するには、次の手順を実行します。

  1. Applicationsウィンドウで、「RestService」プロジェクト・ノード、「Application Sources」、「rservice」パッケージの順に展開します。

    コンテキスト・メニューのNewオプション

  2. DepartmentService.java」ファイル・エントリを右クリックし、「Create RESTful Service」を選択します。

    New Galleryダイアログ

     

  3. Create RESTful Service from Java Classダイアログ・ボックスで、Root Path入力フィールドのテキストをtut/departmentに変更して、部門ソースにアクセスするためのベースURIを定義し、「Next」をクリックします。

    表からのエンティティの作成のステップ1
  4. Configure HTTP Methods表で、「getAll」エントリを選択します(この表のラベル文字列全体を表示するにはダイアログ・ボックスのサイズを変更する必要があります)。

    このDepartmentService.javaのgetAll()パブリック・メソッドは、EJBビジネス・サービスにアクセスして、HRスキーマ内のDepartments表から部門のリストを問い合わせて、その結果をXMLレスポンスとして返します。

    表からのエンティティの作成のステップ1

  5. RESTの読取りリクエストはGETリクエストとなるため、getAllエントリのType列で「GET」を選択します。

    入力引数は不要なので、Consumesフィールドは空のままにします。

    表からのエンティティの作成のステップ3
  6. Producesフィールドで「」ボタンをクリックし、「application/xml」を選択して「OK」をクリックします。

    表からのエンティティの作成のステップ4でデータベース接続を定義
  7. Pathフィールド内でダブルクリックし、スラッシュ(/)を値として追加します。
    この設定により、RESTのルートURI(tut/department)に対してGETリクエストが発行されると、部門のリストが問い合わされて返されます。

    次に、「Next」をクリックします。

    表からのエンティティの作成のステップ4でデータベース接続を定義

  8. Return Type Warning ダイアログ・ボックスで「OK」をクリックします。このハンズオン・サンプルでは、EJBエンティティに追加されたJAXBアノテーションを使用してJavaオブジェクトからXMLへの解析(またはその逆の解析)を行うため、このダイアログ・ボックスは無視してかまいません。

    Create Database Connectionダイアログ

    Finish」をクリックして、サービスを作成します。

  9. Finish」をクリックして、サービスを作成します。

    Oracle JDeveloperのJavaコード・エディタでDepartmentService.javaクラスが開きます。このクラスのgetAllメソッドには、
    @GET
    @Produces("application/xml")
    @Path("/")
    というアノテーションが付いています。

    DepartmentServiceクラス自体には、このRESTリソースのルートURIを識別するための@Pathアノテーションが付いています。
    @Path("tut/department")

    表からのエンティティの作成のステップ4
  10. DepartmentService.java」ファイルを右クリックして「Test Web Service」を選択し、HTTP AnalyzerでこのRESTサービスをテストします。

    表からのエンティティの作成のステップ5

     

  11. 開いたHTTP Analyzerウィンドウで「Send Request」をクリックし、このREST WebサービスのベースURIに対してGETリクエストを発行して、部門のリストを取得します。

    表からのエンティティの作成のステップ6
  12. ログ・ウィンドウに、http://127.0.0.1:7101/hr- restservice-context-root/resources/tut/departmentのようなRESTサービスのベースURLが示されます。
    実際のREST URLをメモしておいてください。この情報は、後で必要になります。

ステップ3:従業員RESTサービスの作成

次に、EmployeeServiceクラスをRESTサービスとして構成します。このクラスでは、更新と削除の操作にも対応するため、より多くの構成作業が必要になります。

  1. Applicationウィンドウの「RestService」→「Application Sources」→「rservice」で、「EmployeeService.java」クラスを右クリックし、「Create RESTful Service」を選択します。

    コンテキスト・メニューのNewオプション
  2. Create RESTful Service from Java Classダイアログ・ボックスで、Root Path入力フィールドの値をtut/employeeに変更します。

    New Gallery
  3. Configure HTTP Methods表で、メソッドを次のように編集します。

    Name Type Consumes Produces Path
    getByDepartmentId GET   application/xml /{departmentId}
    update POST application/xml   /
    removeById DELETE     /{employeeId}

    New Gallery

  4. 次に、「GetByDepartmentId」メソッドを選択し、Configure Parameters表を次のように編集します。

    Name = departmentId
    Data Type = int
    Annotation = PathParam
    Parameter = departmentId
    Default = default<null>
    Encoding = default<unselected>

     Create EJB Diagramダイアログ
  5. 次に、「removeById」メソッドを選択し、Configure Parameters表を次のように編集します。

    Name = employeeId
    Data Type = int
    Annotation = PathParam
    Parameter = employeeId
    Default = default<null>
    Encoding = default<unselected>

    Associate Diagram With Persistence Unitダイアログ

  6. Finish」、「OK」の順にクリックし、Return Type Warningを確認します。

    新しい空のダイアグラム

  7. サービスをテストするために、「EmployeeService」クラスを右クリックし、「Test Web Service」を選択します。

    ダイアグラム面へのEJBのドラッグ・アンド・ドロップ
  8. ただし、ここでは、HTTP Analyzerを使用してサービスをテストするのではなく、ブラウザから確認します。ブラウザ・ウィンドウを開き、URL(http://localhost:7101/hr-restservice-context-root/resources/tut/employee/)をコピーしてブラウザに貼り付けます。URLの末尾に"60"を追加し、部門60のすべての従業員を検索します。

    下にスクロールすると、次の5人の従業員が表示されます。AHUNOLD、BERNST、DAUSTIN、VPATABAL、DLORENTZ。

    エンティティを配置したEJBダイアグラム
  9. このURL(http://localhost:7101/hr-restservice-context-root/resources/tut/employee)をメモしておいてください。この情報は、後で必要になります。

    これで、RestServiceプロジェクトの2つのJavaBeansをサービスとして構成できました。各サービスは1つのリソース(部門または従業員)を表します。ここでは、メソッドに定義された入力引数を含む、より複雑な構成作業を行いました。

    getByDepartmentIdメソッドとremoveByIdメソッドは両方とも、1つの入力引数が必要でした。REST URIパスに/{name}を追加すると、リクエスト内でリソース(部門など)を一意のロケータによって参照できるようにするためのアノテーションが付けられます。

    アノテーションが付けられたメソッドで、必要な入力引数の取得先を把握できるように、リクエスト内での変数名を指定するためのPathParamアノテーションを追加しました。この変数名は、RESTパスに追加する変数名と同じものになります(例:変数名がdepartmentIdの場合、RESTパスは/{departmentId})。

    次の項では、新しいアプリケーションを開き、RESTサービスからデータ・コントロールを作成し、そのRESTデータ・コントロールを使用するページを開発します。

ブックマーク 印刷 すべて表示 | すべて非表示
トップに戻る
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.