|
Oracle Service Bus プロキシ サービスをコンフィグレーションして、クライアントとビジネス サービス間で渡されるメッセージを検証できます。検証アクションは、メッセージ処理パイプラインの任意のステージでコンフィグレーションできます。ただし、これらのアクションは、エラー メッセージを排除するために、通常は初期ステージでコンフィグレーションします。XQuery 条件式を使用すると、メッセージ処理中に明示的な検証を実行できます。
以下の方法でメッセージ検証ロジックをコンフィグレーションできます。
このチュートリアルを開始する前に、「チュートリアル 1. 融資申し込みのルーティング」と「チュートリアル 2. 融資申し込みの変換」を完了する必要があります。
このチュートリアルの目的は、Oracle Service Bus Console を使用して、メッセージの検証とエラー処理を実装する Oracle Service Bus リソースをコンフィグレーションするためのタスクを提供することです。このチュートリアルでは、次のことを行います。
このチュートリアルを通じて、Oracle Service Bus の次の機能について学習できます。
主要な金融会社が、Oracle Service Bus のプロキシ サービスを使用して融資申し込みをルーティングし、メッセージを検証します。融資申し込みは、次のように処理されます。
図 5-1 は、このシナリオについて説明するための論理アーキテクチャをまとめたもので、Oracle Service Bus をエンタープライズ システム環境に配置してクライアントとビジネス サービス間のメッセージングを中継するしくみを示します。

このシナリオでは、WSDL リソースのスキーマ定義に基づいてメッセージ フローの着信メッセージを検証するように、Oracle Service Bus をコンフィグレーションできます。各フィールドのコンテンツが有効かどうかチェックされます。申し込みが有効となるには、すべての要素にコンテンツが入力されている必要があります。融資期間のフィールドの値が整数でないと、検証アクションでエラーが発生します。コンテキスト変数 $fault にはエラーの詳細が格納されます。
エラーはステージ エラー ハンドラで捕捉され、body コンテキスト変数の <Notes> フィールド値が $fault <reason> 要素のテキストで置換されます。後でコンソールで表示および検索できるように、レポート アクションでエラー コードとメッセージ本体を保存します。返信アクションで body コンテキスト変数をクライアントに返します。
このシナリオでは、メッセージ ルーティングは次のように処理されます。
MortgageBroker プロジェクト フォルダと前のチュートリアルで作成したディレクトリ構造を使用して、プロジェクトのアーティファクトを保持します。このシナリオに必要なリソースを次の表に示します。
このチュートリアルでは、Oracle Service Bus を使用して、金融会社の融資申し込みを対象 Web サービスにルーティングします。融資申し込みを処理するには、申し込みがすべて適切に入力されている必要があります。申し込みにエラーがあると、Oracle Service Bus によって検証例外が生成され、エラー メッセージがクライアントに返されます。
プロキシ サービス LoanGateway3 を作成し、メッセージを NormalLoan ビジネス サービスにルーティングするようにコンフィグレーションします。プロキシ サービスの動作は、次のタスクの実行によってコンフィグレーションします。
このチュートリアル用に作成したドメインで Oracle Service Bus が動作していること、および「チュートリアル 1. 融資申し込みのルーティング」で説明されているタスクが完了していることを確認します。
このチュートリアルでは、「チュートリアル 1. 融資申し込みのルーティング」で作成した MortgageBroker プロジェクト フォルダとディレクトリ構造を使用して、プロジェクトのアーティファクトを保持します。
この節では、プロキシ サービス LoanGateway3 を作成します。メッセージのコンテンツを検証するために、既存の normalLoan WSDL リソースを使用します。融資申し込みが有効で、想定されている基準を満たす場合は、既存の NormalLoan ビジネス サービスにルーティングされます。normalLoan WSDL リソースおよび NormalLoan ビジネス サービスは、「チュートリアル 1. 融資申し込みのルーティング」の「normalLoan WSDL リソースを作成するには」で作成したものです。
このタスクでは、融資申し込みを適切なビジネス サービスにルーティングする際に使用する、LoanGateway3 プロキシ サービスを作成します。このプロキシ サービス インスタンスの作成については、「プロキシ サービスを作成するには」のタスクに従って、表 5-2 のプロキシ サービス名とエンドポイント URI を使用します。
プロキシ サービスのコンフィグレーション時には、HTTP 転送コンフィグレーション、メッセージ レベルのセキュリティ コンフィグレーション、およびデフォルトの [SOAP 本体の種類] 操作の選択アルゴリズムのデフォルトの設定をそのまま使用します。[プロキシ サービスの作成 - 概要] ページが表示されたら、プロキシ サービスを登録する前にコンフィグレーション設定の概要を確認し、[保存] をクリックします。
このタスクを完了すると、MortgageBroker/ProxyService フォルダには、このチュートリアルおよび前のチュートリアルで作成した以下のプロキシ サービスが格納されます。
このプロキシ サービスは、メッセージ フローとして Oracle Service Bus に実装されます。Oracle Service Bus のメッセージ フローは、要求/応答パイプラインを使用してプロキシ サービスの実装を定義します。メッセージ フローには、次のパイプライン ペアを 0 個以上含めることができます。
各パイプラインは、1 つまたは複数のステージを持つことができ、ステージはアクションを持ちます。
LoanGateway3 プロキシ サービスの動作をコンフィグレーションするには、次のタスクを実行する必要があります。
ナビゲーション ペインに [プロジェクト エクスプローラ] ペインが開きます。
| 注意 : | リソースの編集はセッション内で行う必要があります。セッションを開始していない場合は、[Change Center] で [作成] をクリックしてセッションを開始し、プロキシ サービスのコンフィグレーションやメッセージ フローの編集ができるようにします。 |
プロキシ サービス LoanGateway3 の [メッセージ フローの編集] ページが表示されます。
[PipelinePairNode1] が作成され、メッセージ フローに配置されます。図 5-2 に示すように、要求/応答パイプラインがこのノードに対して表示されます。

ここでは、プロキシ サービスの要求アクションをコンフィグレーションする必要があります。
検証する] を選択します。検証アクションがステージに追加されます。
body 要素の構造が [変数の構造] ペインに表示されます。
./exam:processLoanApp/loanRequest
| 注意 : | ドラッグ アンド ドロップ機能を使用できるのは Internet Explorer (IE) ブラウザのみです。IE 以外のブラウザを使用している場合は、[変数の構造] ペインで loanRequest 要素を選択します。式が [プロパティ インスペクタ] パレットに表示されます。パレットの式をコピーし、XQuery 式のテキスト ボックスに貼り付けます。 |
[ステージ コンフィグレーションの編集] ページに、XQuery 式で置換された <XPath> が表示されます。
プロキシ サービスは最初に作成した WSDL リソースをベースにしているので、そのリソースに基づいてメッセージを検証する必要があります。
[WSDL 定義の選択] ペインに WSDL のコンテンツ カテゴリが表示されます。
| 注意 : | メッセージ フロー内でできる限り早くメッセージの検証を行う必要があります。これによって、無効なメッセージ コンテンツに関する不要な処理が行われないようにします。例外の発生により、それ以降のメッセージ処理が停止され、エラー応答が直ちにクライアントに返されます。 |
| 注意 : | メッセージは、ルート ノードで検証するか、(このチュートリアルのように) 別の検証アクションを使用して検証することができます。検証ステージを作成すると、コンフィグレーションされた検証アクションがメッセージ フローに論理的に分割されるため、メッセージの処理のモジュール化が進みます。複数の検証を 1 つのメッセージに対して実行する場合は、検証アクションが論理的に拡張されます。 |
ステージ エラー ハンドラをコンフィグレーションするには、以下のタスクを実行する必要があります。
If...Then アクションが Reply ステージに追加されます。
] テキスト ボックスに「$fault/ctx:errorCode」と入力します。
[式ビルダ] ペインが図 5-7 のように表示されます。
| 注意 : | ページに複数のアクションを追加する場合は、新しいアクションを追加する位置の前にあるアクションをクリックし、そこで追加するアクションを選択します。アクションが順序どおりに追加されます。 |
[置換する] という文が図 5-9 に示すように表示されます。
body 要素の構造が [変数の構造] ペインに表示されます。
置換アクションが図 5-12 に示すように表示されます。.
次に、レポート アクションを追加し、詳細なコンテキストとして body コンテキスト変数をレポートし、キー名 errorCode とキー値に fault コンテキスト変数で検出した実際のエラー コードを設定するように、レポート アクションをコンフィグレーションする必要があります。
レポート
レポート] を選択します。レポート アクションがページに追加されます。
XQuery 式 $body がテキスト ボックスに入力されます。
| 注意 : | ドラッグ アンド ドロップ機能を使用できるのは Internet Explorer (IE) ブラウザのみです。IE 以外のブラウザを使用している場合は、[変数の構造] ペインで body 要素を選択します。[プロパティ インスペクタ] ペインから式をコピーし、XQuery 式のテキスト ボックスに貼り付けます。 |
「/ctx:errorCode」という式をテキスト ボックスに入力します。
| 注意 : | ドラッグ アンド ドロップ機能を使用できるのは Internet Explorer (IE) ブラウザのみです。IE 以外のブラウザを使用している場合は、[変数の構造] ペインで errorCode 要素を選択します。式が [プロパティ インスペクタ] パレットに表示されます。式をコピーし、XPath 式のテキスト ボックスに貼り付けます。 |
この手順では、レポート データにエラー コードでインデックスを付けることができます。キーは、メッセージを識別する便利な手段となります。エラー コードを使用して、レポート モジュールでレポート エントリを検索することができます。
レポート アクションが図 5-15 に示すように表示されます。

[ステージ コンフィグレーションの編集] ページが図 5-16 に示すように表示されます。

置換する] を選択します。
ログ] を選択します。
完成した Else 条件が図 5-18 に示すように表示されます。

フロー制御
返信] を選択します。返信アクションがページに追加されます。
ここでは、ルート ノードをパイプライン ペアに追加し、NormalLoan ビジネス サービスへのデフォルトのルーティングが可能になるようにコンフィグレーションする必要があります。
ルーティング] を選択します。
図 5-20 に示すように、[ルーティング先] アクションが [ステージ コンフィグレーションの編集] ページに表示されます。
これは、実行時に呼び出される NormalLoan ビジネス サービスの操作です。これで、NormalLoan ビジネス サービスへの融資申し込みのルーティング ケースが定義されました。[メッセージ フローの編集] ページが図 5-21 に示すように表示されます。
Oracle Service Bus でクライアントと対象ビジネス サービスを使用するためのコンフィグレーションが完了したので、コンフィグレーションをテストする必要があります。ルーティング コンフィグレーションをテストするには、build.xml ファイルの融資期間 (年) フィールドの値を変更する必要があります。次に、プロキシ サービスの動作がさまざまな融資の値で変わるかどうかを確認することで、ルーティング ロジックをテストします。
入力された融資の値が整数以外の場合は、例外がトリガされ、メッセージのメモ フィールドにエラー メッセージが返されます。入力された融資の値が整数の場合は、メッセージが NormalLoan ビジネス サービスにルーティングされます。コマンド ウィンドウに返されるメッセージによって、検証例外が発生したか、メッセージが適切なビジネス サービスにルーティングされたかがわかります。
テスト コンソールを使用して融資申し込みをテストするには、まず WebLogic Server Console でクライアント jar をデプロイする必要があります。詳細については、「クライアント アプリケーションのロード」を参照してください。
<loanRequest xmlns:java="java:normal.client">
<!--Optional:-->
<java:Name>Smith</java:Name>
<!--Optional:-->
<java:SSN>1234567</java:SSN>
<!--Optional:-->
<java:Rate>5</java:Rate>
<!--Optional:-->
<java:Amount>900000000</java:Amount>
<!--Optional:-->
<java:NumOfYear>10.1</java:NumOfYear>
<!--Optional:-->
<java:Notes>大口融資処理</java:Notes>
</loanRequest>
その他のデフォルト設定をそのまま使用し、[実行] をクリックします。応答は、図 5-22 のようになります。

この応答メッセージは、指定された融資期間が整数ではなかったために検証例外が発生したことを示します。
<loanRequest xmlns:java="java:normal.client">
<!--Optional:-->
<java:Name>Smith</java:Name>
<!--Optional:-->
<java:SSN>1234567</java:SSN>
<!--Optional:-->
<java:Rate>4</java:Rate>
<!--Optional:-->
<java:Amount>300000000</java:Amount>
<!--Optional:-->
<java:NumOfYear>10</java:NumOfYear>
<!--Optional:-->
<java:Notes>標準融資</java:Notes>
</loanRequest>
その他のデフォルト設定をそのまま使用し、[実行] をクリックします。応答は、図 5-23 のようになります。

この応答メッセージは、融資期間の値が整数だったので、NormalLoan ビジネス サービスが融資申し込みを処理したことを示します。
プロキシ サービスのテストが終了し、次は、Oracle Service Bus Console のレポートおよびモニタの機能について学習します。
| 注意 : | 「テスト コンソールを使用して融資申し込みのルーティング コンフィグレーションをテストするには」のテストを少なくとも 5 回は実行して、レポートとモニタの機能を調べるためのデータを生成してください。 |
Oracle Service Bus には、メッセージ レポート用の JMS レポート プロバイダが含まれます。Oracle Service Bus Console の [レポート] モジュールには、このレポート プロバイダから取り込まれた情報が表示されます。用意されているレポート プロバイダを使用しない場合は、レポート サービス プロバイダ インタフェース (SPI) を使用して独自のレポート プロバイダを作成できます。
Oracle Service Bus Console のダッシュボードには、詳細な形式で表示されるレポート機能が含まれています。表示されるリンクをたどることにより、情報を入手できます。
Oracle Service Bus では、システム処理とビジネスの監査のために実行時情報をモニタし、収集できます。Oracle Service Bus で集約された実行時統計は、カスタマイズ可能なダッシュボードに表示できます。ダッシュボードでは、システムのヘルス状態をモニタし、メッセージング サービスの問題があった場合にアラートを受けることができます。この情報を使用すると、時間をかけずに簡単に発生した問題を特定し、診断できます。
|