この章では、URLサービス用のデータ・コントロールを作成する方法を説明します。
この章には次の項が含まれます:
問合せをポストする単純なURLをURLサービスにして、そのURLをADFフォームとして公開できます。たとえば、会社の従業員データにアクセスできるURLサービスがあるとします。このデータは、例6-1に示すようにURLを使用して取得できます。
従業員データにアクセスするこの単純なURLを、メソッド(getEmployee
)と2つのパラメータ(empId
およびdeptId
)を持つADFデータ・コントロールにして、フォームとしてページにドロップできます。
また、URLサービスでは、Representational State Transfer (REST)アクションを利用できます。RESTサービスは、複雑なSOAPプロトコルではなく、単純なHTTP URLを使用してアクセスできるWebサービスです。HTTPの各アクション(GET
、PUT
、POST
、DELETE
)は、サービスの実装時に、データに対するアクセスと操作を行うサービス操作にマップされます。応答データはデリミタ区切り値とXMLフォーマットで返すことができ、XSDを指定すると、PUT
およびPOST
アクションの入力フォーマットを定義できます。
注意: この章では、URLサービス・データ・コントロール・タイプを使用した、単一のURLサービスに基づくデータ・コントロールの作成について主に説明します。REST Webサービスに基づくデータ・コントロールを作成するには、「REST Webサービス」データ・コントロール・タイプを使用すると便利です。このタイプを使用すれば、ウィザードを1回通して実行するだけで、複数のRESTメソッドを1つのデータ・コントロールに取り込むことができます。詳細は、第5.2.2項「RESTful Webサービス用のデータ・コントロールを作成する方法」を参照してください。 |
RESTアーキテクチャでは、WebサービスがHTTPリソースとして表され、Webサービスのメソッドと操作がHTTP URLからアクセスできるサーバー上のリソースのように認識されるため、Webサービス起動が簡単になります。
たとえば、あるWebサービスにgetEmployee(int EmpID)
というメソッドがあるとします。RESTアーキテクチャを使用すると、これをhttp://mywebservice.com/myService/getEmployee?EmpID=20
とできます。プレーンなHTTP URLとして表すと、このサービスにアクセスするデータバインドされたページを、URLサービス・データ・コントロールを使用して簡単に作成できます。
URLサービスを使用する前に、他のデータ・アクセス機能を理解しておくと役立つ場合があります。次に、関連する他の機能へのリンクを示します。
「データ・コントロール」パネルから項目をドラッグし、それを特定のUIコンポーネントとしてページ上にドロップすることで、データバインドされたユーザー・インタフェースを設計できます。詳細は、2.3.1項「データ・コントロール」パネルの使用方法」を参照してください。
アプリケーション・モジュール用のデータ・コントロールの作成については、第2章「ADFデータ・コントロールの使用」を参照してください。
Webサービス・データ・コントロールの作成の詳細は、第5章「ADFモデル・レイヤーを使用したWebサービスの公開」を参照してください。
URLサービス・データ・コントロールを使用すると、指定されたURLからデータ・ストリームにアクセスし、これを使用できます。URLサービス・データ・コントロールは、複数の操作を表すことができます。たとえば、特定のURLサービスのGET
操作とPUT
操作を同じデータ・コントロールで表すことができます。
URL接続を作成するには、「URL接続の作成」ダイアログを使用して、名前、およびURLエンドポイントへのアクセスに必要な接続の詳細を指定します。このダイアログには、「URLサービス・データ・コントロールの作成」ウィザードからアクセスすることも、別個にアクセスすることもできます。「URLサービス・データ・コントロールの作成」ウィザードからダイアログにアクセスする場合は、データ・コントロールのアプリケーションにのみ接続が適用されます。ダイアログに別個にアクセスする場合は、単一のIDEレベル接続を作成して、複数のデータ・コントロールにコピーできます。
始める前に:
URLサービス・データ・コントロールの一般的な知識があると役立ちます。詳細は、第6.2項「ADFデータ・コントロールを使用したURLサービスの公開」を参照してください。
また、他のURLサービス機能を使用して追加できる機能についても理解しておくと役立ちます。詳細は、6.1.2項「URLサービスの追加機能」を参照してください。
次のタスクを完了する必要があります。
IDEレベルURL接続を作成する手順は次のとおりです。
メイン・メニューから「ファイル」→「新規」→「ギャラリから」を選択します。
「新規ギャラリ」で「一般」を開き、「接続」、「URL接続」の順に選択して、「OK」をクリックします。
「URL接続の作成」ダイアログで、接続を作成する場所を選択します。
URL接続をアプリケーション内でのみ使用できるようにする場合は、「アプリケーション・リソース」を選択します。URL接続を他のアプリケーションで使用するために「リソース」ウィンドウで選択できるようにする場合は、「IDE接続」を選択します。
接続の名前を入力します。
「URLエンドポイント」フィールドに、目的のデータ・ストリームのURLを入力します。
通常、これにはホストとポートのみを含めます。URLパラメータは含めないでください。たとえば、http://service.example.com:7101/
のようなURLを入力できます。
「認証タイプ」ドロップダウンから認証レベルを選択します。
デフォルトの認証タイプは「なし」で、認証は無効になります。セキュリティが必要な場合は、「ダイジェスト」を使用します。この方法では、パスワードはユーザー・パスワードのMD5ダイジェストとしてネットワーク上を送信され、ネットワーク・トラフィックを傍受しても判別できません。「基本」認証は、主にネットワーク上でのサービス・アクセスに高度なセキュリティを必要としない場合にのみ役立ちます。
ダイジェスト認証または基本認証を選択した場合は、Webサイトへのアクセスに必要なユーザー名とパスワードを指定します。
URLがWebサイト全体の保護領域に関連付けられている場合は、認証レルムを入力します。
名前とエンドポイントを入力したら、「接続のテスト」をクリックして、URLコネクションが有効であることを検証します。
「OK」をクリックします。
URLサービス・データ・コントロールは、「新規ギャラリ」にある、「URLサービス・データ・コントロールの作成」ウィザードを使用して作成できます。URLサービス・データ・コントロールを作成するときには、ウィザードを使用して操作を1つずつ作成します。
始める前に:
URLサービス・データ・コントロールの一般的な知識があると役立ちます。詳細は、第6.2項「ADFデータ・コントロールを使用したURLサービスの公開」を参照してください。
また、他のURLサービス機能を使用して追加できる機能についても理解しておくと役立ちます。詳細は、6.1.2項「URLサービスの追加機能」を参照してください。
次のタスクを完了する必要があります。
アプリケーション・ワークスペースを作成し、プロジェクトをそのワークスペース内で作成します。プロジェクトの編成方法に応じて、既存のアプリケーション・ワークスペースとプロジェクトを使用することも、新規に作成することもできます。アプリケーション・ワークスペースの追加については、『Oracle JDeveloperによるアプリケーションの開発』のアプリケーションとプロジェクトの作成に関する項を参照してください。
データ・コントロールからアクセスされるURLサービスへのアクセス権が必要です。
オプションで、第6.2.1項「URL接続の作成方法」の説明に従って、使用するURL接続を作成します。
URLサービス・データ・コントロールを作成するには:
「アプリケーション」ウィンドウで、データ・コントロールを配置する先のプロジェクトを右クリックして、「新規」→「ギャラリから」を選択します。
「新規ギャラリ」で「ビジネス層」を開き、「データ・コントロール」を選択して「URLサービス・データ・コントロール」を選択し、「OK」をクリックします。
「URLサービス・データ・コントロールの作成」ウィザード(「データソース」ページ)で、データ・コントロールの名前を指定します。
データ・コントロールで使用するURL接続を選択します。
URL接続をまだ作成していない場合は、「新規接続の作成」アイコンをクリックして、接続のURLと名前を指定します。
すでにURL接続を作成している場合は、「接続」ドロップダウンから、使用する接続を選択します。
「HTTPメソッド」ドロップダウン・リストから、このデータ・コントロールのアクションを選択します。
オプションで、「HTTPヘッダー・パラメータを含める」チェック・ボックスを選択します。詳細は、6.2.5項「URLサービス・データ・コントロールのカスタム・ヘッダー・パラメータを組み込む方法」を参照してください。
「ソース」フィールドで、URLサービスのソースを入力し(たとえば、servicepath/servicename
)、「次へ」をクリックします。
この操作にパラメータが必要な場合は、?symbol=##
ParamName
##
形式で指定できます(たとえばservicepath/servicename?symbol=##id##
)。また、パラメータを使用してソース・パスを動的に入力することもできます(たとえばservicepath/##servicename##?symbol=##id##
)。
「パラメータ」ページで、指定したパラメータのデフォルト値を指定して、「次へ」をクリックします。
PUT
およびPOST
操作の場合は、入力フォーマットを定義したXMLスキーマ定義(XSD)も指定する必要があります。
「データ・フォーマット」ページで、データソースのデータ・フォーマットを選択し、関連するプロパティを設定して、「次へ」をクリックします。
XMLフォーマット(XSDおよびXSLのURLを指定)とデリミタ区切り値(デリミタ、テキスト修飾子およびデータのエンコーディングを指定)のいずれかを選択できます。
「終了」ページで「URL接続のテスト」をクリックすると、URLデータ接続が有効であることを検証できます。「終了」をクリックします。
データ・コントロールに含める他のすべての操作について、前述の手順を繰り返します。同じデータ・コントロールに追加の操作を含めるには、ウィザードの「データソース」ページの「名前」フィールドに、最初の操作についてウィザードを実行したときにデータ・コントロールに使用した名前と同じ名前を入力します。
データ・コントロールを作成する際に、JDeveloperによってデータ・コントロール定義ファイル(DataControls.dcx
)が作成され、概要エディタでファイルが開き、ファイルの階層が「データ・コントロール」パネルに表示されます。詳細は、第2.2.2項「データ・コントロール作成時のプロジェクト内の処理」を参照してください。
URLサービス・データ・コントロールを作成すると、DataControls.dcx
の概要エディタに各操作のメソッド・ノードが移入されます。これらのメソッド・ノードには、戻りサブノードがある場合があり、戻りサブノードには、コレクション、スカラー値および属性のサブノードが含まれる場合があります。
「HTTPヘッダー・パラメータを含める」チェック・ボックスを選択した操作については、メソッド・ノードにMap
型のHttpHeader
という入力パラメータが指定されます。
たとえば、図6-1は3つのメソッドを含むデータ・コントロールを示しており、これらのメソッドにはカスタム・ヘッダー・パラメータを使用するメソッド(loadData(Map)
)が含まれます。
複合データ型のパラメータをとる操作の場合は、構造化属性ノードも表示されます。
URLサービス・データ・コントロールに対して表示される全ノードのリストと使用方法の詳細は、表6-1を参照してください。
HTTP GETメソッドに基づくURLデータ・コントロールを作成する際に、ウィザードでスキーマを指定しなければ、スキーマが自動的に生成されます。ただし、この自動生成されたスキーマには、データ・コントロールが期待どおりに動作するために必要な情報が含まれていない可能性があります。たとえば、自動生成されたスキーマには次の制約があります。
要素から返されるデータがない場合、生成されたスキーマは要素の構造の詳細を反映しておらず、このため「データ・コントロール」パネルには対応するデータ・コントロール・オブジェクトが表示されません。
ある要素から返されたデータに含まれる行がただ1つの場合、作成されるデータ・コントロール内でその要素は表として扱われません。(スキーマ内でその要素にmaxOccurs="unbounded"
属性を追加することによって、この問題を修正できます。)
主キーとして属性を設定すると、生成されたスキーマが正しいデータ型を反映しない場合があります。詳細は、第6.2.6項「URLサービス・データ・コントロールの主キーに関する必知事項」を参照してください。
生成されたスキーマは、「アプリケーション」ウィンドウでプロジェクトのリソース・ノードの下に表示され、そこでスキーマを確認して編集できます。
URLサービス・データ・コントロールを使用する場合、HTTPリクエストの起動時にHTTPヘッダーにカスタム・パラメータを追加する場合があります。このようなパラメータは、セキュリティや通知など、様々な目的で役立ちます。
始める前に:
URLサービス・データ・コントロールの一般的な知識があると役立ちます。詳細は、第6.2項「ADFデータ・コントロールを使用したURLサービスの公開」を参照してください。
また、他のURLサービス機能を使用して追加できる機能についても理解しておくと役立ちます。詳細は、6.1.2項「URLサービスの追加機能」を参照してください。
次のタスクを完了する必要があります。
URLサービス・データ・コントロールを作成して、ウィザードの「HTTPヘッダー・パラメータを含める」チェック・ボックスを選択します。詳細は、6.2.2項「URLサービス・データ・コントロールの作成方法」を参照してください。
『Oracle ADF FacesによるWebユーザー・インタフェースの開発』のWebページの作成に関する項で説明されているとおりに、JSFページを作成します。
マネージドBeanを作成して、ビュー・プロジェクトのadfc-config.xml
ファイルに登録します。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のマネージドBeanを使用して情報を格納する方法に関する項を参照してください。
URLサービスにカスタム・ヘッダーを渡すには:
マネージドBeanに、ヘッダー・パラメータの名前と値を指定する、java.util.Map
型のBeanプロパティを作成します。
このようなマネージドBeanの例は、例6-2を参照してください。
「データ・コントロール」パネルで、カスタム・ヘッダー・パラメータを含むメソッドをWebページにドラッグし、「ADFボタン」としてドロップします。
「アクション・バインディングの編集」ダイアログで、次の手順を実行してボタンとマネージドBean間のバインディングを作成します。
「データ・コレクション」ツリーで、HTTPヘッダー・パラメータを含むメソッドを選択します。
「パラメータ」表で、パラメータの「値」セルをクリックし、ドロップダウン・ボタンをクリックして「EL式ビルダーの表示」を選択します。
「変数」ダイアログで、式を手動で入力するか、「変数」ツリーを移動して、バインドするHTTPパラメータを表すマネージドBeanフィールドを選択します。
たとえば、例6-2に示すhttpHeadersMap
プロパティにバインドするには、「ADFマネージドBean」ノードを開きます。さらに、Beanのスコープのノードを開いて、adfc-config.xml
ファイルで指定されているBean名(クラス名と同じであるとは限りません)のノードを開き、「httpHeadersMap」
を選択します。
実行時に、データ・コントロールはマップ(存在する場合)からエントリを取得して、HTTPヘッダーとしてリクエストに追加します。
例6-2 URLサービス・データ・コントロールのカスタム・パラメータを含むマネージドBean
package view; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class BackingBean { private Map<String,String> httpHeadersMap = new HashMap<String,String>(); public BackingBean() { httpHeadersMap.put("TenantID","OurCompany"); } public void setHttpHeadersMap(Map<String,String> httpHeadersMap) { this.httpHeadersMap = httpHeadersMap; } public Map<String,String> getHttpHeadersMap() { return httpHeadersMap; } }
URLサービスにデータ・コントロールを作成すると、そのデータ・コントロールは公開された任意のコレクションに対する主キー操作をサポートします。ただし、主キー機能が確実に正しく動作するように、「URLサービス・データ・コントロール」ウィザードの「データ・フォーマット」ページで、主キー・フィールドのデータ型の名前を示すスキーマを指定する必要があります。(HTTP GETメソッドに基づくURLデータ・コントロールの場合は、スキーマを指定する必要はありません。)
その他の面では、この機能はWebサービス・データ・コントロールの対応する機能と同じです。詳細は、5.2.6項「SOAPベースのWebサービス・データ・コントロールの主キーに関する必知事項」を参照してください。
URLサービス・データ・コントロールは更新不可能であるため、「データ・コントロール」パネルの一部のオブジェクトには制限があります。たとえば、「操作」ノードの下の組込み操作で使用可能になっているのは、取得とナビゲーションのみです。また、URLサービス・データ・コントロールのパラメータ・オブジェクトは、ユーザーがURLに含めて渡すパラメータです。詳細は、表6-1を参照してください。
他の種類のデータ・コントロールと同様に、「データ・コントロール」パネルから項目をドラッグし、それを特定のUIコンポーネントとしてページ上にドロップすることで、データバインドされたユーザー・インタフェースを設計できます。詳細は、2.3.1項「データ・コントロール」パネルの使用方法」を参照してください。
「データ・コントロール」パネルでは、各データ・コントロール・オブジェクトがアイコンで表されます。表6-1は、各アイコンが表すデータ・コントロール・オブジェクト、「データ・コントロール」パネルの階層内で表示される場所、そのアイコンを使用して作成できるコンポーネントを示しています。
表6-1 URLサービス・データ・コントロールの「データ・コントロール」パネルのアイコンおよびオブジェクト階層
アイコン | 名前 | 説明 | 作成できるコンポーネント |
---|---|---|---|
|
データ・コントロール |
データ・コントロールを表します。データ・コントロール自体を使用してUIコンポーネントを作成することはできませんが、そのデータ・コントロールの下に表示される子オブジェクトは使用できます。複数のデータ・コントロールが存在する可能性もあります。これらはそれぞれ、データ関数の論理グループを表しています。 |
他のオブジェクトのコンテナとして機能します。なし。 |
|
メソッド |
URLのコンテンツを取得する、 |
コマンド・コンポーネント。 パラメータをとるメソッドの場合: コマンド・コンポーネントおよびパラメータ付きフォーム。 詳細は、コマンド・コンポーネントを使用したビュー・レイヤーの機能の呼出しに関する項を参照してください。 |
|
メソッド戻り |
Webサービス・メソッドによって戻されたオブジェクトを表します。返されるオブジェクトは、単一の値またはコレクションです。 メソッドの戻りオブジェクトは、それを返すメソッドの下の子として示されます。メソッドの戻りオブジェクトの下の子として表示されるオブジェクトは、該当コレクションの属性、親コレクションに関連するアクションを実行する他のメソッド、および親コレクション上で実行可能な操作です。 単一値のメソッド戻りオブジェクトがドロップされた場合、メソッドはフレームワークによって自動的に起動されません。メソッドを起動するために、対応するメソッドをボタンとしてドロップする必要があります。また、タスク・フローを使用している場合は、メソッド・アクティビティを作成できます。実行可能ファイルの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のページ定義ファイルで定義される実行可能ファイル・バインディング・オブジェクトに関する項を参照してください。 |
コレクションと属性、および問合せフォームの場合と同じコンポーネント。 問合せフォームの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータバインドされたADF検索フォームの作成に関する項を参照してください。 |
|
コレクション |
URLサービスの操作から返されるデータ・コントロールを表現します。コレクションは、メソッド戻りオブジェクト、他のコレクション、または構造化属性の下の子として表示されます。コレクションの下の子は、属性、他のコレクション、カスタム・メソッド、コレクションに対して実行できる組込み操作などです。 |
フォーム、表、グラフ、ツリー、レンジ・ナビゲーションの各コンポーネント、およびマスター/ディテール・コンポーネント。 詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の基本的なデータバインドされたページの作成に関する項、データバインドされたADF表の作成に関する項、マスター/ディテール・データの表示に関する項、およびデータバインドされたグラフおよびゲージ・コンポーネントの作成に関する項 を参照してください。 |
|
構造化属性 |
複合型でありコレクションではない、返されたオブジェクトを表します。たとえば、構造化属性は、現在のサービス・リクエストに割り当てられた単一のユーザーを表現します。 |
ラベル、テキスト・フィールド、日付、値リスト、および選択リストの各コンポーネント 詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータ・コントロール属性を使用したテキスト・フィールドの作成に関する項、およびデータバインドされた選択リストとシャトルの作成に関する項を参照してください。 |
|
属性 |
オブジェクト内の個別データ要素を表します(行内の属性など)。属性は、それが属するコレクションまたはメソッド戻りオブジェクトの下に子として示されます。 |
ラベル、テキスト・フィールドおよび選択リストの各コンポーネント。 詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータ・コントロール属性を使用したテキスト・フィールドの作成に関する項を参照してください。 |
|
操作 |
親オブジェクト上でアクションを実行する組込みデータ・コントロール操作を表します。データ・コントロール操作は、コレクションの下の「操作」ノードにあります。1つ以上のパラメータが操作に必要な場合、それらのパラメータは操作の下の「パラメータ」ノードにリストされます。
|
ボタン、リンクおよびメニューなどのUIコマンド・コンポーネント。 詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータ・コントロール操作を使用したコマンド・コンポーネントの作成に関する項、および入力フォームの作成に関する項を参照してください。 |
|
パラメータ |
パラメータが示されているメソッドまたは操作によって宣言されたパラメータ値を表します。パラメータは、メソッドまたは操作の下のノードに表示されます。 URLサービス・データ・コントロールのパラメータは、ユーザーがURLに入れて渡したパラメータです。これらは、URLサービス・データ・コントロールが作成されたときに、 |
ラベル、テキストおよび選択リストの各コンポーネント。 |