このチュートリアルでは、Oracle Enterprise Pack for EclipseとOracle Mobile Application Frameworkを使用して、RESTサービスをデータ・ソースとして使用するアプリケーションを構築してデプロイします。Oracle Enterprise Pack for Eclipseには、アプリケーションの構築前にサービスを調査してテストするためのRESTサービス・エディタが含まれています。任意のアクセス可能なRESTサービスを使用できますが、このチュートリアルでは、RESTサービスを模倣して、ローカルのJavaアプリケーションとして実行されるJavaクラスを提供します。
ここでは、RESTサービスの調査方法や、MAFアプリケーションからサービスへのデータ・アクセス方法を提供するデータ・コントロールの作成方法を確認します。
要件: |
---|
Oracle Enterprise for Eclipseバージョン12.1.3.5以降。Oracle Enterprise Pack for EclipseはOTNのOracle Enterprise Pack for Eclipseページからダウンロードできます。 ここから、モックのRESTサービスをダウンロードします。チュートリアルの最初の項で、このサービスをOracle Enterprise Pack for Eclipseをインポートします。 |
Oracle Enterprise Pack for Eclipseで作業する場合、アプリケーションをともに構成する複数のプロジェクトで作業を整理します。Oracle Developer Cloud Serviceの統合のために、最初にアプリケーションを開発し、そのアプリケーションをOracle Developer Cloud ServiceのGitリポジトリにプッシュします。
この最初の項では、RESTサービスをOracle Enterprise Pack for Eclipseにインポートします。
-
「Eclipse and OEPE」を開きます。ヒント:Oracle Enterprise Pack for Eclipseのインストール先に移動してeclipse.exeをダブルクリックします。任意のワークスペースを選択して、「Workbench」を開きます。
-
Javaアプリケーションを開発し、Oracle Developer Cloud Serviceを使用するため、Java EEパースペクティブを使用することにします。メニューから、「Window」→「Open Perspective」を選択し、「Java EE」をクリックします。
-
Eclipseメニューから、「File」→「Import」を選択します。
-
Importダイアログで「General」→「Existing Projects into Workspace」を選択し、「Next」をクリックします。
-
「Select archive file」をクリックし、Browseボタンを使用して、ダウンロードしたzipファイル(MockHRRestServer.zip)を選択します。「Finish」をクリックして、プロジェクトをインポートします。まだスタータ・アプリケーションをダウンロードしていない場合は、この項の最初に戻ってダウンロード・リンクをご利用ください。
-
Project Explorerで、「MockHRRestServer」プロジェクトを展開し、プロジェクト内のアーチファクトを表示します。
モック・サーバーがOracle Enterprise Pack for Eclipseに含まれています。このサーバーをアプリケーションとして実行できます。
-
まだ展開していない場合は、「MockHRRestServer」→「src」→「server」を展開します。
-
「Server.java」を右クリックし、「Run As」→「Java Application」を選択します。
-
コンソール・ウィンドウで、アプリケーションからポート番号の入力を求められます(デフォルト:4545)。
-
[Enter]キーを押してデフォルト値を適用し、サーバーを起動します。
スタータ・アプリケーションをOracle Enterprise Pack for Eclipseにインポートしたので、次にOracle Developer Cloud Serviceへのコネクションを作成し、このプロジェクトをクラウドにプッシュします。
RESTサービス・エディタは、RESTサービスを利用するための反復的なプロセスを提供します。このエディタでは、既存のRESTサービスを探すことができます。また、エディタから直接サービスのテストや確認を行うこともできます。
このチュートリアルで使用するサービスには、次の5つのメイン・サービスがあります。
- Get Departments – 読取りメソッド
- Get Departments by ID – 同じく読取りメソッド、ただし1つの部門(Department)を返す
- Put Department by ID – 更新メソッド
- Post Department – 作成メソッド
- Delete Department by ID – 削除メソッド
-
RESTサービスがローカルで実行中であることを確認するために、任意のブラウザを開き、localhost:4545/departmentsと入力して[Enter]キーを押します。
-
getDepartmentByIdサービスが動作していることを確認するために、URLに/20を追加して[Enter]キーを押します。
RESTサービスをテストする前に、MAFアプリケーションを作成する必要があります。
-
Project Explorerで、右クリックして「New」→「MAF Application」を選択します。
-
MAF Applicationダイアログで、Application display nameをHRに設定し、「Next」をクリックします。
-
表示されるプロジェクト名をそのままにして、「Next」をクリックします。
-
「Add」をクリックして、デプロイメント用のMobile SDKを定義します。
-
Select Platformダイアログで、「Manage your SDKs...」をクリックします。
-
「Add」をクリックして、Mobile SDKを定義します。
-
参照ボタンを使用してSDKのパスを選択し、「OK」をクリックします。
-
「OK」をクリックして、変更を許可します。
-
「Yes」をクリックして、Oracle Enterprise Pack for Eclipseによるプロジェクトの再構築を許可します。
-
このSDKのまま「OK」をクリックして、「Finish」をクリックします。
-
このアプリケーション・タイプはOracle Mobile Application Framework(Oracle MAF)パースペクティブに関連付けられるという通知が表示されます。「Yes」をクリックして、このパースペクティブを変更します。
これで、RESTサービス・ディスクリプションの作成に進むことができます。
-
「HRView」を右クリックし、「New」→「REST Service Description」を選択します。
-
HRServiceという名前を付け、「Finish」をクリックします。
RESTサービス・ディスクリプションが作成され、エディタが開きます。
-
REST Clientエディタで、DepartmentsサービスをRESTクライアントのアドレスとしてテストした際のURL(http://localhost:4545/departments)を入力します。
-
Methodが「GET」に設定されていることを確認して、「Send Response」アイコンをクリックします。
このエディタがレスポンスを受信すると、Statusがリクエストの結果に変更されます。ここでは200 - OKと表示されます。これは、リクエストが正常に実行されたことを意味します。
-
「Raw Content」タブをクリックして、データを生の形式で表示します。
-
「Word Wrap」アイコンをクリックして、データを表示ペイン内で折り返して表示します。
-
「Rendered Content」タブをクリックして、データをオブジェクトにレンダリングして表示します。
-
プラス記号をクリックしてオブジェクト・ノードを展開し、レンダリングされたデータを表示します。
REST JSONサービスにアクセスできることをテストしたので、次のステップではAPIを作成して詳しく見ていきます。
この項では、テストしたREST JSONサービスを使用してREST APIを作成します。作成したRESTクライアントからAPIを作成することも、先にAPIを作成してからRESTクライアントを使用してテストすることもできます。
この最初の項では、先ほどテストしたRESTクライアントからAPIを作成します。
-
REST Clientタブで、「Import REST Client」アイコンをクリックします。
-
Import REST Client Informationダイアログで、RequestとData Typeが選択されていることを確認し、「Next」をクリックします。
-
Import Requestで、Root Pathから/departmentsを削除し、Request NameをgetDepartmentListに設定します。サービスをテストした際に確認したとおり、このサービスは部門のリストを返します。そのため、この名前をgetDepartmentListと設定します。「Finish」をクリックします。
APIを作成したので、その定義について詳しく見てみましょう。
-
各タブをクリックすると、Outputタブ以外はすべて空になっています。
OutputタブのRepresentationの名前はDepartmeents1となっています。これは、レスポンス内にあった、生成されたJSONペイロードのデフォルト名です。
-
「Data Types」タブをクリックします。
このサービスをサポートする2つのLocal Data Types(Departments、Departments1)が定義されています。
-
「Departments」をクリックします。Departmentオブジェクトの定義が表示されます。
-
この名前をDepartmentに変更します。
-
「Departments1」をクリックします。Departmentsのコレクションの定義が表示されます。
-
この名前をDepartmentListに変更します。
REST APIを作成したので、次にこの定義をRESTクライアントにコピーしてテストできます。
-
「Copy to REST Client」アイコンをクリックします。
-
REST Clientタブで、「Send Request」をクリックし、Responseパネルで結果を確認します。
これまでのステップで、部門のリストを返すREST APIを作成しました。この後のステップでは、部門IDに基づいて1つの部門を返す別のREST APIを作成します。
-
作業内容を保存します。
-
REST Clientタブで、このRESTサービスのAddressに/{id}を追加します。
-
「Send Request」をクリックします。
-
URL内に引数があるため、その引数の値の入力を求められます。20と入力して「OK」をクリックします。
-
「Rendered Content」タブをクリックすると、Department 20を表す行のみが返されます。
-
作業内容を保存します。
RESTクライアントが動作することを確認したので、次にこのRESTクライアントをREST APIとしてインポートできます。
-
「Import REST Client Information」アイコンをクリックします。
-
RequestとData Typeが選択されていることを確認し、「Next」をクリックします。
-
Request NameにgetDepartmentByIdと入力して、「Finish」をクリックします。
-
作業内容を保存します。
-
「Output」タブをクリックすると、Representationタイプの出力されたDepartmentがあります。
-
先ほどと同じように、「Copy to REST Client」アイコンをクリックします。
-
「Send Request」アイコンをクリックして、部門のidとして30と入力します。
-
まだ開いていない場合は、「Rendered Content」タブをクリックして、レスポンスに部門30のJSONペイロード・オブジェクトのみが含まれていることを確認します。
この項では、REST ClientエディタでテストしたREST JSONサービスによってREST APIを作成しました。これまで、2つのサービスのREST APIを作成しました。1つ目のサービスはDepartmentsのコレクションを返し、2つ目のサービスは指定した引数に基づいて特定の1つのDepartmentを返します。
これまでの項では、REST JSONサービスから’読取り用’のAPIを作成する方法を確認しました。この項では、作成API、更新API、削除APIを含む他のAPIを作成してテストします。
これまで、REST Clientエディタを使用してRESTサービスを探してテストし、そのサービスをAPIとしてインポートすることでAPIを作成しました。次のAPIでは、APIを直接作成してテストします。
-
「REST API」タブをクリックします。
-
ここでは更新APIを作成するため、まずは{id}パス変数のパス・セグメント内にリクエストを作成します。{id}パス・セグメント内の「Requests」をクリックします。
-
「Requests」を右クリックして「New」→「Request」を選択するか、Outlineヘッダーのプラス記号をクリックして、リクエストを追加します。
-
更新サービスなので、MethodをPUTに設定し、NameにupdateDepartmentByIdと入力します。
-
リクエストとともにコンテンツを送信するため、コンテンツ・ヘッダーを追加する必要があります。「HTTP Header」タブをクリックし、「create」アイコンをクリックします。
-
Add Headerダイアログで、NameにContent-Typeと入力し、Valueにapplication/jsonと入力します。「OK」をクリックして、ヘッダーを作成します。
-
更新サービスを作成するため、サービスへ入力内容を送信する必要もあります。「Input」タブをクリックします。
-
Typeを「Representation」に設定します。
-
「Add」アイコンをクリックして、Data Typeで「Department」を選択します。
OutputのDepartmentのタイプもRepresentationにします。
-
「Output」タブをクリックし、Typeを「Representation」に設定します。
-
「Add」アイコンをクリックします。Data Typeを「Department」に設定して、「OK」をクリックします。
これで、REST JSONサービスの更新APIの作成は完了です。この後のステップでは、このAPIをテストします。
-
先ほどと同じように、「Copy to REST Client」アイコンをクリックします。
この更新サービスにはDepartmentオブジェクトが必要です。ここでは、Request DetailsのInputにDepartmentを追加します。このオブジェクトを、最後に送信したリクエストのResponseからコピーして、新しいリクエストのInputに貼り付けます。
-
Responseパネルで「Raw Content」をクリックします。
-
テキスト全体を選択して、クリップボードにコピーします。ヒント:Windowsでは[Ctrl+C]キー、Macでは[Command+C]キーを使用します。
-
Request Detailsパネルで「Input」タブをクリックし、Typeを「Body」に設定します。
-
Raw ContentからコピーしたテキストをInputのBodyに貼り付け、「Word Wrap」アイコンをクリックします。
-
InputのBodyテキストボックス内をクリックし、departmentNameの値を任意の文字列に変更します。
-
「Send Request」をクリックして、更新サービスを呼び出します。
-
レスポンスからコピーしたDepartmentのidを入力します。この例では30です。「OK」をクリックします。
-
レスポンスのStatusがOKとなり、Raw Contentに新しいdepartmentNameが表示されます。
-
「REST Client」タブに戻ります。
-
Methodを「GET」に設定し、Addressにhttp://localhost:4545/departments/{id}と入力して、「Send Request」をクリックします。これは単に1つの部門を取得してサービスが動作していることを確認するための操作です。
-
idに260と入力して「OK」をクリックします。
-
「Rendered Content」タブをクリックすると、1つの部門(260)が返されます。
RESTサービスのDeleteでは、メソッドをDELETEに設定し、パス・セグメントにそのIDのパス変数を含める必要があります。
-
Methodを「DELETE」に設定します。Addressに{id}パス・セグメントが含まれているため、「Send Request」をクリックします。
-
idに260と入力して「OK」をクリックします。
-
Responseを見ると、Statusが200 - OKとなり、departmentIdが0に設定されています。
-
この部門が本当に削除されていることを確認するために、Methodを「GET」に設定して「Send Request」をクリックします。先ほどと同じように、idに260と入力して「OK」をクリックします。
-
Statusが204 - No Contentとなります。これで、Department 260が正常に削除されたことが証明されました。
-
再度MethodをDELETEに戻し、「Import」アイコンをクリックしてAPIを作成します。
-
Import REST Client Informationダイアログで、「Next」をクリックします。
-
Request NameにremoveDepartmentByIdと入力して、「Finish」をクリックします。
-
Rest APIタブで、departments/{id}パス・セグメントにこのメソッドが追加されています。
-
作業内容を保存します。
この後のステップでは、作成メソッドをテストしてインポートします。作成メソッドでは、部門オブジェクトをリクエストとともに送信する必要があります。更新メソッドと同じように、Raw Contentからペイロードをコピーし、値の一部を変更して、それを新しいDepartmentとして使用します。
-
Rest Clientタブに戻って、GETメソッドを実行し、idを20に設定して部門20を取得します。
-
「Raw Content」タブをクリックします。
-
このメソッドを「POST」に設定し、Addressにhttp://localhost:4545/departmentsと入力します。作成メソッドでは、引数のIDは必要ありません。
-
Request Detailsで「Input」タブをクリックし、Typeを「Body」に設定します。
-
Raw Contentタブからコンテンツをコピーして、Bodyテキストボックスに貼り付けます。
-
Bodyテキストボックスで、コンテンツから"departmentId":20,を削除します。この作成メソッドでは、ペイロードの一部にdepartmentIdは必要ありません(指定することもできません)。
コンテンツは次のようになります。
-
departmentNameを任意の新しい部門名に変更します。
リクエストを送信する前に、リクエストにヘッダーを追加する必要があります。
-
Request Detailsで「Headers」タブをクリックします。
-
「Add」アイコンをクリックして、ヘッダーをリクエストに追加します。
-
ヘッダーのNameを「Content-Type」に設定し、Valueにapplication/jsonと入力します。ヒント:[Control+Space]キーを使用し、下矢印を入力して、値を補完できます。
-
2つ目のヘッダーを追加します。Nameを「Accept」に設定し、Valueにapplication/jsonと入力します。
-
「Send Request」をクリックして、作成したRESTサービスをテストします。
-
Responseパネルに、Status 200 - OKというメッセージが表示されます。また、Raw Contentに、生成されたIDを持つ新しい部門レコードが表示されます。
リクエストの定義とテストが完了したので、次にこのリクエストをAPIとしてインポートします。
-
「Import」アイコンをクリックし、Importダイアログでデフォルト値のまま「Next」をクリックします。
-
Request NameにcreateDepartmentと入力して、「Finish」をクリックします。
作成したすべてのAPIをREST APIタブで確認できます。
-
作業内容を保存します。
更新APIを作成したので、次に、この基本手順を繰り返して削除APIを作成します。
これですべてのAPIの作成が完了しました。次に、これらのRESTサービスにプログラムからアクセスするためのアーチファクトを生成できます。
前の項では、アプリケーションに必要なすべてのRESTサービスAPIを作成してテストしました。この項では、アプリケーションからこれらのRESTサービスにアクセスする際に使用するアーチファクトを生成します。
-
REST APIタブで、「Artifact Generation」アイコンをクリックします。
-
Select and artifact generatorで、「Java 1.8 REST Client POJO」を選択し、「Next」をクリックします。
-
「Create Connection」をクリックして、名前付きコネクションを作成します。
-
コネクションの名前としてHRRestServiceと入力し、「Finish」をクリックします。
-
Java Class and Package Namesダイアログで、Java Nameにhrserviceと入力し、「Next」をクリックします。
-
Generation Settingsをデフォルト値のままにして、「Next」をクリックします。
Generationウィザードの次のパートで、使用するAPIを選択します。
-
「Add」アイコンをクリックします。
-
Select Requestsダイアログで、「getDepartmentList」、「getDepartmentById」、「updateDepartmentById」を選択して「OK」をクリックします。
-
Service Classダイアログに選択したAPIが表示されます。「Finish」をクリックしてアーチファクトを生成します。
-
アプリケーション内でアーチファクトを生成(さらには更新)しているため、影響を受けるファイルのリストが表示されます。変更がある場合は、そのファイルが表示され、下側のパネルに変更前後のペインが表示されます。「OK」をクリックして、変更を許可します。
-
「HRView」→「src」を展開して、生成したアーチファクトを確認します。
-
「mobile.model.service.hrservice」を展開して「RESTService.java」をダブルクリックします。
Oracle Enterprise Pack for EclipseでRESTService.javaが生成されたときに、オブジェクトを引数として受け取るメソッドが生成されています。しかし、アプリケーションがこのRESTサービスを呼び出すときには、オブジェクトではなくStringを引数として想定します。
-
そのため、getDepartmentByIdとupdateDepartmentByIdのメソッド・シグネチャを(Object id)から(String id)に変更します。
-
作業内容を保存します。
チュートリアルのこのパートでは、RESTサービス・エディタを使用してRESTサービスをテストし、そのAPIを作成しました。いくつかのAPIは、RESTクライアントを開発してそれをAPIとしてインポートすることで作成しました。また、エディタで直接APIを作成しました。
次に、数個のAPIを選択して、アプリケーションをサポートするPOJOアーチファクトを生成しました。
チュートリアルの次のパートでは、REST POJOに基づいてデータ・コントロールを作成し、それをMAFアプリケーションで利用します。