この章では、デフォルトのJMSレポート・プロバイダとFusion Middleware Controlのメッセージ・レポート・モジュールを含め、Oracle Service Busのレポート・フレームワークについて説明します。
この章の構成は、次のとおりです。
Service Busには、メッセージまたはアラート用に1つ以上のレポート・プロバイダを作成するための拡張可能なフレームワークが含まれています。メッセージおよびアラートのレポートを生成するパイプラインを構成すると、そのレポートをレポート・ストリームにエクスポートできるようになります。
メッセージ・データは、メッセージ$body
およびメッセージに関連付けられた他の変数($header
変数や$inbound
変数など)から取り込むことができます。アラート・データには、パイプラインをモニターするために構成できるサービス・レベル・アグリーメント(SLA)違反に関する情報が含まれます。レポート・プロバイダに配信されるメッセージまたはアラート・データは、メッセージのトラッキングや規定の監査などの機能に使用できます。
メッセージ・レポートを有効化するには、まず、パイプラインにレポート・アクションを作成しておく必要があります。レポート・アクションを使用すると、各メッセージから情報を抽出して、その情報をService Busのレポート・データ・ストリームに書き込みできるようになります。アラート・レポートのレポート・アクションを構成する必要はありません。アラート・データは常にレポート・データ・ストリームで使用可能です。詳細は、「パイプライン・レポート・アクションについて」を参照してください。
Service Busには、メッセージ・レポート用にJMSレポート・プロバイダが組み込まれています。Fusion Middleware Controlの「メッセージ・レポート」ページには、このレポート・プロバイダから取り込んだ情報が表示されます。組込みのJMSレポート・プロバイダを使用しない場合は、このプロバイダを割当て解除して、レポート・サービス・プロバイダ・インタフェース(SPI)を使用して独自のレポート・プロバイダを作成できます。メッセージ用に独自のレポート・プロバイダを構成すると、Fusion Middleware Controlに情報が表示されなくなります。したがって、独自のユーザー・インタフェースを作成する必要があります。SLAアラート・データを取り込むには、アラート用のレポート・プロバイダを作成する必要があります。
独自のレポート・プロバイダの作成に必要な情報は、Oracle Service Bus Java APIリファレンスのcom.bea.wli.reporting
を参照してください。Java APIリファレンスには、パッケージ化する方法、配置場所、デプロイの方法、デプロイメント順序など、レポート・プロバイダの実装に必要なものに関する情報が記載されています。レポート・スキーマ(MessageReporting.xsd
)の場所は、OSB_ORACLE_HOME
/lib/sb-schemas.jar
です。
図12-1に示すように、レポート・メッセージとアラートの両方がレポート・データ・ストリームにエクスポートされます。レポート・ステージでは、レポート・アクションによって各メッセージから情報が抽出され、MessageReporting.xsd
に準拠するメタデータとともにレポート・データ・ストリームに書き込まれます。
同様に、SLAマネージャは、レポート・データ・マネージャAPIを使用して、AlertReporting.xsd
に準拠するメタデータとともにアラート・レポート・ストリームに書き込みます。アラートのレポート・プロバイダまたは独自のメッセージ・レポート・プロバイダを開発するには、ReportingDataHandler
インタフェースを実装し、ReportingDataManager
クラスを使用する必要があります。
ReportingDataHandler
インタフェースは、レポートまたはアラートのデータ・ストリームを処理します。このストリームは、リレーショナル・データベース、ファイル、JMSキューなどで処理したり格納したりできます。使用するストリームに応じて、データ・ストリームを処理する適切なhandleメソッドを実装する必要があります。
メッセージ・レポート・ストリーム: ランタイムのレポート・アクションは、次の2つのhandleメソッドを使用して、メッセージ・レポート・ストリームに書き込みます。
handle(com.bea.xml.XmlObject metadata, String s) handle(com.bea.xml.XmlObject metadata, com.bea.xml.XmlObject data)
アラート・レポート・ストリーム: アラート・マネージャで次のhandle
メソッドを使用して、アラート・レポート・ストリームに書き込みます。
handle(com.bea.xml.XmlObject metadata, String data)
ReportingDataManager
は、レポート・プロバイダのレジストリを保持するローカル・サーバー・オブジェクトです。レポート・プロバイダは、ReportingDataHandler
インタフェースを実装します。ReportingDataManager
では、次の操作を実行できます。
レポート・データ・ハンドラの追加と削除
各種handle操作を使用したレポート・データ・ストリームのエクスポート
JMSレポート・プロバイダは、パイプラインのレポート・アクションを使用して各メッセージからレポート情報を取り込むプラガブルなアーキテクチャを備えています。
デフォルトのJMSレポート・プロバイダは、Service Busドメインの作成時に自動的に構成されます。クラスタ内のすべてのメッセージは集約され、データベース固有の形式でJMSレポート・プロバイダ・データ・ストアに格納されます。このプロバイダは、JMSレポート・プロバイダ・データ・ストアの情報を表示します。
注意:
デフォルトのService Bus JMSレポート・プロバイダを使用しない場合は、「JMSレポート・プロバイダの割当て解除」の説明に従って、レポート・プロバイダおよびドメイン内の対応するデータ・ソースを割当て解除します。
JMSレポート・プロバイダは、プロデューサとコンシューマで構成されています。これらはスケーラビリティを向上させるために切り離されています。図12-2に示すように、プロデューサはJMSプロデューサであり、MDB(メッセージドリブンBean)がJMSコンシューマとして機能します。
レポート・ステージには、レポート情報を収集し、ReportingDataManagerの各種のhandle操作を通じてレポート・ストリームをJMSレポート・プロバイダにディスパッチするレポート・アクションが含まれています。JMSReportingDataHandlerは、レポート・プロバイダのJMSプロデューサです。JMSReportingDataHandlerはレポート・ストリームを取得し、情報をJMSキューに記録します。MDBは、JMSレポート・キューをリスニングします。メッセージは非同期に処理され、データはJMSレポート・プロバイダ・データ・ストアに格納されます。
JMSレポート・プロバイダはレポート・アクションによって生成されたレポートを処理しますが、SLAやパイプライン・アラートのため生成されたレポートは無視されます。カスタム・レポート・プロバイダに書き込むとき、その動作に制限されません。ビジネス要件に応じて、レポート・フレームワークによってカスタム・レポート・プロバイダに配信されたレポート・データのすべてまたはサブセットを処理することができます。
レポート・メッセージをJMSレポート・プロバイダ(Service Busインストールに付属)または独自のカスタム・レポート・プロバイダから受信するには、まず、レポートが必要になるパイプラインにレポート・アクションを作成しておく必要があります。レポート・アクションを使用すると、各メッセージから情報を抽出して、その情報をService Busのレポート・データ・ストリームに書き込みできるようになります。レポート・アクションでは、メッセージから抽出し、データ・ストリームに追加する情報を指定します。
レポート・アクションの構成時に、キー値を使用してメッセージからキー識別子を抽出します(複数のキーを構成できます)。情報は、メッセージの本文からのみでなく、header変数やinbound変数など、メッセージに関連付けられている他のあらゆる変数からも取り込むことができます。
任意のXML要素をキーとして使用できます。たとえば、次に示すメッセージ構造を使用している場合は、識別子を抽出する手段として、item-code要素を使用できます。
<?xml version="1.0" encoding="utf-8"?> <poIncoming> <areacode>408</areacode> <item-quantity>100</item-quantity> <item-code>ABC</item-code> <item-description>Medicine</item-description> </poIncoming>
図12-3は、ItemCode
という名前で、値に.//item-code
(XPath式)が定義されたキー値を示しています。キーの値は、メッセージ本文(body
変数)のitem-code
要素から取得されます。
デフォルトのJMSレポート・プロバイダを使用する場合は、キーおよび関連付けられている値が「メッセージ・レポート」表の「レポート・インデックス」列に表示されます。複数のキーを構成した場合は、キーと値の各ペアがカンマで区切られ、「レポート・インデックス」列に表示されます。
レポート・アクションの作成の詳細は、『Oracle Service Busでのサービスの開発』のレポート・アクションの追加に関する項を参照してください。
JMSレポート・プロバイダは、デフォルトのキュー接続ファクトリを使用しますが、これによってグローバル・トランザクションのコンテキストでパイプラインがレポート・アクションを実行できるようになります。jmsResources
モジュールで定義される接続ファクトリは、wli.reporting.jmsprovider.ConnectionFactory
と呼ばれます。
グローバル・トランザクションのコンテキストでレポート・アクションを実行する必要がない場合は、次の操作をOracle WebLogic Server管理コンソールで実行して、接続ファクトリを変更します。
この接続ファクトリを使用してレポート・アクションを処理する場合にパイプラインが使用するロジックは次のとおりです。
グローバル・トランザクションが存在し、かつ、接続ファクトリがXA対応(デフォルト)である場合、レポートはそのグローバル・トランザクションのコンテキスト内で生成されます。
グローバル・トランザクションが存在し、かつ、接続ファクトリがXA対応でない場合、トランザクションが一時停止され、レポートはローカル・トランザクション内で生成されます。
グローバル・トランザクションが存在しない場合、レポートはローカル・トランザクション内で生成されます。
Service Busには、JMSレポート・プロバイダ・データ・ストア用のデータベースが必要です。Oracle WebLogic ServerとともにインストールされるJava DBデータベースは開発のみを目的としており、本番環境用ではありません。
本番環境では、サポートされているデータベースの1つを使用する必要があります。サポートされているデータベースに関する最新情報については、次の場所にあるOracle Fusion Middlewareのサポートされるシステム構成の、サポート対象のデータベースとドライバを参照してください:
http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html
注意:
デフォルトのJMSレポート・プロバイダを使用せず、そのためデータベースを構成しない場合は、「JMSレポート・プロバイダの割当て解除」の説明に従って、レポート・プロバイダおよびドメイン内の対応するデータ・ソースを割当て解除します。
デフォルトのデータ・ソースwlsbjmsrpDataSource
は、Service Busインストール用に自動的に作成されます。カスタムのJMSレポート・プロバイダ・データ・ソースを作成する場合は、そのデータ・ソースが次のいずれかの方法でトランザクションをサポートしていることを確認してください。構成が不適切であると、例外が発生する場合があります。
サポートされたXAドライバを使用するように、データ・ソースを構成します。
データ・ソースに非XAドライバを使用する場合、データ・ソースの構成で次のオプションを選択してください。
グローバル・トランザクションのサポート
ロギング・ラスト・リソース
ロギング・ラスト・リソース(LLR)の詳細は、『Oracle WebLogic Server JDBCデータ・ソースの管理』の「ロギング・ラスト・リソース」トランザクション・オプションの理解に関する項を参照してください。
開発環境では、デフォルトのJMSレポート・プロバイダは、指定されたデータベースの表が存在するかどうかを実行時にチェックします。表が存在しない場合、レポート・プロバイダによって表が作成されます。表が存在する場合は、その表が使用されます。
リポジトリ作成ユーティリティ(RCU)を実行すると、レポート・プロバイダで使用される表を含め、スキーマおよび必要なService Busデータベース表が作成されます。これは製品インストールの一部です。詳細は、Oracle Fusion Middleware構造のインストールと構成のデータベース・スキーマの作成に関する項を参照してください。
メッセージ・レポートを生成するには、レポートするパイプラインにレポート・アクションを作成する必要があります。
「パイプライン・レポート・アクションについて」に説明が記載されています。この手順は、『Oracle Service Busでのサービスの開発』のレポート・アクションの追加に関する項を参照してください。
また、グローバルおよびパイプライン用のレポートの操作設定を両方とも有効にする必要もあります。操作設定の更新手順は、次の項を参照してください。
Fusion Middleware Controlでは、JMSレポート・プロバイダ・データ・ストアで収集された情報を表示できます。メッセージ・レポート機能を使用すると、レポート、エラー・コード、レポート・インデックスを生成したパイプライン、または日付範囲に基づいて特定のメッセージを検索できます。
検索結果は、抽出された情報と、その他の情報(メッセージがデータベースに書き込まれた時刻やメッセージに関連付けられているサービスなど)を含む表に表示されます。エラー情報など、特定のメッセージに関する詳細情報を表示できます。
メッセージ・データを管理するには、パージ機能を使用します。この機能を使用すると、すべてのメッセージをレポート・データストアからパージすることも、特定の期間内に生成されたメッセージのみをパージすることもできます。JMSレポート・プロバイダ・データ・ストアのホストに使用しているデータベースに対して、標準的なデータベース管理手続きを行ってください。
メッセージ・レポートを表示するには、レポートの検索を実行する必要があります。すべての検索基準を空白のままにすると、利用可能なすべてのレポートを表示できます。また、指定した期間のメッセージに対して、サービスの名前別、エラー・コード別、およびレポート・インデックス別のフィルタを適用することもできます。このページに示されるフィールドの詳細は、「メッセージ・レポート」ページのオンライン・ヘルプを参照してください。
メッセージ・レポートを検索するには:
Fusion Middleware Controlで、次のいずれかの操作を実行します。
「Service Bus」または「Service Busプロジェクト」メニューをクリックし、「メッセージ・レポート」を選択します。
ターゲット・ナビゲータで、Service Busサーバーの名前か、そのサーバーにデプロイしたプロジェクトの名前を右クリックして、「メッセージ・レポート」を選択します。
次に示す基準を検索フィールドに入力します。すべてのメッセージを取得する場合は、検索フィールドを空のままにします。
インバウンド・サービス名(パイプラインの名前)
エラー・コード
レポート・インデックス(キー/値のペア)
これらのフィールドには、アスタリスク(*)のワイルドカード文字を使用できます。
取得するレポートの日付範囲を指定するには、次の操作を実行します。
「自」ラジオ・ボタンを選択します。
「自」フィールドに、日付範囲の開始日を入力します。「日付および時間の選択」アイコンを使用して日付を選択するか、Month DD, YYYY HH:MM:SS AM|PM
の書式で日付と時刻を入力します。たとえば、'Nov 29, 2013 12:45:00 AM'と入力します。
「至」フィールドで前述の手順を繰り返して、日付範囲の終了日を定義します。
最近のメッセージを取得するには、次の操作を実行します。
「過去」ラジオ・ボタンを選択します。
「日」フィールドで、何日前までのメッセージ・レポートを取得するかについての日数を選択します。
「時間:分」フィールドで、何時間前までのメッセージを取得するかの時間数と分数を選択します。
「検索」をクリックします。
指定した基準と一致するメッセージ・レポートのリストが、ウィンドウの下部に表示されます。
「メッセージの詳細」ページには、選択したレポート・メッセージに関する完全な情報が表示されます。この情報には、レポートを生成したノード、パイプラインおよびステージに加え、タイムスタンプ、サーバー名、インバウンド・サービスとアウトバウンド・サービス、およびレポートに関連するフォルト(ある場合)が含まれます。さらに、パイプラインのレポート・アクションで定義されているレポートについては、そのレポートに書き込まれたテキストを表示することもできます。
メッセージ・レポートの詳細を表示するには:
レポート・データストアからは、すべてのメッセージをパージすることも、指定した期間中に生成されたレポートのみをパージすることもできます。メッセージのパージは非同期プロセスであるため、バックグラウンドでパージが行われているときにも、「メッセージ・レポート」ページでの操作を継続できます。Fusion Middleware Controlには、パージが処理中であることを示すメッセージは表示されませんが、パージの処理中に別のユーザーがパージを開始しようとすると、次のメッセージが表示されます。
A Purge job is already running. Please try later.
パージの完了に要する時間は、パージ・キューにあるメッセージの数によって異なります。パージ・プロセス中にレポート・メッセージを検索すると、メッセージの削除の速度が低下します。また、一部のデータのパージがまだ完了していない場合は、「メッセージ・レポート」ページに不正なデータが表示されることがあります。
デフォルトのJMSレポート・プロバイダ(またはカスタム・レポート・プロバイダ)を使用しない場合は、ドメイン内でプロバイダを割当て解除します。
Service Busドメインの作成時に、JMSレポート・プロバイダは、ターゲットとしてデプロイメント・リストに組み込まれます。デフォルトのJMSレポート・プロバイダおよび関連付けられたデータ・ソースを割当て解除すると、サーバー起動時の無害なJMSレポート・エラーを回避できます。
注意:
レポート・プロバイダがなくても、レポート・アクションを定義できます。ただし、データの書込みは行われません。
ドメインの作成時に、デフォルトのJMSレポート・プロバイダが割り当てられないようにするには:
ウィザードによってドメインが作成されると、サーバーの起動時にどのリソースも割り当てられません。
Service Busドメインの実行中に、レポート・プロバイダを割当て解除するには:
Oracle WebLogic Server管理コンソールを起動し、ログインします。
「ドメイン構造」パネルで、「デプロイメント」をクリックします。
「デプロイメントのサマリー」ページが表示されます。
「デプロイメント」表で、割当て解除するレポート・プロバイダをクリックします。
プロバイダの「設定」ページが表示されます。
「ターゲット」タブをクリックします。
割当て解除するコンポーネントのチェック・ボックスを選択解除します。
「保存」をクリックします。
設定が正常に更新されたことを示すメッセージが表示されます。
レポート・プロバイダを割当て解除した後で、レポート・プロバイダで使用されているデータ・ソースを次のように割当て解除します。
注意:
この手順は、他のコンポーネントとデータ・ソースを共有しないレポート・プロバイダにのみ必要になります。Oracle Service BusのインストールでデフォルトのJMSレポート・プロバイダを割当て解除するには、次の手順を実行する必要があります。
左側のパネルの「ドメイン構造」で、「サービス」→「データ・ソース」を選択します。
「JDBCデータ・ソースの概要」ページで、割当て解除するデータ・ソースの名前をクリックします。
データ・ソースの「設定」ページが表示されます。
「ターゲット」タブをクリックします。
割当て解除するデータ・ソースがあるサーバーのチェック・ボックスを選択解除します。
「保存」をクリックします。
設定が正常に更新されたことを示すメッセージが表示されます。
Service Busドメインが実行されていない場合は、WebLogic Scripting Tool (WLST)を使用してドメインからJMSレポート・プロバイダを削除できます。
レポート・プロバイダを割当て解除するには、次の手順を実行します:
注意:
クラスタでは、JMSレポート・プロバイダはクラスタに割り当てられます。したがって、クラスタでメッセージを表示およびパージするには、少なくとも1つの管理対象サーバーを管理サーバーとともに実行するよう構成する必要があります。実行中の管理対象サーバーが存在していないと、レポート・プロバイダは利用できなくなります。
デフォルトでは、JMSレポート・プロバイダはデータ・ストアにWebLogic JMSを使用します。クラスタ環境でService Busを実行している場合は、かわりにOracle AQ JMSを使用するようにドメインを構成できます。これにより、レポートとポーラーのトランスポート用JMSプロバイダを変更します。
Oracle AQを使用するようにドメインを構成すると、構成ウィザードは新しいJMSシステム・リソースOSBAQJMSServer
を生成します。このリソースは、AQ JMSの外部JMSサーバーに関連付けられています。必須のJMS外部宛先、外部接続ファクトリ、初期コンテキスト・ファクトリ、およびデータソースは、レポート・キュー用とポーラー・トランスポート・キュー用に構成されます。AQ JMS用のJMS外部サーバーは、JMSレポート・データソースwlsbjmsrpDataSource
を使用するように構成されます。このデータソースは、デフォルトのWebLogic JMSが使用するデータソースと同じものです。
注意:
Oracle AQ JMSは、Oracleデータベースを使用したクラスタ環境内のService Busでのみサポートされます。
次の手順は、クラスタ化したService Busドメインを作成するときに、特別に実行する必要がある手順を示しています。ドメイン作成の詳細は、Oracle Service Busのインストールと構成の「Service Busドメインの構成」を参照してください。
Oracle AQ JMSを使用するようにクラスタ・ドメインを構成するには:
構成ウィザードの「拡張構成」ページで、「デプロイメントとサービス」および「管理対象サーバー、クラスタおよびCoherence」に対してオプション構成を選択します。
管理サーバーおよび管理対象サーバーを構成し、クラスタを定義して、それらのサーバーを通常どおりにクラスタに割り当てます。
「サービス・ターゲット指定」ページが表示されたら、次の操作を実行します。
Cluster/
cluster_name
/JMS/JMS System Resource
の下にある「ターゲット」パネルで、「jmsResources」を選択し、左矢印をクリックして「ターゲット」リストから削除します。
JMS System Resource
の下の「サービス」パネルで「OSBAQJMSServer」を選択して、「ターゲット」パネルでクラスタの名前を選択し、右矢印をクリックして「ターゲット」リストにサービスを追加します。
これにより、サービスのターゲットをクラスタに設定します。
「サービス」パネルで「OSBAQJMSServer」を再度選択して、「ターゲット」パネルで管理サーバーの名前を選択し、右矢印をクリックして「ターゲット」リストにサービスを追加します。
これにより、サービスのターゲットを管理サーバーに設定します。
通常どおりに、ドメインの構成を継続します。
ドメインの作成が完了したら、JMSリソースとそのリソースに関連付けられた接続ファクトリおよび宛先を、Oracle WebLogic Server管理コンソールの「JMSモジュール」ページで確認してください。