プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle SOA SuiteでのSOAアプリケーションの開発
12c (12.1.3)
E53007-05
目次へ移動
目次

前
次

36 REST操作とSOAコンポジット・アプリケーションとの統合

この章では、REST (Representational State Transfer)操作をサービス・バインディング・コンポーネントおよび参照バインディング・コンポーネントとしてSOAコンポジット・アプリケーションに統合する方法について説明します。また、参照バインディング・コンポーネント構成中のWebアプリケーション記述言語(WADL)ファイルの使用方法についても説明します。

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

RESTアダプタの使用方法の詳細は、『Oracle SOA Suiteの理解』のRESTサービスによる出荷リソースの定義に関する説明を参照してください。

36.1 RESTサポートの概要

RESTは、ネットワーク・アプリケーションの設計用のアーキテクチャです。RESTfulアプリケーションは、HTTPリクエストを使用してデータのポスト(作成と更新)、データの取得(たとえば問合せの作成)、データの更新およびデータの削除を実行します。RESTは、Webサービスを使用するかわりの方法となります。

Oracle SOA Suiteでは次のRESTサポートを提供します。

  • SOAコンポジット・アプリケーションでのサポート:

    • 新規または既存のサービスでのRESTサポートの有効化。

    • 外部REST APIとの統合。

    • RESTful状態遷移セットの編成 (RPC/HATEOAS (Hypermedia as the Engine of Application State)アプローチ)。

    • XML、JavaScript Object Notation (JSON) (XMLへおよびXMLからの自動翻訳を含む)、URIサンプルおよびURLエンコードGET/POSTデータのサポート。

    • RESTサービス操作用のサンプルURIの生成。

    • WADLサービスのサポート。WADLは、デプロイ済のOracle SOA SuiteまたはOracle Service Busサービス、あるいはJersey RESTサービスなど、Oracle SOA SuiteまたはOracle Service Bus以外のサービスでも提供できます。

  • 開発の容易さ:

    • Oracle JDeveloperウィザードには、RESTインタフェースおよびWSDL操作バインディングをモデル化するためのいくつかのオプションが用意されています。

      • REST定義からWSDLへのマッピングが含まれる基礎となるWSDLを生成するための、リソース・パスおよびREST操作の手動による定義。

      • WSDL操作をリソース・パスおよびHTTP動詞にマッピングするサービス・コンポーネントまたは外部参照のWSDLの選択。

      • RESTアダプタに操作マッピングを自動的に移入する多数のソース(たとえば、アプリケーション・サーバーやSOA-MDS)からのWSDLの選択。

    • 開発時に使用する各メソッドを公開する読取り可能API。

    • Oracle JDeveloperからOracle RESTエンドポイント(Oracle Service Busなど)をブラウズおよび消費可能。

  • Oracle Web Service Manager (OWSM)ポリシーのRESTセキュリティのサポート。

  • 次のユースケースをサポートします。

    • 顧客リストの取得

    • 新規顧客の作成

    • 顧客の詳細情報の取得

    • 顧客の詳細情報の更新

    • 顧客の削除

    • 顧客の新住所の作成

    • 顧客の住所の取得

    • 顧客の住所の更新

36.2 サービスおよび参照バインディング・コンポーネントにおけるRESTサポートの作成

Oracle SOA Suiteコンポーネント、サービスおよび参照は、RESTサービスとして選択および公開できます。この項では、次のタスクの実行方法について説明します。

  • 既存のSOAコンポジット・アプリケーションのサービス・バインディング・コンポーネントとしてRESTサポートを追加します。

  • SOAコンポジット・アプリケーションから起動できる参照バインディング・コンポーネントとしてRESTサポートを追加します。

  • ショートカットを使用してRESTサポートを構成します。

  • RESTスキーマを生成します

  • ホスト、ポートおよびプロトコル値のグローバル・トークン変数を使用します。

注意:

  • RESTバンディングは、非同期コンポーネント(例: 非同期BPELプロセス)に添付できません。この添付を試みると、この操作はサポート対象ではないため、RESTサービスと一方向インタフェースを持つサービスの間にOracle Mediatorを配置し、サービス・コールバックを別の(アウトバウンド) RESTアダプタにルーティングするための回避策の提案を示すメッセージが表示されます。

  • RESTサービス・バインディング・コンポーネントはREST参照バインディング・コンポーネントに接続できません。

36.2.1 RESTアダプタをSOAコンポジット・アプリケーションのサービス・バインディング・コンポーネントとして構成する方法

この項では、Oracle MediatorまたはBPELプロセス・サービス・コンポーネントに接続するサービス・バインディング・コンポーネントとしてRESTを追加する方法について説明します。この例では、梱包および出荷サービスに、注文の梱包および出荷に関する情報を含む出荷リソースがあることを前提としています。出荷リソースには、更新された注文ステータスも返されます。

RESTアダプタをSOAコンポジット・アプリケーションのサービス・バインディング・コンポーネントとして構成する手順は、次のとおりです。

  1. SOAコンポジット・エディタの「公開されたサービス」スイムレーンを右クリックし、「挿入」「REST」を選択します。この操作で、適切なサービス・コンポーネントと相互作用するサービス・バインディング・コンポーネントとしてRESTサポートを追加できます。

    「RESTバインディングの作成」ダイアログが表示されます。表36-1に、このダイアログの各フィールドを示します。


    表36-1 「RESTバインディングの作成」ダイアログ

    フィールド 説明

    名前

    RESTサービスの名前を入力します。

    タイプ

    作成するRESTサービスのタイプ(サービス・バインディング・コンポーネントまたは参照バインディング・コンポーネント)が表示されます。

    説明

    説明を入力します。この説明は、開発時に使用される読取り可能なAPIの一部として公開されます。この説明は、サービス・バインディング・コンポーネントについてのみ表示されます。

    XMLSchemaの順序付けを強制

    選択するとXMLスキーマの順序付けが強制されます。

    選択すると、XMLスキーマの要素の順序付けと一致するようにJSONペイロードを並べ替えます。これには、インバウンド・リクエスト・ペイロードおよびアウトバウンド・リクエストからのレスポンスが含まれます。このオプションによって、パフォーマンスのオーバーヘッドが追加される可能性があります。

    このチェック・ボックスを選択すると、RESTサービス・バインディングのプロパティreorderJsonAsPerXmlSchemacomposite.xmlファイルでtrueに設定されます。

    リソース・パス

    デフォルト・リソース・パス(/)をダブルクリックしてリソース・パスを更新するか(これについては手順4で説明します)、または「追加」をクリックして新しいリソース・パスを追加します。

    操作バインディング

    「追加」をクリックし、RESTサービスと対話するコンポーネントのWSDLに基づいて、REST操作を定義することを選択します。

    • RESTサービスの定義を手動で定義するには、「操作バインディングの追加」を選択します。リソース・パスおよびREST操作を定義できます。REST定義からWSDLへのマッピングが含まれた基礎となるWSDLが生成されます。この選択の詳細は、「スキーマを手動で生成する方法」を参照してください。

    • 「RESTコンポーネントや参照の有効化」を選択して、「サービス・エクスプローラ」ダイアログを起動し、WSDL操作をリソース・パスおよびHTTP動詞にマッピングするサービス・コンポーネントまたは外部参照のWSDLを選択します。このオプションは、サービス・バインディング・コンポーネントにのみ使用できます。この選択については、このセクション内の後の手順で説明します。

    • 「REST外部Webサービスの有効化」を選択して、「WSDLチューザ」ダイアログを起動し、アプリケーション・サーバーおよびSOA-MDSを含む多数のソースからWSDLを選択します。WSDLの選択後、RESTアダプタに選択したWSDLの操作マッピングが自動的に移入されます。ダイアログが終了すると、RESTサービス、SOAP参照およびこれら2つの間のワイヤが作成されます。


  2. 「操作バインディング」セクションで「追加」アイコンをクリックし、「RESTコンポーネントや参照の有効化」を選択します。

    「サービス・エクスプローラ」ダイアログが表示されます。

  3. ナビゲータを開いて、サービス・コンポーネントのWSDL (この例ではBPELプロセス)を選択し、「OK」をクリックします。この操作で、WSDL操作をリソース・パスおよびHTTP動詞にマッピングできます。図36-1に詳細を示します。

    図36-1 REST操作をリソース・パスおよびHTTP動詞にマッピングするために選択されたWSDL

    図36-1の説明が続きます
    「図36-1 REST操作をリソース・パスおよびHTTP動詞にマッピングするために選択されたWSDL」の説明

    「RESTバインディングの作成」ダイアログが更新され、図36-2のようになります。

    選択したWSDLが読み取られ、WSDL操作packAndShipが、「操作バインディング」セクションのリソース・パスおよびHTTP動詞にマッピングされます。「リソース・パス」および「HTTP動詞」セクションには、構成マッピングを追加する必要があることに注意してください。これは、「完了」列の「いいえ」の値でも示されます。

    表36-2 「RESTバインディングの作成」ダイアログ

    図36-2の説明が続きます
    「図36-2 「RESTバインディングの作成」ダイアログ」の説明

    今度は、各操作のリソース・パスおよびHTTP動詞を構成する必要があります。この例では、操作は1回のみです。WSDLによっては、図36-2「操作」列に複数の操作が表示される可能性があります。

  4. 「リソース」セクションの「リソース・パス」表で、「/」のデフォルト・パス・エントリをダブルクリックします。操作バインディングを開始する前にリソース・パスを定義することもできます。この場合、選択されているリソースが新しいバインディングに使用されます。

    「RESTリソースの更新」が起動します。

  5. 「相対パス」フィールドで、リソース・パス(この例では/orders)を入力し、「OK」をクリックします。図36-3に詳細を示します。

    図36-3 「RESTリソースの更新」ダイアログ

    図36-3の説明が続きます
    「図36-3 「RESTリソースの更新」ダイアログ」の説明

    古いリソース・パスを持つ操作マッピングが、「リソース」セクションおよび「操作バインディング」セクション(この例では、/orders)の新しいリソース・パスで更新されます。既存のコンポーネントを更新する場合は、通常はすべての操作が更新されます。図36-4に詳細を示します。

    図36-4 「リソース」および「操作バインディング」セクションで更新されたリソース・パス

    図36-4の説明が続きます
    「図36-4 「リソース」および「操作バインディング」セクションで更新されたリソース・パス」の説明

    必要に応じて、「リソース」セクションの「追加」アイコンをクリックし、「RESTリソースの作成」ダイアログを表示して、リソース・パスを追加で作成できます。

    今度は、「操作バインディング」セクションの「HTTP動詞」列を構成する必要があります。

  6. 「操作バインディング」セクションで、操作を選択して「編集」をクリックするか、行(この例ではpackAndShip)をクリックします。図36-5に詳細を示します。

    図36-5 「操作バインディング」の選択内容

    図36-5の説明が続きます
    「図36-5 「操作バインディング」の選択内容」の説明

    「REST操作バインディング」ダイアログが表示されます。

    このダイアログを使用して、操作のHTTP動詞を選択し、HTTP動詞およびリソースをWSDL操作にバインドしてRESTパラメータをコンポーネント・サービスのWSDLスキーマにマッピングするために「URIパラメータ」セクションに移入できます。表36-2に、このダイアログの各フィールドを示します。


    表36-2 「REST操作バインディング」ダイアログ

    フィールド 説明

    操作

    マッピングするWSDL操作名を表示します。ほとんどの場合、生成されたWSDLで使用されている名前を指定できます。

    • 「RESTバインディングの作成」ダイアログでコンポーネント・サービスからの操作の追加を選択し、「サービス・エクスプローラ」ダイアログでWSDLファイルを選択した場合、このフィールドは読取り専用になります。

    • 「RESTバインディングの作成」ダイアログで「操作バインディングの追加」を選択した場合は、このフィールドを編集できます。

    リソース

    既存のURLリソース・パスをリストから選択するか(これについては手順7で説明します)、または「追加」アイコンをクリックして新しいリソース・パスを追加します。

    選択したリソース・パスが、このダイアログの下部にある「リクエスト」セクションの「URIパラメータ」表に追加されます。選択したリソースに{var}などのテンプレート変数が含まれている場合、その変数がURIパラメータに追加されます。

    HTTP動詞

    WSDL操作にバインドされる動詞(GETPUTPOSTDELETEなど)を選択します。(これについては手順8で説明されています。)

    この選択内容によって、受信REST問合せパラメータからWSDLスキーマへのマッピングが「URIパラメータ」表に移入されます。

    操作のHTTP動詞は、「OK」をクリックした後に、「RESTバインディングの作成」ダイアログの「操作バインディング」セクションにも追加されます。

    説明

    説明を入力します(オプション)。参照バインディング・コンポーネントには、「ベースURI」フィールドがあります。

    リクエスト

    「スキーマ」セクションには、使用されているリクエスト・スキーマが表示されます。

    • スキーマURL: 使用するリクエスト・スキーマが表示されます。「RESTバインディングの作成」ダイアログで「RESTコンポーネントや参照の有効化」を選択した場合、スキーマはサービスの操作WSDLから取得されるため、このフィールドは読取り専用になります。「RESTバインディングの作成」ダイアログで「操作バインディングの追加」を選択した場合、スキーマを参照するか、ネイティブ・フォーマット・ビルダー・ウィザードを使用してサンプルから新しいスキーマを作成する必要があります。

    • 要素: 使用する要素が表示されます。

    「ペイロード」セクションでは、リクエスト・ペイロードの形式をXML (デフォルト選択項目)、JSON、URLエンコードまたはペイロードなしのいずれかに指定できます。「サンプル・ペイロードの生成」をクリックして、選択したリクエスト・ペイロードのサンプルを表示します。

    「URIパラメータ」セクションでは、REST問合せパラメータからWSDLスキーマへのマッピングを指定できます。このセクションは、「HTTP動詞」リストでスキーマを指定する際に(動詞に応じて)自動的に移入されます。GET動詞およびDELETE動詞では、パラメータはWSDLスキーマにバインドされます。POST動詞およびPUT動詞では、インバウンド・ペイロードがWSDLスキーマにマッピングされます。

    1. 「操作用のサンプルURLを生成」アイコン(最初のアイコン)をクリックして、以前入力したすべてのバインディング情報に基づいてサンプルURLを生成します。このオプションは通常、すべてのパラメータを構成した後に選択します。

    2. 「パラメータの追加」アイコン(2番目のアイコン)をクリックして、マッピング・パラメータを手動で追加します。

    3. 「スタイル」列で特定の行をクリックするとリストが呼び出され、このリストで問合せまたはテンプレートを選択できます。テンプレート変数は、通常、POST操作およびPUT操作に使用されます。問合せパラメータは、通常、GET操作およびDelete操作に使用されます。

    4. 「タイプ」列で、パラメータのデータ型を選択します。すべてのXSDプリミティブ型がサポートされています。多くの場合、パラメータがスキーマから自動的に生成されるときにタイプが設定されます。新しいパラメータを作成した場合は、「タイプ」列でリストからタイプを選択できます。

    5. 「デフォルト値」列で、パラメータの設計時のデフォルト値を設定できます。RESTリクエストにURIパラメータがない場合は、RESTサービスによって対応するデフォルト値が使用されます。

    6. 「式」列で特定の行をクリックすると、xpath-expression関数を追加するための「式ビルダー」ダイアログが表示されます。スキーマが操作に対して定義されていない場合、「式ビルダー」パラメータにはプロパティ変数のみが表示され、メッセージ変数は表示されません。式によってパラメータがWSDLスキーマのフィールドにバインドされます。パラメータが自動的に生成される(既存または生成されたスキーマに基づいて)すべての場合に、この式はすでに自動的に生成されています。新しいパラメータを追加する場合や実行時プロパティなどの別のものにバインドする場合にのみ、式を追加します。XPath式は、特定のURIパラメータを正規化されたメッセージに挿入する場所を指定します。

    レスポンス

    「HTTPステータス」セクションでHTTPステータス・コードを指定できます。空白で区切られた複数のステータスを入力できます。参照では、成功と解釈される可能性のあるステータスがあります。サービスでは、返すことができる可能性のある成功ステータス(BPELなどのサービス・コンポーネントによって設定)があります。

    「ペイロード」セクションでは、可能なレスポンス・ペイロードであるXML (デフォルト)、JSONまたはペイロードなしを指定できます。実行時に返される出力は、受信リクエストに応じて異なります。「サンプル・ペイロードの生成」をクリックして、選択したレスポンス・ペイロードのサンプルを表示します。

    「スキーマ」セクションには、可能なペイロードのタイプが選択されている場合に使用されるレスポンス・スキーマが表示されます。ペイロードなしが選択されている場合、このフィールドは表示されません。

    • スキーマURL: 使用するレスポンス・スキーマが表示されます。スキーマを指定していない場合は、既存のスキーマを参照するか、ネイティブ・フォーマット・ビルダー・ウィザードを使用してサンプルから新しいスキーマを作成するかを選択できます。このウィザードでは、JSON Interchangeフォーマット、XMLサンプル、URIエンコード形式またはURIサンプルのいずれかでスキーマを作成できます。詳細は、「サンプルからのスキーマの生成方法」を参照してください。

    • 要素: 使用する要素が表示されます。

    「フォルト・バインディング」セクションには、レスポンス・フォルト名、タイプ、ステータスおよびスキーマが表示されます。フォルトの詳細がWSDLファイルで定義されている場合は、フォルト・バインディングがこのセクションに自動的に作成されます。フォルト・バインディングは、「追加」アイコンをクリックして、手動でも定義できます。フォルトの詳細は、「RESTフォルト・バインディングに関する必知事項」を参照してください。


  7. 必要に応じて、「リソース」リストで新しいリソースを選択します。図36-6に詳細を示します。

    図36-6 新規リソースの選択

    図36-6の説明が続きます
    「図36-6 新規リソースの選択」の説明

    「URIパラメータ」セクションが更新され、選択内容が反映されます。

  8. 「HTTP動詞」リストで操作(この例ではGET)を選択します。

    「URIパラメータ」セクションが更新され、選択内容が反映されます。図36-7に詳細を示します。

    スタイル(queryまたはtemplate)は、「URIパラメータ」セクションの「スタイル」列で自動的に選択されます。

    テンプレート変数を含む新規RESTリソースを選択または作成する場合、Oracle JDeveloperでは、同じ名前のテンプレート・パラメータの作成を試みます。その名前のパラメータがすでに存在する場合、その名前が再使用されます(また、問合せパラメータだった場合はテンプレート・パラメータになります)。重複したパラメータ名は決して作成されません。重複したパラメータが手動で作成されると、エラーが返されます。

  9. 「レスポンス」タブをクリックして、HTTPステータス・コード、ペイロード出力タイプ、スキーマおよびフォルト・バインディングの詳細を表示します。スキーマはこの例ですでに定義したので、選択項目の編集が無効になっています。

  10. フォルト名をダブルクリックして、「RESTフォルト・バインディング」ダイアログを表示します。このダイアログの詳細は、「ヘルプ」アイコンをクリックするか、「RESTフォルト・バインディングに関する必知事項」を参照してください。

  11. 必要に応じて編集し、「OK」をクリックします。

  12. 「OK」をクリックして、「RESTバインディングの作成」ダイアログ(図36-8を参照)に戻ります。追加したHTTP動詞が表示されます。

    表36-8 「RESTバインディングの作成」ダイアログ

    図36-8の説明が続きます
    「図36-8 「RESTバインディングの作成」ダイアログ」の説明

    この例では操作は1回のみです。WSDLに操作を追加した場合は、「操作バインディング」セクションの「操作」列に表示されます。

  13. 「操作バインディング」セクションで、操作を選択し、「編集」をクリックして、残りの操作についてもリソースおよびHTTP動詞を定義します。

  14. 「OK」をクリックしてSOAコンポジット・エディタに戻ります。

    RESTサービスはBPELプロセス・サービス・コンポーネントに接続されます。図36-9に詳細を示します。

    図36-9 BPELプロセスに接続されたRESTアダプタ・サービス

    図36-9の説明が続きます
    「図36-9 BPELプロセスに接続されたRESTアダプタ・サービス」の説明

36.2.2 RESTアダプタをSOAコンポジット・アプリケーションの参照バインディング・コンポーネントとして構成する方法

この項では、REST参照バインディング・コンポーネントをSOAコンポジット・アプリケーションに追加する方法について説明します。この例では、WADLファイルに基づく既存のREST参照を追加する方法を説明します。WADLファイルは、HTTPベースのWebアプリケーションのXMLを記述します。

RESTアダプタをSOAコンポジット・アプリケーションの参照バインディング・コンポーネントとして構成する手順は、次のとおりです。

  1. SOAコンポジット・アプリケーションの「外部参照」スイムレーンを右クリックして、「挿入」「REST」の順に選択し、BPELプロセスまたはOracle Mediatorなどのサービス・コンポーネントからREST参照を起動します。

    「RESTバインディングの作成」ダイアログが表示されます。

  2. 「操作バインディング」セクションで「追加」アイコンをクリックし、「WADLサービスに基づく操作の追加」を選択します。

    「WADLの場所」ダイアログが表示されます。

  3. 次のいずれかの方法で、WADLファイルを指定します。

    1. 「WADL URL」フィールドでWADLファイルのURLを指定し、手順4に進みます。

      または

    2. 「検索」アイコンをクリックして、WADLファイルを検索する「WADLチューザ」ダイアログを表示します。WADLの検索オプションが表示され、ローカル・ファイル・システムまたはプロジェクト内、あるいはデザインタイムOracle Metadata Servicesリポジトリ(MDSリポジトリ)内を検索するか、アプリケーション・サーバーに接続して、デプロイ済のOracle SOA SuiteまたはOracle Service Busサービスに関連するWADLを検索するかを選択できます。図36-10に詳細を示します。

      図36-10 「WADLチューザ」ダイアログ

      図36-10の説明が続きます
      「図36-10 「WADLチューザ」ダイアログ」の説明
    3. WADLファイルを選択し、「OK」をクリックします。

    4. 手順4に進みます。

  4. 「OK」をクリックします。

  5. WADLファイル内で参照されているスキーマは新しいRESTアダプタ参照で使用されるため、「スキーマ・アーティファクトをプロジェクトにコピー。」を選択してこれらのスキーマをローカル・プロジェクトにコピーします。これが推奨される方法です。

  6. 選択したWADLファイルのタイプに応じて、手順を参照してください。表36-3に詳細を示します。


    表36-3 WADLファイルのステータス

    選択したWADLファイルの提供元 結果 手順

    Oracle SOA SuiteまたはOracle Service BusのRESTサービス

    「RESTバインディングの作成」ダイアログに、そのWADLファイルの情報がすべて構成されます。すべての操作、リソース・パスおよび動詞が「操作バインディング」セクションに表示されます。すべての構成が、「操作バインディング」セクションの「完了」列に「はい」の値で表示されます。

    6.a

    Oracle SOA SuiteまたはOracle Service Bus以外のRESTサービス(Jerseyサービスなど)。

    「WADL解析問題」ダイアログに、追加の構成が必要と表示されます。

    6.b


    1. 「RESTバインディングの作成」ダイアログを表示して内容を確認し、「OK」をクリックします。図36-11に詳細を示します。

      図36-11 すべての操作バインディングが完了した「RESTバインディングの作成」ダイアログ

      図36-11の説明が続きます
      「図36-11 すべての操作バインディングが完了した「RESTバインディングの作成」ダイアログ」の説明
    2. 「WADL解析問題」ダイアログ(図36-12を参照)で、推奨修正処理のリストを確認し、「OK」をクリックします。後の参照用に、同じ情報がOracle JDeveloperの「ログ」ウィンドウに書き込まれます。

      Oracle SOA SuiteまたはOracle Service Bus以外のサービスのWADLファイルには、通常、必要な情報がすべて含まれていません。構成を手動で完了する必要があります。図36-12などの多くの場合に、使用するWADLファイルではREST参照をWSDL操作にバインドするために必要なスキーマが提供されません。通常、このスキーマは、RESTサービス・プロバイダによって提供されるサンプル・ペイロードを使用してネイティブ・フォーマット・ビルダー・ウィザードで生成できます。

      「RESTバインディングの作成」ダイアログが表示されます。

      さらに構成が必要なRESTバインディングについては、「操作バインディング」セクションの「完了」列に「いいえ」の値が表示されます。値が「いいえ」の各「完了」列のツールチップには、欠落している内容が示されているので、修正処理を実行できます。少なくとも1つの操作の「完了」列に「いいえ」の値があるかぎり、「OK」ボタンは無効になります。図36-13に詳細を示します。

      注意:

      Oracle JDeveloperの「ログ」ウィンドウにも、すべてのエラーおよび警告がより詳しく表示されます。たとえば、「ログ」ウィンドウには次のようなエントリが含まれています。

      ERROR at [resource path: containers/{container}, method name: PUT,
      request/response: response, representation mediaType:
      application/xml ] - No schema information is available for
      containers/{container}.PUT response.  Please specify a schema.

      図36-13 操作バインディングが完了していない「RESTバインディングの作成」ダイアログ

      図36-13の説明が続きます
      「図36-13 操作バインディングが完了していない「RESTバインディングの作成」ダイアログ」の説明
    3. ツールチップに表示される修正処理を実行します。構成が正常に完了すると、「操作バインディング」セクションの「完了」列のすべての操作に「はい」の値が表示されます。図36-14に詳細を示します。

      図36-14 すべての操作バインディングが完了した「RESTバインディングの作成」ダイアログ

      図36-14の説明が続きます
      「図36-14 すべての操作バインディングが完了した「RESTバインディングの作成」ダイアログ」の説明

      SOAデザインタイムMDSリポジトリの詳細は、「デザインタイムとの共有データの管理」を参照してください。

36.2.3 ショートカットからRESTアダプタを構成する方法

RESTアダプタは、WSDLまたはWADLファイルに基づくいくつかのショートカットを使用して構成できます。

36.2.3.1 アプリケーション・サーバーにデプロイされたWebサービスに基づいてRESTサービスを生成する手順:

  1. Oracle JDeveloperメイン・メニューから、「ウィンドウ」「アプリケーション・サーバー」を選択します。

  2. WSDLサービスを右クリックして、「SOA」「RESTとして公開」を選択します。図36-15に詳細を示します。

    図36-15 自動RESTアダプタ・サービス・バインディング・コンポーネントの構成

    図36-15の説明が続きます
    「図36-15 自動RESTアダプタ・サービス・バインディング・コンポーネントの構成」の説明

    「RESTバインディングの作成」ダイアログが起動し、選択されたWSDLファイルから操作マッピングが移入されます。

  3. 「RESTアダプタをSOAコンポジット・アプリケーションのサービス・バインディング・コンポーネントとして構成する方法」の手順を実行して、必要な構成をすべて完了します。

    注意:

    選択したWSDLとその依存アーティファクトのローカル・コピーを作成するよう求められます。ローカル・コピーの作成を選択すると、SOAP参照バインディング・コンポーネントのbinding.wsセクションに、選択元の具体WSDL/エンドポイントの場所と、抽象WSDLとして(コンポジットのインポートなどで)使用されるコピー先のWSDLが含まれます。

    構成が完了すると、RESTサービス・バインディング・コンポーネントがSOAP参照バインディング・コンポーネントに接続されます。図36-16に詳細を示します。

    図36-16 RESTサービス・バインディング・コンポーネントおよびSOAP参照バインディング・コンポーネントの構成

    図36-16の説明が続きます
    「図36-16 RESTサービス・バインディング・コンポーネントおよびSOAP参照バインディング・コンポーネントの構成」の説明

36.2.3.2 アプリケーション・サーバーにデプロイされたRESTサービスに基づいてREST参照を生成する手順:

  1. Oracle JDeveloperメイン・メニューから、「ウィンドウ」「アプリケーション・サーバー」を選択します。

  2. REST/WADLサービスを右クリックして、「SOA」「REST参照の生成」を選択します。図36-17に詳細を示します。

    図36-17 自動RESTアダプタ参照バインディング・コンポーネントの構成

    図36-17の説明が続きます
    「図36-17 自動RESTアダプタ参照バインディング・コンポーネントの構成」の説明

    「RESTバインディングの作成」ダイアログが起動し、選択したWADLファイルからの情報が移入されます。

  3. 「RESTアダプタをSOAコンポジット・アプリケーションの参照バインディング・コンポーネントとして構成する方法」の手順を実行して、必要な構成をすべて完了します。

    構成が完了すると、図36-18のようにREST参照バインディング・コンポーネントが表示されます。

    図36-18 RESTアダプタ参照コンポーネント

    図36-18の説明が続きます
    「図36-18 RESTアダプタ参照コンポーネント」の説明

36.2.3.3 SOAコンポーネントのWSDLサービスに基づいてRESTサービスを生成する手順:

  1. SOAコンポジット・エディタで、SOAコンポーネント・サービスまたは外部参照を右クリックして、「RESTとして公開」オプションを選択します。図36-19に詳細を示します。

    図36-19 「RESTとして公開」オプション

    図36-19の説明が続きます
    「図36-19 「RESTとして公開」オプション」の説明

    「RESTバインディングの作成」ダイアログが起動し、選択したWADLファイルからの情報が移入されます。

  2. 必要なRESTアダプタ構成をすべて完了します。

    構成が完了すると、RESTサポート(この例ではサービス・バインディング・コンポーネント)が作成され、クリックしたインタフェースに自動的に接続されます。図36-20に詳細を示します。

    図36-20 RESTアダプタ・サービス・バインディング・コンポーネント

    図36-20の説明が続きます
    「図36-20 RESTアダプタ・サービス・バインディング・コンポーネント」の説明

36.2.4 スキーマを手動で生成する方法

スキーマ生成のためのスキーマまたはサンプル・データがない場合は、スキーマ生成のためのパラメータを手動で入力できます。スキーマを手動で定義するには、「追加」アイコンをクリックし、「RESTバインディングの作成」ダイアログの「操作バインディング」セクションで「操作バインディングの追加」を選択します。

次のガイドラインに留意してください。

  • 「REST操作バインディング」ページの「URIパラメータ」セクションで、必要な問合せまたはテンプレート・パラメータを入力します。各パラメータにデータ・タイプを選択できますが、式を入力する必要はありません。スキーマやペイロードが指定されていない場合、「OK」をクリックすると、パラメータ・スキーマが自動的に生成されます(WSDLに埋め込まれます)。ランタイム・プロパティにマッピングされた式を持つパラメータは、生成されたスキーマには含まれません。

  • スキーマが操作に対して定義されていない場合、「式」列からアクセス可能な「式ビルダー」ダイアログにのみ、プロパティ変数が表示され、メッセージ変数は表示されません。

RESTサポート作成の詳細は、「RESTアダプタをSOAコンポジット・アプリケーションのサービス・バインディング・コンポーネントとして構成する方法」および「RESTアダプタをSOAコンポジット・アプリケーションの参照バインディング・コンポーネントとして構成する方法」を参照してください。

36.2.5 サンプルからのスキーマの生成方法

スキーマは、JSON interchangeフォーマットを含むサンプル・ファイルから生成できます。

  1. 「REST操作バインディング」ダイアログの「リクエスト」セクションで、「スキーマURL」フィールドの右にある「ネイティブ・フォーマットのスキーマの定義」アイコンをクリックします。図36-21に詳細を示します。

    図36-21 「ネイティブ・フォーマットのスキーマの定義」アイコン

    図36-21の説明が続きます
    「図36-21 「ネイティブ・フォーマットのスキーマの定義」アイコン」の説明

    ネイティブ・フォーマット・ビルダー・ウィザードが表示されます。

  2. 「タイプの選択」ページが表示されるまで、ウィザードの最初のページを進みます。

    このページでは、各種のフォーマット・タイプからスキーマを生成することを選択できます。図36-22に詳細を示します。

    図36-22 スキーマを生成するタイプ

    図36-22の説明が続きます
    「図36-22 スキーマを生成するタイプ」の説明
  3. 適切なタイプを選択します。

    タイプにはそれぞれ、JSON、XMLまたはURLサンプルを貼り付けるか、インポートするサンプル・ファイルを選択する領域があります。

    JSON interchangeフォーマットの詳細は、「JSON InterchangeフォーマットからRESTスキーマへの変換に関する必知事項」を参照してください。

36.2.6 グローバル・トークン変数の使用方法

「RESTバインディングの作成」ダイアログの「ベースURI」フィールドで、ホスト名、ポート番号およびプロトコルのグローバル・トークン変数の割当てができます。

グローバル・トークン変数を使用する手順は次のとおりです。

  1. 「SOAコンポジット・エディタ」の上で、「バインディングURLのトークン化機能」アイコンをクリックします。
  2. REST外部参照を選択し、「編集」アイコンをクリックします。
  3. mdm-url-resolver.xmlファイルを指定するか、ホスト、ポートおよびプロトコル(httpまたはhttps)の値を手動で入力し、「OK」をクリックします。

    その後、トークンに割り当てられた値によって、composite.xmlファイルのbinding.ws要素のlocation属性内のハードコードされたHTTPホストおよびポート値が置き換えられます。詳細は、「外部参照のバインディングURLで使用するためのトークンの作成」を参照してください。

36.2.7 RESTヘッダーのプロパティの設定方法

正規化されたメッセージ・プロパティは、特定の標準HTTPヘッダーで使用できます。これらのプロパティは、図36-23に示すOracle JDeveloperのBPELのreceiveアクティビティおよびreplyアクティビティの「プロパティ」タブの選択項目に表示されます。これらのヘッダー・プロパティは、デフォルトではサービス・エンジン全体に伝播されません。これらは、適切な割当てロジックを適用することよって手動で伝播する必要があります。

図36-23 receiveおよびreplyアクティビティでの正規化されたメッセージのプロパティ

図36-23の説明が続きます
「図36-23 receiveおよびreplyアクティビティでの正規化されたメッセージのプロパティ」の説明

36.2.7.1 インバウンドおよびアウトバウンド・ヘッダー

外部クライアントがSOA RESTサービスと対話するインバウンドの場合、次にクライアントが対話するリソースへのハイパーリンクを送信するためのサービス構成できます。このハイパーリンクは、リソースまたはHTTPリンクのレスポンス・ヘッダーのペイロードで送信できます。次の正規化メッセージ・プロパティが作成され、次のリンクが返されます。

  • rest.binding.requestBaseURI

    このプロパティは、リクエスト・メッセージ上で使用できます。RESTサービスのベースURIを保持します。SOAコンポジット・アプリケーションで、これを同じRESTサービスの別のリソースのパスに結合して、そのリソースに戻る絶対URLを作成できます。

  • rest.binding.http.Link

    このプロパティがレスポンス・メッセージで設定されると、リンク・ヘッダーがHTTPレスポンスに追加されます。このヘッダーの値は、正規化されたメッセージ・プロパティの値です。

SOAコンポジット・アプリケーションが外部RESTサービスを起動するアウトバウンドの場合、サービスによってリンク・ヘッダーまたはペイロードのいずれかにある次のリンクが含まれたレスポンスが返されることがあります。次の正規化されたメッセージ・プロパティは、次のリンクを取得し、そのリンクにあるリソースを起動するために使用できます。

  • rest.binding.http.Link

    外部RESTサービスからのHTTPレスポンスにリンク・ヘッダーが含まれている場合、rest.binding.http.Linkプロパティがそのレスポンス・メッセージに追加されます。このプロパティの値は、リンク・ヘッダーの値です。

  • rest.binding.requestURI

    次のリンクにあるリソースは、リクエスト・メッセージでrest.binding.requestURIプロパティを設定することで起動できます。設定した場合、このプロパティのURLが、設計時に指定されたURLをオーバーライドします。これは、外部RESTサービスを起動します。

SOAコンポジット・アプリケーションが、外部RESTサービスから受信した次のリンクに基づいてRESTリソースを起動するときに、満たす必要のある事前条件がいくつかあります。

  • 起動される可能性のあるリソースは、設計時にREST参照バインディング・コンポーネントで設計されている必要があります。

  • リクエストおよびレスポンスの構造は、既知のものであり、設計時にモデル化されている必要があります。

「プロパティ」タブの正規化されたメッセージ・プロパティの設定の詳細は、「メッセージ・ヘッダーを介した正規化メッセージ・プロパティの伝播」を参照してください。

36.2.7.2 カスタム・ヘッダー・サポート

RESTサービスおよび参照は、カスタムHTTPヘッダーを処理できます。表36-4に詳細を示します。


表36-4 カスタム・ヘッダー・サポート

方向 サービス側 参照側

リクエスト

リクエストに含まれるHTTPヘッダーは、正規化されたメッセージ・プロパティとして伝播されます。ヘッダーにはrest.binding.http.header-nameが付加されます。これらのヘッダーは、正規化されたメッセージ・プロパティの一部として、サービス・エンジンで使用できます。たとえば、個々のヘッダーは、receiveアクティビティおよびreplyアクティビティのプロパティにあるBPELプロセスで取得できます。

rest.binding.http.*が先頭に付いたすべての正規化されたメッセージ・プロパティは、HTTPヘッダーとしてHTTPリクエストに追加されます。ヘッダーをHTTPリクエストに添付する前に、RESTサービスによって、ヘッダー名から接頭辞rest.binding.http.が削除されます。

レスポンス

rest.binding.http.*が先頭に付いたすべての正規化されたメッセージ・プロパティは、HTTPヘッダーとしてHTTPレスポンスに追加されます。ヘッダーをHTTPレスポンスに添付する前に、RESTサービスによって、ヘッダー名から接頭辞rest.binding.http.が削除されます。

レスポンスで受信するHTTPヘッダーは、正規化されたメッセージ・プロパティとして伝播されます。ヘッダーにはrest.binding.http.header-nameが付加されます。これらのヘッダーは、正規化されたメッセージ・プロパティの一部として、サービス・エンジンで使用できます。たとえば、個々のヘッダーは、receiveアクティビティおよびreplyアクティビティのプロパティにあるBPELプロセスで取得できます。


36.2.8 RESTフォルト・バインディングに関する必知事項

図36-24に示すとおり、「RESTフォルト・バインディング」ダイアログでRESTフォルト・バインディング・レスポンスの詳細を定義します。フォルトの詳細がWSDLファイルで定義される場合は、「RESTフォルト・バインディング」ダイアログの「フォルト・バインディング」セクションにフォルト・バインディングが自動的に作成されます。フォルト・バインディングは、「フォルト・バインディング」セクションの「フォルト・バインディングの追加」アイコンをクリックすることで、手動でも定義できます。

図36-24 「RESTフォルト・バインディング」ダイアログ

図36-24の説明が続きます
「図36-24 「RESTフォルト・バインディング」ダイアログ」の説明

デフォルトでフォルト・ステータスは、フォルト・ペイロードがある場合は400で、フォルト・ペイロードがない場合は404です。

フォルト・バインディングの詳細は、「RESTバインディングの作成」ダイアログでの選択内容によって異なります。

  • 「RESTコンポーネントや参照の有効化」を選択した場合、フォルト・バインディングは、WSDLファイルで定義されているフォルトに基づいて自動的に生成されます。

  • 「操作バインディングの追加」を選択した場合は、サポートされるフォルト・バインディングを構成する必要があり、これは生成されるWSDLに追加されます。

「REST操作バインディング」ダイアログの「フォルト・バインディング」セクションには、レスポンス・フォルト名、タイプ、ステータスおよびスキーマが表示されます。図36-25に詳細を示します。

図36-25 フォルト・バインディングの定義

図36-25の説明が続きます
「図36-25 フォルト・バインディングの定義」の説明

36.2.9 JSON InterchangeフォーマットからRESTスキーマへの変換に関する必知事項

RESTスキーマは、ネイティブ・フォーマット・ビルダー・ウィザードの「タイプの選択」ダイアログで、JSON Interchangeフォーマット・サンプルから作成することを選択できます(図36-22を参照)。スキーマの生成中、このウィザードは次のことを試行します。

  • ネームスペース情報のないRESTスキーマを生成します。

  • ネームスペース情報のないJSON Interchangeフォーマット・サンプルを消費し、適切なネームスペースを持つXMLを生成します。

ただし、変換を処理できない場合もあります。

  • ネームスペース情報が保持され、[[LinkToOldExample - TopicID=SOASE88875 - Title=Unsupported JSON Interchange Format ]]に示すJSON Interchangeフォーマット・サンプルの変換が可能になります。これは、基礎となるスキーマに複数のネームスペースからの要素および属性があるためです。

    [[OldExample - - TopicID=SOASE88875 - Title=Unsupported JSON Interchange Format ]]

    <schema xmlns:us="http://xmlns.oracle.com/addresses/us"
    xmlns:india="http://xmlns.oracle.com/addresses/india"
    targetNamespace="http://xmlns.oracle.com"
    xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
       <import ...>
       <element name="Person">
           <complexType>
               <choice>
                    <element ref="us:Address"/>
                    <element ref="india:Address"/>
               </choice>
           </complexType>
       </element>
    </schema>
    <schema targetNamespace="http://xmlns.oracle.com/addresses/us"
    xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
       <element name="Address">
           <complexType>
               <sequence>
                    <element name="Street" type="xsd:string"/>
                    <element name="City" type="xsd:string"/>
                    <element name="State" type="xsd:string"/>
                    <element name="ZipCode" type="xsd:integer" minOccurs="0"/>
               </sequence>
           </complexType>
       </element>
    </schema>
    <schema targetNamespace="http://xmlns.oracle.com/addresses/india"
    xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
       <element name="Address">
           <complexType>
               <sequence>
                    <element name="Street" type="xsd:string"/>
                    <element name="City" type="xsd:string"/>
                    <element name="District" type="xsd:string" minOccurs="0"/>
                    <element name="State" type="xsd:string"/>
                    <element name="PinCode" type="xsd:integer" minOccurs="0"/>
               </sequence>
           </complexType>
       </element>
    </schema> 
    
  • 連続したグループ要素の下にある、名前が重複した兄弟要素は変換できません。これはJSONではキーが重複したオブジェクトに変換されてしまい、こうしたオブジェクトは無効であるためです。

36.2.10 同一ノード内でRESTサービスをコールするREST参照に関する必知事項

SOAIncomingRequests_maxThreadsプロパティは、デフォルトでは、Oracle WebLogic Server管理コンソールのSOADataSourceデータ・ソースに基づいて構成されています。この設定は、負荷が高いRESTサービス(たとえば、同じノード内でREST参照がRESTサービスをコールするシナリオで200の同時ユーザーがいる場合など)では十分でない場合があります。SOAIncomingRequests_maxThreads値を400に増やして、[[LinkToOldExample - TopicID=SOASE88877 - Title=Exception Error When REST References Call REST Services ]]に示す例外エラーを防ぐ必要があります。

[[OldExample - - TopicID=SOASE88877 - Title=Exception Error When REST References Call REST Services ]]

<May 2, 2014 10:16:11 AM PDT> <Error> <oracle.soa.bpel.system> <BEA-000000>
<cube engineJTA transaction is not in active state.
The transaction became inactive when executing activity "" for instance
"30,023", bpel engine can not proceed further without an active transaction.
please debug the invoked subsystem on why the transaction is not in active
status. the transaction status is "MARKED_ROLLBACK".
The reason was The execution of this instance "30023" for process
"BuyCoffeeBPELProcess" is supposed to be in an active jta transaction, the
current transaction status is "MARKED_ROLLBACK", the underlying exception is
"Service Unavailable" .
Consult the system administrator regarding this error.
, Cikey=30023, FlowId=20014, Current Activity Key=30023-BpInv0-BpSeq0.3-3,
Current Activity Label=InvokeCreateOrder,
ComponentDN=default/CoffeeShopClient!1.0*soa_19d4a881-115b-42c5-824d-1af3fa766
62d/BuyCoffeeBPELProcess
oracle.fabric.common.FabricInvocationException: Service Unavailable
        at
. . .
. . .

36.3 HTTPアナライザによるRESTアダプタのテスト

HTTPアナライザを使用してRESTアダプタをテストできます。

HTTPアナライザを使用してRESTアダプタをテストする手順は、次のとおりです。

  1. 図36-26に示すように、Oracle Enterprise Manager Fusion Middleware ControlのSOAコンポジット・アプリケーションのホームページからWADLファイルのURLをコピーします。

    図36-26 Oracle Enterprise Manager Fusion Middleware ControlのWADLファイルのURL

    図36-26の説明が続きます
    「図36-26 Oracle Enterprise Manager Fusion Middleware ControlのWADLファイルのURL」の説明
  2. HTTPアナライザで、「URLを開く」アイコンをクリックし、Oracle Enterprise Manager Fusion Middleware ControlからコピーしたWADLのURLを入力して[Return]を押します。

    WADLファイルはPOSTメソッドに含まれています。図36-27に詳細を示します。

    図36-27 WADLファイルおよびPOSTメソッド

    図36-27の説明が続きます
    「図36-27 WADLファイルおよびPOSTメソッド」の説明
  3. 「テスト」をクリックします。
  4. サンプル・リクエストのXMLペイロードを「リクエストHTTPヘッダー」セクションにコピー・アンド・ペーストして、「リクエストの送信」をクリックします。JSONフォーマットも指定できます。図36-28に詳細を示します。

    図36-28 リクエスト・メッセージ

    図36-28の説明が続きます
    「図36-28 リクエスト・メッセージ」の説明

    処理が完了すると、レスポンス・メッセージが表示されます。この例では、注文ステータスがShippedであるメッセージが表示されます。図36-29に詳細を示します。

    図36-29 レスポンス・メッセージ

    図36-29の説明が続きます
    「図36-29 レスポンス・メッセージ」の説明

36.4 Oracle Enterprise Manager Fusion Middleware ControlでのREST参照のバインディング・コンポーネントのテストおよび構成

RESTバインディング・コンポーネントを含むSOAコンポジット・アプリケーションのインスタンスは、Oracle Enterprise Manager Fusion Middleware Controlの「テスト・インスタンス」ページから開始できます。このページでは、任意のWSDLまたはWADLをテストできます。詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』のSOAコンポジット・アプリケーションのテスト・インスタンスの起動に関する説明を参照してください。

Oracle Enterprise Manager Fusion Middleware ControlでREST参照のバインディング・コンポーネントのプロパティを構成できます。詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』のRESTアダプタのプロパティの構成に関する説明を参照してください。