部門および従業員のデータにアクセスするために、DepartmentServiceとEmployeeServiceという2つのクラスを使用してREST Webサービスを実装します。このチュートリアルの目的上、各クラスのコードは省略しますが、通常、実際の実装では、各リソースについてCRUDのすべてのメソッドをサポートすることになります。
このチュートリアルを実行するには、JDeveloper 12.1.3がインストールされており、HRスキーマを利用してOracle Database 10g以降へアクセスできる必要があります。
目的 | 所要時間 | アプリケーション |
---|---|---|
このチュートリアルでは、Oracle JDeveloper 12c Version 12.1.3.0.0を使用して、RESTfulサービスを使用するWebアプリケーションを構築します。このチュートリアルを実行するには、スタータ・アプリケーションをダウンロードし、解凍する必要があります。こちらをクリックして、スタータ・アプリケーションをダウンロードしてください。 |
90分 | ![]() |
-
「スタート」→「すべてのプログラム」→「Oracle Fusion Middleware 12.1.3.0.0」→「JDeveloper Studio 12.1.3.0.0」を選択して、JDeveloperを起動します。
-
ロールを選択するよう指示されたら、「Studio Developer (All Features)」を選択して、「OK」をクリックします。
Tip of the Dayウィンドウを閉じます。
ロードが完了したら、JDeveloper IDEが表示されます。JDeveloperを初めて開いた場合、Start Pageが表示されます。後でStart Pageを再表示する場合は、「Help」→「Start Page」を選択します。
このページには、JDeveloperについて学習するためのさまざまなオプションが表示されています。これらのオプションについて確認したら、「X」をクリックしてStart Pageタブを閉じます(Xは、タブにマウスを合わせると表示されます)。
-
「Application」タブをクリックしてApplicationsウィンドウに戻ります。「Open Application」アイコンをクリックします。
-
Open Application(s)ウィンドウで、スタータ・アプリケーションの解凍先に移動し、「...\EjbRestService\EjbRestService.jws」ファイルを選択します。
次に「Open」をクリックします。 -
Applicationウィンドウに2つのプロジェクト(ModelとRestServices)が表示されます。
Modelプロジェクトには、データ・クラスとSession Beanが含まれています。
RestServicesプロジェクトには、サービス・クラスとヘルパー・メソッドが含まれています。
-
次に、HRスキーマを指すようにデータベース接続を設定します。「Window」→「Database」→「Databases」を選択し、「EjbRestService」ノードを展開してhrconnノードを表示します。
-
「hrconn」を右クリックし、メニューから「Properties」を選択します。お使いのデータベース設定にあわせてデータベース接続情報を編集します。変更内容をテストし(「Test」をクリック)、「OK」をクリックします。
-
次に、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からアドレスを選択しないようにしてください。
-
統合されたOracle WebLogic Serverが起動するまで待ってから、次の手順に進みます。サーバーを初めて起動したときには、Oracle WebLogic Serverドメインが構築されます。この処理には数分かかる場合があります。
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)を作成するには、次の手順を実行します。
-
Applicationsウィンドウで、「RestService」プロジェクト・ノード、「Application Sources」、「rservice」パッケージの順に展開します。
-
「DepartmentService.java」ファイル・エントリを右クリックし、「Create RESTful Service」を選択します。
-
Create RESTful Service from Java Classダイアログ・ボックスで、Root Path入力フィールドのテキストをtut/departmentに変更して、部門ソースにアクセスするためのベースURIを定義し、「Next」をクリックします。
-
Configure HTTP Methods表で、「getAll」エントリを選択します(この表のラベル文字列全体を表示するにはダイアログ・ボックスのサイズを変更する必要があります)。
このDepartmentService.javaのgetAll()パブリック・メソッドは、EJBビジネス・サービスにアクセスして、HRスキーマ内のDepartments表から部門のリストを問い合わせて、その結果をXMLレスポンスとして返します。
-
RESTの読取りリクエストはGETリクエストとなるため、getAllエントリのType列で「GET」を選択します。
入力引数は不要なので、Consumesフィールドは空のままにします。 -
Producesフィールドで「…」ボタンをクリックし、「application/xml」を選択して「OK」をクリックします。
-
Pathフィールド内でダブルクリックし、スラッシュ(/)を値として追加します。
この設定により、RESTのルートURI(tut/department)に対してGETリクエストが発行されると、部門のリストが問い合わされて返されます。
次に、「Next」をクリックします。
-
Return Type Warning ダイアログ・ボックスで「OK」をクリックします。このハンズオン・サンプルでは、EJBエンティティに追加されたJAXBアノテーションを使用してJavaオブジェクトからXMLへの解析(またはその逆の解析)を行うため、このダイアログ・ボックスは無視してかまいません。
「Finish」をクリックして、サービスを作成します。
-
「Finish」をクリックして、サービスを作成します。
Oracle JDeveloperのJavaコード・エディタでDepartmentService.javaクラスが開きます。このクラスのgetAllメソッドには、
@GET
@Produces("application/xml")
@Path("/")というアノテーションが付いています。DepartmentServiceクラス自体には、このRESTリソースのルートURIを識別するための@Pathアノテーションが付いています。
@Path("tut/department") -
「DepartmentService.java」ファイルを右クリックして「Test Web Service」を選択し、HTTP AnalyzerでこのRESTサービスをテストします。
-
開いたHTTP Analyzerウィンドウで「Send Request」をクリックし、このREST WebサービスのベースURIに対してGETリクエストを発行して、部門のリストを取得します。
-
ログ・ウィンドウに、http://127.0.0.1:7101/hr- restservice-context-root/resources/tut/departmentのようなRESTサービスのベースURLが示されます。
実際のREST URLをメモしておいてください。この情報は、後で必要になります。
次に、EmployeeServiceクラスをRESTサービスとして構成します。このクラスでは、更新と削除の操作にも対応するため、より多くの構成作業が必要になります。
-
Applicationウィンドウの「RestService」→「Application Sources」→「rservice」で、「EmployeeService.java」クラスを右クリックし、「Create RESTful Service」を選択します。
-
Create RESTful Service from Java Classダイアログ・ボックスで、Root Path入力フィールドの値をtut/employeeに変更します。
-
Configure HTTP Methods表で、メソッドを次のように編集します。
Name Type Consumes Produces Path getByDepartmentId GET application/xml /{departmentId} update POST application/xml / removeById DELETE /{employeeId}
-
次に、「GetByDepartmentId」メソッドを選択し、Configure Parameters表を次のように編集します。
Name = departmentId
Data Type = int
Annotation = PathParam
Parameter = departmentId
Default = default<null>
Encoding = default<unselected>
-
次に、「removeById」メソッドを選択し、Configure Parameters表を次のように編集します。
Name = employeeId
Data Type = int
Annotation = PathParam
Parameter = employeeId
Default = default<null>
Encoding = default<unselected>
-
「Finish」、「OK」の順にクリックし、Return Type Warningを確認します。
-
サービスをテストするために、「EmployeeService」クラスを右クリックし、「Test Web Service」を選択します。
-
この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データ・コントロールを使用するページを開発します。
ただし、ここでは、HTTP Analyzerを使用してサービスをテストするのではなく、ブラウザから確認します。ブラウザ・ウィンドウを開き、URL(http://localhost:7101/hr-restservice-context-root/resources/tut/employee/)をコピーしてブラウザに貼り付けます。URLの末尾に"60"を追加し、部門60のすべての従業員を検索します。
下にスクロールすると、次の5人の従業員が表示されます。AHUNOLD、BERNST、DAUSTIN、VPATABAL、DLORENTZ。


