Cisco ACE XML Gateway ユーザ ガイド
パスでの変数の使用
パスでの変数の使用
発行日;2012/02/01 | 英語版ドキュメント(2009/11/20 版) | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 8MB) | フィードバック

目次

パスでの変数の使用

パス変数の概要

曖昧なパス一致について

パス名の変数の設定

パスでの変数の使用

この章では、サービス起動用パスに変数を使用する方法について説明します。内容は次のとおりです。

「パス変数の概要」

「パス名の変数の設定」

パス変数の概要

ローカル サービス起動用パスは、クライアントが ACE XML Gateway でサービスを呼び出すために使用するパスです。パスに正規表現を使用することで、要求 Universal Resource Locator(URL)に柔軟性が生まれ、要求 URL の動的部分(引数など)を取り込むことができます。URL の動的部分を、受信要求パスから Gateway がバックエンド サービスを呼び出すために使用する URL に反映できます。

正規表現パスを使用するパス照合が有効である場合、要求は次のように処理されます。

1. 受信要求を受信した仮想サービスは、要求を [Consumer Interface] ページの [Exposed Local Path] フィールドに設定された 1 つ以上の正規表現と照合します。

2. ACE XML Gateway は、bash シェルがスクリプトに対して引数をパラメータ表示する方法と同じ方法で、正規表現の一致をそれぞれパラメータ表示された変数に保存します。つまり、1 番目の一致した値を \1 変数に、2 番目の値を \2 変数にという方法です。

3. ターゲット サービス記述子は、仮想サービス [Path On Server] フィールドまたはサービス記述子の [Service Interface] 設定に表示される \n 式に一致した値を代入します。

たとえば、[Path On Server] フィールドの文字列 \1 を、[Exposed Local Path] フィールドの第 1 の正規表現に一致する値で置き換えます。同様に、ハンドラ パスの第 2 の正規表現に一致する値を使用して、[Path On Server] フィールドの \2 文字列を置き換えるなどです。

4. ACE XML Gateway は結果として得られたパスを使用して、要求をバックエンド サービスに渡します。

たとえば、HyperText Transfer Protocol(HTTP; ハイパーテキスト転送プロトコル)GET サービス ハンドラに次の Exposed Local Path を使用することで、サービス定義がバックスラッシュ置換を行うとします。

/catalog/(.*)/public/(.*)

要求パスの URL の第 2 および第 4 段階には、正規表現照合を使用します。

サービス記述子について、[Path on Server] フィールドが次のとおりであるとします。

/catalog?pid=\2&class=\1

要求パスの URL の第 4 段階と第 2 段階の値は、それぞれ、バックエンド サービスへ発行された要求の URL 引数の値を形成します。

たとえば、http://xmlgateway.example.com:80/catalog/telescope/public/232 である Gateway への要求は、

サービス定義に一致し、Gateway は次のリソースへのバックエンド サービス要求を生成します。

http://service.example.com:80/catalog?pid=232&class=telescope

イベント ログは、一致置換に次のような内容を記述します。

Backslash replacement '/catalog?pid=\2&class=\1' resulted in '/catalog?pid=232&class=telescope'

例にあるように、値が並び替えられることがあることに注意してください。また、一致した正規表現は、[Path On Server] フィールドのパラメータ表記された変数の出現それぞれに代入されます。

曖昧なパス一致について

要求の照合に曖昧性が生じるため、ACE XML Manager は、2 つ以上のユーザ インターフェイスに同じパスを設定することを防止します。しかし、パス変数を使用すると、受信要求を複数のパスに一致させることが可能です。

たとえば、2 つのハンドラがあるとし、一方の公開するローカルパスが /menu/d(.*)i であり、他方が /menu/de(.*) であるとします。ACE XML Manager では、このようなポリシーのコンパイルと導入が認められます。しかし、実行時に /menu/deli の受信要求は、両方のハンドラに一致します。

一般に、正規表現を使うときは、パス照合に曖昧性が生じる可能性を避けるよう注意しなければなりません。実行時に曖昧性が発生した場合は、エラーは発生しません。つまり、ACE XML Gateway は、ハンドラのうちの 1 つを要求に割り当てます。一般に ACE XML Gateway は、予測可能な曖昧性解析を保証できません。そのため、パスの 1 つが選択されます。しかし、1 つのパスが正規表現を使用し、もう 1 つのパスが正規表現を使用しないときに 2 つのパスの間に曖昧性がある場合、正規表現のあるパスの一致が優先されます。

パス名の変数の設定

受信要求から発信要求にパス変数を伝えるには、要求を処理するハンドラおよびサービス記述子の両方を次のように設定する必要があります。


ステップ 1 Web コンソールに Administrator ユーザ、または、 Routing または Access Control ロールを持つ Privileged ユーザとしてログインします。

ステップ 2 アクティブ サブポリシーをアップデートするサービス記述子を提供するサブポリシーに設定します。

ポリシーの名前が、コンソールの上部の [subpolicy] ラベルの横に表示されます。Shared サブポリシーのオブジェクトは、すべてのサブポリシー内でアクセスできることに注意してください。

詳細については、「サブポリシーの使用」を参照してください。

ステップ 3 操作メニューで [Virtual Services] ブラウザ アイテムをクリックします。

ステップ 4 [Virtual Services] ブラウザで、パス名変数を設定する仮想サービス オブジェクトまたはハンドラの名前をクリックします。

ステップ 5 [Consumer Interface] という見出しの [Edit] リンクをクリックします。

ステップ 6 [Exposed Local Path] フィールドに、受け入れる値に一致する正規表現を追加します。式は丸カッコに入れる必要があります。次に例を示します。

/order/(.*)/submit

ステップ 7 [Allow regular expression matching in the local path] というラベルのオプションを選択すると、ACE XML Gateway は、受信要求パスに対して [Exposed Local Path] フィールドの正規表現を評価します。

ステップ 8 [Save Changes] をクリックし、次に、コンソール操作メニューで [Virtual Services] ブラウザをクリックします。

ステップ 9 ルートごとにハンドラが添付されているサービス記述子の名前をクリックします。

ステップ 10 [Service Interface] 設定の [Edit] リンクをクリックします。

ステップ 11 [Service Interface] 設定ページで、[Path on Server] フィールドにバック リファレンス ID を入力します。次に例を示します。

/order/\1/submit

ステップ 12 [Replace back-references (\1, \2, etc.) using regular expression matches from the handler path] というラベルのオプションを選択し、バックリファレンス置換機能を有効にします。

ステップ 13 [Save Changes] をクリックして、変更内容を作業ポリシーにコミットします。


 

ポリシーを導入した後、ACE XML Gateway は、正規表現変数に基づく受信要求を照合します。