レスポンダー応答条件は、メッセージ レスポンダーがどのメッセージを受け入れて処理するかを決定します。仮想アセット URL に送信されるさまざまなメッセージは、ここでの設定に基づいて特定のメッセージ レスポンダー ツール (それぞれ異なる操作に対応する) に振り分けられます。たとえば、1 つのメッセージ レスポンダー ツールは顧客登録メッセージに応答し、別のメッセージ レスポンダーは支払メッセージに応答し、さらに別のレスポンダーは、他のレスポンダーに一致しない場合に使用されるデフォルトの「キャッチ オール」として機能する場合があるでしょう。
応答条件の構成
CTP でレスポンダー応答条件を構成するには、次の操作を行います。
- 左側のペインで、応答条件を設定するレスポンダーを選択します。
- 応答条件エリアのコントロールを使用して、適用する応答条件を指定します。1 つのタイプの応答条件を設定することも、複数のタイプの応答条件を設定することも、応答条件を設定しないこともできます。応答条件が設定されていない場合、メッセージのすべてが処理されます。以下は応答条件タイプの説明です。
トランスポート応答条件
トランスポート応答条件を使用すると、このレスポンダーでメッセージを処理するかどうかを決定する HTTP ヘッダー、JMS メッセージ プロパティ、MQ メッセージ フィールドを指定できます。
トランスポート応答条件を設定するには、次の操作を行います。
- [トランスポート ヘッダー] チェックボックスをオンにします。
- [追加] ボタンをクリックします。新しいエントリ行が表示されます。
- 指定するトランスポート応答条件の [名前] および [値] に入力します。(設定された値にかかわらず) このヘッダー名を含むすべてのメッセージを処理するには、[*] を指定します。
リクエスト ボディ応答条件
リクエスト ボディ応答条件を使用すると、メッセージを処理するかどうかを判断する XPath を指定できます。
リクエスト ボディ応答条件を設定するには、次の操作を行います。
- [リクエスト ボディ] チェックボックスをオンにします。
- [追加] ボタンをクリックします。新しいエントリ行が表示され、XPath ビルダーが開きます。
- 条件とするリクエスト ボディを指す XPath 式を指定します。XPath 式は、XPath ビルダー (「XPath の指定」を参照) を使用して指定するか、W3C の XPath 1.0 標準を使用して [XPath] テキスト フィールドに直接入力できます。
- ステップ 2 および 3 を繰り返し、条件とするすべての XPath を指定します。
URL パス応答条件
URL パス応答条件を使用すると、メッセージを処理するかどうかを判断する URL パスを指定できます。URL パス応答条件は、HTTP/HTTPS を使用してアクセスされる仮想アセットに適用されます。
URL パス応答条件を設定するには、次の操作を行います。
- [URL パス] チェックボックスをオンにします。
- 応答条件として使用するパスを指定します。
たとえば、仮想アセットが http://myvirtserver:9080/MyAsset/MyPath
というパスにデプロイされ、 /segment1/segment2/**
というパスがレスポンダー応答条件で指定されていると仮定します。
以下の URL はこの応答条件に一致します。
- http://myvirtserver:9080/MyAsset/MyPath/segment1/segment2
- http://myvirtserver:9080/MyAsset/MyPath/segment1/segment2/
- http://myvirtserver:9080/MyAsset/MyPath/segment1/segment2/segment3?param1=value1¶m2=value2
以下の URL はこの応答条件に一致しません。
- http://myvirtserver:9080/MyAsset/MyPath/segment1/
- http://myvirtserver:9080/MyAsset/MyPath/segment3/segment1/segment2
* がゼロ個以上のm時に一致し、** がゼロ個以上のディレクトリに一致する Ant スタイルのワイルドカードを使用できます。次のようにワイルドカードを使用します。
- /**/Abcは /abc または/this/that/abcに一致します。
- /Abc/** は /abc または /abc/this/that/theotherに一致します。
- /Ab** は /abc/d には一致しません (/ab*と単一のアスタリスクを使用した場合と同じように解釈されます) が、 /absolutely に一致します。
- /**bcは /0/abc には一致しません (/*bc と単一のアスタリスクを使用した場合と同じように解釈されます) が、/abc に一致します。
例 1: **/service/*
一致 | 一致しません |
---|---|
service/Repository | org/web/service/foo/bar/Entries |
例 2:org/parasoft/virtualize/**
一致 | 一致しません |
---|---|
org/parasoft/virtualize/tools/service org/parasoft/virtualize/stuff | org/parasoft/somethingelse |
例 3:org/parasoft/**/EM/*
一致 | 一致しません |
---|---|
org/parasoft/EM/Entries | org/parasoft/EM/foo/bar/Entries |
URL パラメーター応答条件
URL パラメーター応答条件を使用すると、メッセージを処理するかどうかを判断する URL パラメーターを指定できます。URL パラメーターは、繰り返し指定できます (同じパラメーターに異なる値を指定できます)。指定されたパラメーターに加え、その他のパラメーターを含むリクエストも一致します。指定されたパラメーターのいずれかを含まないメッセージは一致しません。URL パラメーター応答条件は、HTTP/HTTPS を使用してアクセスされる仮想アセットに適用されます。
URL パラメーター応答条件を設定するには、次の操作を行います。
- [URL パラメーター] チェックボックスをオンにします。
- [追加] ボタンをクリックします。新しいエントリ行が表示されます。
- レスポンスの応答条件とするパラメーターの名前と値を入力します。(設定された値にかかわらず) このパラメーター名を含むすべてのメッセージを処理するには、[*] を指定します。
- ステップ 2 および 3 を繰り返し、条件とするすべてのパラメーター値を指定します。
たとえば、仮想アセットが http://myvirtserver:9080/MyAsset/MyPath
というパスにデプロイされ、 次の URL パラメーターがレスポンダーに指定されていると仮定します。
パラメーター名 | 値 |
---|---|
param1 | value1 |
param2 | value2 |
以下の URL はこの応答条件に一致します。
- http://myvirtserver:9080/MyAsset/MyPath?param1=value1&m2=value2
- http://myvirtserver:9080/MyAsset/MyPath?param1=value1&m2=value2&m3=value3
- http://myvirtserver:9080/MyAsset/MyPath?param2=value2&m1=value1&m3=value3
以下の URL はこのレスポンダーに該当しません。
- http://myvirtserver:9080/MyAsset/MyPath?param1=value1&m2=someothervalue&m3=value3
- http://myvirtserver:9080/MyAsset/MyPath?param1=value1&m3=value3
HTTP メソッド応答条件
HTTP メソッド応答条件を使用すると、メッセージを処理するかどうかを判断する HTTP メソッドを指定できます。HTTP パス応答条件は、HTTP/HTTPS を使用してアクセスされる仮想アセットに適用されます。
HTTP メソッド応答条件を設定するには、次の操作を行います。
- [HTTP メソッド] チェックボックスをオンにします。
- 応答条件として使用する HTTP メソッドを指定します。
たとえば、GET、POST、および PUT オプションをオンにすると、レスポンダーはメソッドが GET、POST、または PUT の HTTP リクエストに応答します。メソッドが CONNECT、DELETE、HEAD などの HTTP リクエストには応答しません。
データ ソース応答条件
上記のレスポンダー応答条件の処理の後、受信メッセージの値が (リテラルにまたは式を使用して) データ ソースの値と比較され、レスポンダーは一致するデータ行を使用してレスポンス メッセージを作成します。指定された受信メッセージ値と一致するデータ ソース行が見つからなかった場合、Virtualize は (デフォルトのフェイルオーバー設定を使用して) 検索を続行し、レスポンダー スイート内でレスポンダー応答条件が一致するレスポンダーを見つけようとします。
たとえば、下の図では、受信メッセージの loanAmount 値と ApprovalLists データ ソースの Amount 列の間に応答条件が設定されています。
受信リクエストごとに loanAmount 値と Amount 列の行が一致します。同じ行の他の列の値を使用してレスポンスがパラメータライズされます。
応答条件を設定する際、データ ソース列名を入力するか、ツールに関連付けられたデータ ソース (設定エリア上部の [データ ソース] 列で選択されている) の利用可能な行をリストから選択できることに注意してください。
次の図は、データ ソースの選択を示しています。
次の図は、データ ソースで利用可能な列を示しています。
フェイルオーバー オプション
データ ソース応答条件が有効な場合、Virtualize はデータ ソース応答条件エリアで指定された条件を使用して受信メッセージの値とデータ ソースの値を比較します。受信メッセージの値に一致するデータ ソース行がない場合、データ ソース応答条件の失敗とみなされます。
[データ ソース応答条件に一致しない場合は、一致するレスポンダーを継続して検索します] オプションがオンの場合 (デフォルトではオン)、レスポンダーのデータ ソース応答条件が失敗すると、レスポンダー スイート内で一致するレスポンダー応答条件の検索が続けられます。以下の場合にだけエラーがレポートされます。
- レスポンダー応答条件を満たすレスポンダーがない
- レスポンダー スイート内の別のレスポンダーがレスポンダー応答条件に一致するが、データ ソース応答条件が失敗し、レスポンダーのデータ ソース応答条件のフェイルオーバー オプションが無効に設定されている
[データ ソース応答条件に一致しない場合は、一致するレスポンダーを継続して検索します] オプションがオフの場合、レスポンダーのデータ ソース応答条件が失敗すると、ただちにエラーがレポートされ、一致レスポンダーの検索は中止されます。
リクエスト ボディ
このエリアでは、1 つまたはそれ以上の値を抽出するために受信メッセージに対して実行する 1 つまたはそれ以上の XPath を指定します。抽出された値は、対応するデータ ソース列の値と比較されます。
XPath フィールドに直接 XPath を入力するか、XPath ビルダーを使用して XPath を追加できます。XPath ビルダーについては「XPath の指定」で説明されています。
URL パラメーター
このエリアは、HTTP/HTTPS を使用してアクセスされるアセットに適用されます。リクエスト URL 内で検索する 1 つまたはそれ以上の URL パラメーターを指定します。パラメーター値は、対応するデータ ソース列の値と比較されます。
複数の列が応答条件に使用されている場合、各列の値はすべてデコードされているか、すべてエンコードされているかのどちらかでなければなりません。すべての値がエンコードされている場合、空白を表すためにプラス記号を使用する方法か、“%20”を使用する方法か、どちらか一方でエンコードされていなければなりません。両方を混在させることはできません。
存在しない/空のフィールドおよびパラメーターとの一致
データ ソース応答条件は、リクエストにフィールドが存在しないことを条件とすることもできます。詳細については、『Virtualize ユーザーズ ガイド』を参照してください。
URL パス
このエリアは、HTTP/HTTPS を使用してアクセスされるアセットに適用されます。パス セグメント インデックスに基づいてデータ ソース値をマッピングできます。
たとえば、以下の状況があるとします。
- アセットが
http://myvirtserver:9080/MyAsset/MyPath というパスにデプロイされている
- 受信リクエストに
http://myvirtserver:9080/MyAsset/MyPath/[somedynamicvalue]/B/C というパターンがある
[somedynamicvalue]
セグメントの値を取得し、データ ソース列の値を比較するには、URL パス インデックスに 2 を指定します。インデックスの値はアセット デプロイメント パスのセグメントを含めてゼロからカウントします。
http://myvirtserver:9080/MyAsset/MyPath/A/[somedynamicvalue]/C
という URL の動的値を比較するには、パス インデックス値として3 を使用します。
複数の列が応答条件に使用されている場合、各列の値はすべてデコードされているか、すべてエンコードされているかのどちらかでなければなりません。すべての値がエンコードされている場合、空白を表すためにプラス記号を使用する方法か、“%20”を使用する方法か、どちらか一方でエンコードされていなければなりません。両方を混在させることはできません。