![]() ![]() ![]() ![]() |
Oracle Service Bus テスト コンソールは、システムの設計の検証およびテストに使用するブラウザベースのテスト環境です。これは、Oracle Service Bus Console の拡張機能です。(テスト コンソールは Workshop for WebLogic で使用できます。)コンソールで、テストするオブジェクト (プロキシ サービス、ビジネス サービス、XQuery、XSLT、または MFL リソース) のコンフィグレーション、テストの実行、および結果の表示を行うことができます。場合によっては、コードをトレースし、特定のトレース ポイントのメッセージの状態を調べることができます。設計時テストを行うことで、コンフィグレーションをプロダクション環境にデプロイする前に設計上の問題を割り出すことができます。
テスト コンソールでは、システムの特定部分を切り分けてテストしたり、システムを 1 つの単位としてテストしたりできます。クラスタ環境でテストすることもできます。ただし、クラスタ ドメインでは、コンフィグレーションされたビジネス サービス、またはビジネス サービスにルーティングされるプロキシ サービスのテストにはテスト コンソールを使用することはできません。
手順の詳細については、『Oracle Service Bus Console の使い方』の「テスト コンソール」および『Workshop for WebLogic 用 Oracle Service Bus プラグインの使用』の「Oracle Service Bus デバッガの使用」を参照してください。
テスト コンソールを使用するための前提条件は、以下のとおりです。
注意 : | SAML リライイング パーティ作成時には、以下に留意してください。 |
警告 : | 直接呼び出しオプションを有効にしてプロキシ サービスのテストを行うと、アクセス制御を含むいくつかの重要なセキュリティ手順が回避されます。Oracle は、プロダクション システムでテスト サービスを使用しないことをお勧めします。 |
直接呼び出しは、同じ Oracle Service Bus ドメイン内にあるプロキシ サービスをテストするときに使用します。直接呼び出しオプションを使用すると、メッセージは転送レイヤを経由せずにプロキシ サービスに直接送信されます。直接呼び出しオプションを使用した場合、デフォルトでトレースが有効になり、テスト コンソールでメッセージ フローの診断とトラブルシューティングが可能になります。デフォルトでは、プロキシ サービスのテストは直接呼び出しオプションを使用して実行されます。
直接呼び出しオプションを使用してプロキシ サービスをテストする場合、テスト コンソールに入力するコンフィグレーション データは、プロキシ サービスを呼び出すクライアントから渡されるものとしてプロキシ サービスで想定されているデータである必要があります。つまり、テスト コンソールは、プロキシ サービスを呼び出すクライアントの役割を果たします。また、直接呼び出しによるテストを実行するときには、メッセージのモニタ フレームワークは経由しません。
図 6-1 は、直接呼び出しを示しています。メッセージは転送レイヤを経由せず、プロキシ サービス (P1) に直接配信されます。
直接呼び出しの方法は、プロキシ サービスの内部メッセージ フロー ロジックをテストする場合に最も適しています。テスト データでは、ディスパッチされた時点でのメッセージの予想される状態をシミュレートする必要があります。このテスト アプローチと、テスト コンソールの [転送] パネルにあるカスタム (着信) 転送ヘッダの設定を使用して、サービス呼び出しを正確にシミュレートします。
間接呼び出しを使用してプロキシ サービスをテストする場合 (つまり、直接呼び出しオプションを選択していない場合)、メッセージは転送レイヤ経由でプロキシ サービスに送信されます。転送レイヤでは、テストの一環としてメッセージ ヘッダまたはメタデータの操作を実行します。これにより、プロキシ サービス間の実行時パスが呼び出されます。
図 6-2 は、間接呼び出しを示しています。メッセージはまず転送レイヤによって処理され、その後でプロキシ サービス (P1) に配信されます。
このテスト方法は、2 つのプロキシ サービスが同じ JVM で実行されているときに、プロキシ サービス間のインタフェースをテストする場合に使用することをお勧めします。このテスト アプローチと、テスト コンソールの [転送] パネルにあるカスタム (発信) 転送ヘッダの設定を使用して、サービス呼び出しを正確にシミュレートします。転送設定の詳細については、「テスト コンソールの転送設定」を参照してください。
間接呼び出しを使用する場合、テストに入力するコンフィグレーション データは、プロキシ サービス (たとえば、別のプロキシ サービスのルート ノードやサービス コールアウト アクション) から送信されるデータです。間接呼び出しのシナリオでは、テスト コンソールは、別のサービスへのルーティングまたはコールアウトを行うプロキシ サービスの役割を果たします。
注意 : | 要求/応答 MQ プロキシ サービスに対して間接呼び出しを使用しても機能しません。 |
注意 : | また、messageID に基づく相関を使用した MQ または JMS 要求/応答プロキシ サービスの間接呼び出しからの応答は、テスト コンソールには表示されません。間接呼び出しを使用して MQ または JMS 要求/応答プロキシ サービスをテストした場合、応答は応答キューに保持されますが、テスト コンソールには表示されません。 |
注意 : | 詳細については、『MQ 転送ユーザーズ ガイド』を参照してください。 |
プロキシ サービスをテストするときに、テスト コンソールではネットワーク経由で HTTP 要求を送信しないため、転送レベルのアクセス制御は適用されません。転送レベルのアクセス制御は、Web アプリケーション レイヤで行われます。したがって、Oracle Service Bus Console の転送レイヤ経由で間接呼び出しが行われても、HTTP 要求はネットワーク経由で送信されず、転送レベルのアクセス制御は適用されません。転送レイヤでのメッセージ処理については、『Oracle Service Bus の概念とアーキテクチャ』の「アーキテクチャの概要」を参照してください。
転送設定については、『Oracle Service Bus Console の使い方』の「テストコンソールでのランタイムによる転送設定の使用方法」を参照してください。
ビジネス サービスをテストする場合、メッセージは必ず転送レイヤを経由してルーティングされます。直接呼び出しオプションは使用できません。サービスをテストする際にテスト コンソールに指定するコンフィグレーション データは、プロキシ サービスのルート ノードやサービス コールアウト アクションなどから、そのビジネス サービスに送信されることが予想されるメッセージの状態を表すデータです。テスト コンソールを使用してビジネス サービスをテストする場合、テスト コンソールは呼び出し側のプロキシ サービスの役割を果たします。
ヒント : | テスト中のビジネス サービスがリモート ドメインにある場合でも、テスト コンソールで指定されたユーザ名およびパスワードが、ローカル Oracle Service Bus ドメインに存在することを確認します。テスト サービスは、プロキシ サービスまたはビジネス サービスを呼び出す前に、ローカル認証を実行します。 |
図 6-3 に示すシナリオでは、クライアントがプロキシ サービス (P1) を呼び出します。メッセージ フローは、ビジネス サービス B1、プロキシサービス P2、プロキシ サービス P3 の順に呼び出してから、メッセージをクライアントに返します。インタフェースを番号で示しています。
このシナリオには、有効なテスト方法がいくつもあります。以下のテスト方法をお勧めします。
プロキシ サービスのメッセージのトレースでは、メッセージ フローの複数のポイントでメッセージ コンテキストと発信通信が検証されます。メッセージを検査するポイントは Oracle Service Bus であらかじめ定義されています。Oracle Service Bus では、ステージ、エラー ハンドラ、およびルート ノードのトレースが定義されています。
トレースのステージごとに、メッセージ コンテキストに発生した変更と、そのステージの実行中に呼び出されたすべてのサービスが含まれます。トレースには以下の情報が含まれます。
outbound
、header
、body
、および attachment
の各変数の値が含まれます。outbound
変数の値、要求メッセージと応答メッセージの header
、body
、および attachment
の各変数の値が含まれます。
ルート ノードについても、ステージと同様の情報が含まれます。ルート ノードの場合、トレースには以下のカテゴリの情報が含まれます。
次のサンプル シナリオでは、手順のベースとして Oracle Service Bus サンプル ドメインのプロキシ サービスの 1 つ (融資申し込みの検証サンプルに関連付けられている loanGateway3
プロキシ サービス) を使用しています。サンプル ドメインを起動し、サンプルを実行する方法の詳細については、「Oracle Service Bus のサンプル」を参照してください。
図 6-4 は、loanGateway3
のメッセージ フローを示しています。この図では、融資申し込みの検証ステージとルート ノードのコンフィグレーションにアノテーションを付けています。
テスト コンソールを使用して、この Oracle Service Bus サンプル ドメインのプロキシ サービスをテストするには、以下の手順を実行します。
LoanGateway3
プロキシ サービスを検索します。loanGateway3
プロキシ サービスの [テスト コンソールの起動] アイコン プロキシ サービス テスト - LoanGateway3
] ページが表示されます。
[直接呼び出し] と [トレースを含む] オプションが選択されていることを確認します。 <loanRequest xmlns:java="java:normal.client">
<java:Name>Name_4</java:Name>
<java:SSN>SSN_11</java:SSN>
<java:Rate>4.9</java:Rate>
<java:Amount>2500</java:Amount>
<java:NumOfYear>20.5</java:NumOfYear>
<java:Notes>Name_4</java:Notes>
</loanRequest>
結果ページの下部までスクロールして、図 6-5 に示す [呼び出しのトレース] パネルのトレース結果を表示します。
トレースの結果を図 6-4 に示すメッセージ フローのノードと比較します。
validate
loan
application
ステージでメッセージが処理された結果、$header
$body
と $inbound
が変更されました。これらの変更は、メッセージ フローの最後に表示されます。fault
コンテキスト変数 ($fault
) のコンテンツが表示されます。この場合、コード リスト 6-1 の <java:NumOfYear> 要素に integer 型以外の値 (20.5) を入力したことが原因で検証エラーが発生しました。
別の入力パラメータを使用するか、Oracle Service Bus Console でメッセージ フローを変更することで、プロキシ サービスをテストできます。次に、再度テストを実行し、結果を表示します。
この融資申し込みシナリオの詳細については、Oracle Service Bus チュートリアルの「チュートリアル 3. 融資申し込みの検証」を参照してください。
MFL (メッセージ フォーマット言語) ドキュメントは、バイナリ データのレイアウトの記述に使用する特殊な XML ドキュメントです。MFL リソースは、以下のトランスフォーメーションをサポートしています。
各トランスフォーメーションでは、入力を 1 つだけ受け入れ、出力を 1 つ返します。
次の例は、MFL トランスフォーメーションのテストを示しています。テスト コンソールにより、MFL ファイルから XML ドキュメントのサンプルが生成されます。XML 入力を使用してテストを実行します。テストが成功すると、入力 XML ドキュメントのメッセージ コンテンツがバイナリ形式に変換されます。
MFL ファイルの例をコード リスト 6-2 に示します。
<?xml version='1.0' encoding='windows-1252'?>
<!DOCTYPE MessageFormat SYSTEM 'mfl.dtd'>
<MessageFormat name='StockPrices' version='2.01'>
<StructFormat name='PriceQuote' repeat='*'>
<FieldFormat name='StockSymbol' type='String' delim=':' codepage='windows-1252'/>
<FieldFormat name='StockPrice' type='String' delim='|'codepage='windows-1252'/>
</StructFormat>
</MessageFormat>
コード リスト 6-2 の MFL ファイルをテストするためにテスト コンソールで生成される XML ドキュメントをコード リスト 6-3 に示します。
<StockPrices>
<PriceQuote>
<StockSymbol>StockSymbol_31</StockSymbol>
<StockPrice>StockPrice_17</StockPrice>
</PriceQuote>
</StockPrices>
テスト コンソールで、[実行] をクリックしてテストを実行します。コード リスト 6-4 は、生成されたテスト データを示しています。この結果では、stock symbol と stock price がバイナリ形式で示されています。
00000000:53 74 6F 63 6B 53 79 6D 62 6F 6C 5F 33 31 3A 53 StockSymbol_31:S
00000010:74 6F 63 6B 50 72 69 63 65 5F 31 37 7C .. .. .. StockPrice_17|...
Oracle Service Bus では、Extensible Stylesheet Language Transformation (XSLT) を使用して XML 間のマッピングを記述します。XSL トランスフォーメーションは、プロキシ サービスのメッセージ フローで XQuery 式を編集するときに使用できます。
XSLT リソースをテストするには、入力 XML ドキュメントを指定する必要があります。テスト コンソールは、出力 XML ドキュメントを返します。ドキュメントに、トランスフォーメーションで使用するパラメータを作成できます。XSLT パラメータは、値としてプリミティブ型または XML ドキュメントをとります。XSL トランスフォーメーションからパラメータの型を識別することはできません。テスト コンソールの [XSLT リソース テスト] ページの [入力およびパラメータ] パネルで、ドキュメントに定義された XSLT パラメータにバインドする値を指定する必要があります。
詳細については、『Oracle Service Bus Console の使い方』の「XSLT トランスフォーメーションのテスト」を参照してください。
XQuery は、データが XML に物理的に格納されるか、XML として表示されるかに関係なく、XML の構造を使用して、さまざまな種類のデータに対するクエリを表現します。
XQuery トランスフォーメーションは複数の入力をとる場合があります。返される出力は 1 つです。XQuery トランスフォーメーションに想定される入力は、定義済みの各 XQuery 外部変数にバインドする変数値です。XQuery 入力変数の値には、プリミティブ型の値 (string 型、integer 型、date 型)、XML ドキュメント、またはこれらの型のシーケンスを指定できます。出力値は、プリミティブ型の値 (string 型、integer 型、date 型)、XML ドキュメント、またはこれらの型のシーケンスになります。
XQuery は型付きの言語で、外部変数ごとに型が決まっています。型は以下のグループに分類できます。
想定される型が単純型である場合は、テスト コンソールに 1 行の編集ボックスが表示されます。想定されるデータが XML である場合は、複数行の編集ボックスが表示されます。変数に型がない場合は、両方の組み合わせの入力が使用されます。テスト コンソールに [[] XML として
] フィールドが表示され、ここで変数の型を宣言できます。テスト コンソールの入力は、入力する必要のあるデータの型がわかりやすいように、型に基づいて表示されます。
図 6-6 は、int、XML、および未定義の型の 3 つの変数を含む XQuery を示しています。
テスト コンソールでは、3 つの変数がすべて [変数] パネルに表示されます。型なし変数には、デフォルトで XML が選択されます。これが最も一般的なケースであるためです。[変数] パネルでこれらの変数をコンフィグレーションする必要があります。『Oracle Service Bus Console の使い方』の「XQuery トランスフォーメーションのテスト」を参照してください。
XQuery エディタから XQuery 式をテストすることもできます。
XQuery テストが機能するように、ブラウザのポップアップ ブロッカーを無効にする必要があります。Internet Explorer ブラウザでツールバーを使用している場合、ブラウザのオプション メニューでポップアップ ブロッカーを無効にするだけでなく、ポップアップをブロックするようにコンフィグレーションされているすべてのツールバーでこの機能を無効にする必要があります。
テスト コンソールで XQuery テストを実行する場合、新しいテストを実行するには [戻る] ボタンを使用します。ただし、XQuery を変更した後に新しいテストを実行する場合、変更を有効にするには、テスト コンソールを閉じて再度開く必要があります。詳細については、『Oracle Service Bus Console の使い方』の「XQuery テストの実行」を参照してください。
テスト コンソールは、Web サービス セキュリティ (WSS) で保護されたプロキシ サービスとビジネス サービスのテストをサポートします。WS-Security アサーションを含む WS-Policy が割り当てられた SOAP サービスは、WSS で保護されます。具体的には、サービス操作の有効な要求 WS-Policy または応答 WS-Policy に WS-Security アサーションが含まれている場合、そのサービス操作は WS-Security で保護されます。WS-Policiy は、WS-PolicyAttachment によってサービスに割り当てられます。詳細については、『Oracle Service Bus セキュリティ ガイド』の「Web サービスポリシーを使用した着信メッセージレベルのセキュリティの指定」にある「WSDL ドキュメントへの WS-Policy ステートメントの付加」を参照してください。操作に要求ポリシーと応答ポリシーの両方を含めることもできます。
操作に要求 WS-Policy または応答 WS-Policy が含まれている場合、テスト コンソールとサービス間のメッセージ交換は、WS-Security のメカニズムによって保護されます。テスト サービスは、操作のポリシーに従ってメッセージ (正確にはメッセージの一部) をデジタル署名または暗号化し、適用されるすべてのセキュリティ トークンを含めます。デジタル署名と暗号化の操作の入力がクリアテキストの SOAP エンベロープであることを指定します。詳細については、『Oracle Service Bus Console の使い方』の「テスト コンソール」にある「プロキシ サービスのテスト データのコンフィグレーション」および「ビジネス サービスのテスト データのコンフィグレーション」を参照してください。
同様に、サービスは、操作の応答ポリシーに従って応答を処理します。応答は、暗号化またはデジタル署名される場合があります。この場合、テスト サービスはこの応答を処理し、メッセージの復号化またはデジタル署名の検証を行います。
テスト コンソール ([セキュリティ] パネル) には、WS-Security を含むサービスのテストに使用する [サービス プロバイダ]、[ユーザ名]、および [パスワード] の各フィールドが表示されます。
テスト コンソールでサービス キー プロバイダを指定すると、WS-Security で要求されるクライアントサイドのすべての PKI キーペア資格がサービス キー プロバイダから取得されます。操作の要求ポリシーで ID アサーションが指定されており、サポートされるトークン タイプの 1 つがユーザ名トークンである場合は、[ユーザ名] フィールドと [パスワード] フィールドを使用します。詳細については、「Web サービス ポリシー」を参照してください。
[サービス プロバイダ]、[ユーザ名]、および [パスワード] の各フィールドは、操作に要求ポリシーまたは応答ポリシーが含まれている場合に必ず表示されます。値が必須かどうかは、実際の要求ポリシーと応答ポリシーによって決まります。
表 6-1 と表 6-2 にセキュリティ シナリオを示します。
|
SAML ポリシーを持つプロキシ サービスと SAML holder-of-key ポリシーを持つビジネス サービスのテストには、以下の制限があります。
注意 : | テスト コンソールでテストを実行した後、WSS で生成されたエンベロープが必ずしも有効なエンベロープというわけではありません。テスト コンソールの結果ページには、読みやすくするためにホワイト スペースが挿入されています。つまり、保護された SOAP メッセージは、ホワイト スペースが追加された状態で表示されます。ホワイト スペースはドキュメントのセマンティクスに影響する可能性があるため、このような SOAP メッセージはリテラル データとして必ずしも使用できるわけではありません。たとえば、デジタル署名はホワイト スペースの影響を受け、無効になることがあります。 |
テスト コンソールの [転送] パネルでは、テスト システムのメッセージのメタデータと転送ヘッダを指定できます。
図 6-8 は、WSDL ベースのプロキシ サービスの [転送] パネルを示しています。
プロキシ サービスのメッセージ フローのメタデータと転送ヘッダを設定すると、発信転送のアクションに影響します。メタデータ、メッセージ、およびヘッダをテストして、パイプライン出力を表示できます。プロキシ サービスのテスト時に [転送] パネルに表示されるフィールドは、パイプラインで使用できるヘッダとメタデータを表します。プロキシ サービスによっては、テスト コンソールに表示されるフィールドをフィルタ処理できない場合もあります。HTTP ベースのすべての要求に対して、転送パラメータの同じセットが表示されます。
[ユーザ名] と [パスワード] フィールドは、プロキシ サービスを実行しているユーザの基本認証を実装するために使用されます。[ユーザ名] と [パスワード] フィールドは、特に転送との関連はありません。
メタデータ フィールドは、[ユーザ名] フィールドおよび [パスワード] フィールドと、転送ヘッダ フィールドの間に配置されています。表示されるフィールドは、サービスの転送タイプに基づいています。サービスを定義したときに選択した操作選択アルゴリズムに応じて、あらかじめ入力されているフィールドもあります。
たとえば、図 6-8 に示す [転送] パネルでは、SOAPAction
ヘッダ フィールドに「http://example.orgprocessLoanApp
」が入力されます。これは、サービス定義から取得した値です (このプロキシ サービスに指定されている選択アルゴリズムは SOAPAction Header
です)。選択アルゴリズムの詳細については、「Oracle Service Bus でのメッセージ フローの作成」を参照してください。
転送レイヤ経由でメッセージを処理するかどうか (たとえば、直接呼び出しと間接呼び出しのどちらを使用してサービスをテストするか) に基づいて、[転送] パネルの各フィールドの値を指定します。
プロキシ サービスを直接呼び出しでテストする場合、テスト データは、転送レイヤを経由してメッセージが処理された場合のメッセージを表す必要があります。つまり、テスト データは、メッセージが転送レイヤを放れてサービスに到達した時点で想定される状態のメッセージを表す必要があります。間接呼び出しを使用してプロキシ サービスまたはビジネス サービスをテストする場合、テスト データは、ルート ノードまたはサービス コールアウトから送信されるデータを表します。テスト メッセージは、転送レイヤ経由で処理されます。
特定のヘッダおよびメタデータの詳細と、テスト フレームワークでそれらが処理されるしくみについては、『Oracle Service Bus Console の使い方』の「テスト コンソールでのランタイムによる転送設定の使用方法」を参照してください。
![]() ![]() ![]() |