34 ビジネス・イベントの管理
この章の内容は次のとおりです。
ビジネス・イベント問題のトラブルシューティングの詳細は、「ビジネス・イベントおよびイベント配信ネットワークのトラブルシューティング」を参照してください。
Oracle JDeveloperでのビジネス・イベントの作成の詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』の「ビジネス・イベントおよびイベント配信ネットワークの使用」を参照してください。
イベント配信ネットワークおよびJMSプロバイダ・タイプの概要
ビジネス・イベントは、Oracle JDeveloper で作成し、SOAコンポジット・アプリケーションに組み込みます。このアプリケーションは、Oracle Enterprise Manager Fusion Middleware Controlにデプロイします。サービス・コンポーネントはビジネス・イベントにサブスクライブできます。公開されたビジネス・イベントは、そのイベントをサブスクライブしているエンティティが受信します。
EDNとは、公開済のビジネス・イベントを受け入れ、サブスクライバに配信するOracle SOA Suiteのサブシステムです。EDNは、バックエンド・ストアとしてJMSトピックを使用します。EDNは次の2つのJMSベースのタイプを提供します。
-
Oracle WebLogic Server JMS
EDNは、すべてのイベント・タイプの基になるJMSストアとして、デフォルトのOracle WebLogic Server JMSトピックを使用します。図34-1に詳細を示します。
サポートされているJMSアダプタ接続ファクトリは次のとおりです。
-
eis/wls/EDNxaDurableTopic (XA、ClientID=edn_wljms_xa_clientとの永続トピックをサポート)
-
eis/wls/EDNxaTopic (XAをサポート)
-
eis/wls/EDNLocalTxDurableTopic (ローカル・トランザクション、ClientID=edn_wljms_localtx_clientとの永続トピックをサポート)
-
eis/wls/EDNLocalTxTopic (ローカル・トランザクションをサポート)
デフォルトのJMSタイプを変更できます。詳細は、「JMSタイプの変更」を参照してください。また、カスタムのJMSトピックを作成し、そのカスタム・トピックにマップする特定の対象イベント・タイプを指定することもできます。
-
-
Oracle Advanced Queueing (AQ) JMS
AQ JMSトピックを作成して使用することもできます。EDNでは、事前プロビジョニングされた即時利用可能なAQ JMSトピックを提供します。図34-2に詳細を示します。
AQ JMSは、外部サーバーを介して公開されます。
サポートされているJMSアダプタ接続ファクトリは次のとおりです。
-
eis/aqjms/EDNxaDurableTopic (XA、ClientID=edn_aqjms_xa_clientとの永続トピックをサポート)
-
eis/aqjms/EDNxaTopic (XAをサポート)
-
eis/aqjms/EDNLocalTxDurableTopic (ローカル・トランザクション、ClientID=edn_aqjms_localtx_clientとの永続トピックをサポート)
-
eis/aqjms/EDNLocalTxTopic (ローカル・トランザクションをサポート)
サポートされているJDBCデータ・ソースは次のとおりです。
-
jdbc/EDNDataSource (XAをサポート)
-
jdbc/EDNLocalTxDataSource (ローカル・トランザクションをサポート)
次の外部サーバーがサポートされています。
-
EDNAQjmsForeignServer (XAをサポート)
-
EDNAQjmsLocalTxForeignServer (ローカル・トランザクションをサポート)
表34-1は、両方のJMSプロバイダ・タイプの利点を示しています。
表34-1 JMSプロバイダ・タイプの比較
Oracle WebLogic Server JMS | AQ JMS |
---|---|
|
|
永続サブスクリプションがサポートされています。つまり、サブスクライバが起動して稼働していない場合でも、イベントは保持されます。永続サブスクリプションによってイベントが蓄積され続けます。表34-2に、SOAコンポジット・アプリケーションの様々なライフ・サイクル状態で非永続サブスクリプションと永続サブスクリプションがどのように処理されるかを示します。
表34-2 ビジネス・イベントおよびコンポジットのライフ・サイクル状態
コンポジットの状態 | 非永続サブスクライバに対する影響 | 永続サブスクライバに対する影響 |
---|---|---|
デプロイ |
サブスクライバは作成され、イベントの受信を開始します。 |
サブスクライバは作成され、永続サブスクリプションが登録され、サブスクライバはイベントの受信を開始します。 |
アンデプロイ |
サブスクライバは削除され、イベントの受信を停止します。 |
サブスクライバは削除され、永続サブスクリプションが登録解除され、サブスクライバはイベントの受信を停止します。 |
再デプロイ |
永続サブスクリプションとサブスクライバは再作成されます。 |
永続サブスクリプションとそのサブスクライバは再作成されます。 |
停止 |
サブスクライバはイベントの受信を停止します。 |
サブスクライバはイベントの受信を停止しますが、イベントは永続サブスクリプションを介してキューに入れられ続けます(削除されません)。 |
起動 |
サブスクライバはイベントの受信を開始します。 |
サブスクライバは、起動前にキューに入れられたイベントも含め、イベントを受信します。 |
リタイア |
サブスクライバはイベントの受信を停止します。 |
サブスクライバはイベントの受信を停止し、イベントはキューに入れられません(削除されます)。 |
アクティブ化 |
サブスクライバはイベントの受信を開始します。 |
サブスクライバはイベントの受信を開始します。 |
JMSトピック宛先へのビジネス・イベントのマッピング
Oracle Enterprise Manager Fusion Middleware Controlで様々なJMS宛先を介して各種ビジネス・イベントのフローをマップできます。このマッピングにより、単一の宛先を介してすべてのビジネス・イベントをマッピングすることで発生するビジネス・イベントのボトルネックを軽減できます。インストール後、すべてのビジネス・イベントはデフォルトで1つのローカルなOracle WebLogic Server JMSトピックにマップされます。追加のJMSトピックを手動で作成し、パフォーマンスのニーズに適したトピックにビジネス・イベントをマップできます。
デフォルト以外のJMSトピックにビジネス・イベントをマップする際には、次のベスト・プラクティスに注意してください。
-
マッピングは、メッセージがJMSトピック宛先に流れ込む前に実行します。これにより、サブスクライバがない古いJMSトピック宛先に既存のイベントが流れ込むのを防ぎます。
-
SOAコンポジット・アプリケーションまたはSOAサーバーのサブスクライブは、マッピングの完了後に再開します。これにより、新しいJMSトピック宛先にサブスクライバを関連付けることができます。
-
Oracle WebLogic Server管理コンソールで、JMSトピックが構成されていることを確認します。Oracle WebLogic Server JMSトピックの作成を参照してください。
-
Oracle WebLogic Server管理コンソールで、すべてのJMSアダプタ接続ファクトリが構成されていることを確認します。「JMSのJMSアダプタ接続ファクトリの作成(オプション)」を参照してください。
Oracle WebLogic Server JMSのJMSアダプタ接続ファクトリの作成(オプション)
通常、EDNインストールに含まれるものを再利用できるため、JMSアダプタの接続ファクトリを作成する必要はありません。接続ファクトリを作成する必要がある場合(別途の管理目的など)は、次のステップを実行します。
Oracle WebLogic Server JMSのJMSアダプタ接続ファクトリを作成するには:
AQ JMSトピックの作成
データベース・ナビゲータ(Oracle JDeveloperの場合)またはSQL Developerをsoainfra
ユーザーとして開き、次のスクリプトを実行してAQ JMSトピックを作成します。
define edn_user=soainfra_schema_user_here define topic=your_custom_aqjms_topic_name_here (for example, EDN_AQJMS_TOPIC_2) define topic_table=your_custom_aqjms_topic_table_here (EDN_AQJMS_TOPIC_ TABLE_2) begin DBMS_AQADM.stop_queue(queue_name => '&edn_user..&topic'); DBMS_AQADM.drop_queue(queue_name => '&edn_user..&topic'); DBMS_AQADM.drop_queue_table(queue_table => '&edn_user..&topic_table'); end; / begin dbms_aqadm.create_queue_table(queue_table => '&edn_user..&topic_table', queue_payload_type => 'SYS.AQ$_JMS_MESSAGE', multiple_consumers => true); dbms_aqadm.create_queue(queue_name => '&edn_user..&topic', queue_table => '&edn_user..&topic_table', max_retries => 256); dbms_aqadm.start_queue(queue_name => '&edn_user..&topic'); end; / commit;
キューおよびキュー表が作成されます。
AQ JMSトピックの公開
「AQ JMSトピックの作成」でAQ JMSトピックを作成したら、トピックをOracle WebLogic Serverアプリケーション(Oracle SOA Suiteアプリケーションを含む)に公開する必要があります。Oracle WebLogic Server管理コンソールを使用して新しい外部サーバーを作成するか、既存の外部サーバーEDNAQjmsForeignServerを更新してAQ JMSトピック・マッピングを追加します。
AQ JMSトピックを公開するには:
-
オプションで、新しい外部サービスを作成します。
-
Oracle WebLogic Server管理コンソールにログインします。
-
「ドメイン構造」で、「サービス」→「メッセージング」→「JMSモジュール」→「SOAJMSModule」に移動します。
-
「新規」をクリックして、「外部サーバー」を選択します。
-
外部サーバーに名前を付け、それをSOAサーバーに割り当てて、「終了」をクリックします。
-
新しい外部サーバーを開いて、「構成」→「全般」に移動します。
-
次のプロパティを設定します。
プロパティ 値 JNDI初期コンテキスト・ファクトリ
oracle.jms.AQjmsInitialContextFactory
JNDIプロパティ
EDN XA JDBCデータ・ソースの場合(たとえば、datasource=jdbc/EDNDataSource)。
EDN 非XA JDBCデータ・ソースの場合(たとえば、datasource=jdbc/EDNLocalTxDataSource)。
-
-
AQ JMSにカスタムJMSアダプタの接続ファクトリも作成する場合は、次のように接続ファクトリ・マッピングを作成する必要があります。
-
外部サーバーの「構成」→「接続ファクトリ」タブに移動し、「新規」をクリックします。
-
ローカルJNDI名(アダプタのConnectionFactoryLocationで構成した値に一致するもの)とリモートJNDI名(XAサポートの場合XATopicConnectionFactory)を指定します。
-
非XA JDBCデータ・ソースを使用する別の外部サーバーを作成する必要がある場合は、リモートJNDI名を、非XAサポートのTopicConnectionFactoryに設定します。
-
-
AQ JMSトピックへのマッピングの追加
-
「新規」をクリックして、新規に作成した外部サーバーの1つまたは既存の外部サーバーEDNAQjmsForeignServerで新しい宛先マッピングを作成します。
-
ローカルJNDI名を、Topics/custom_aqjms_topic_nameのリモートJNDI命名規則にマップします。
-
AQ JMSのJMSアダプタの接続ファクトリの作成(オプション)
通常、EDNインストールに含まれるものを再利用できるため、JMSアダプタの接続ファクトリを作成する必要はありません。接続ファクトリを作成する必要がある場合(別途の管理目的など)は、次のステップを実行します。
AQ JMSのJMSアダプタの接続ファクトリを作成するには:
リモート・クライアントのAQ JMSベースのトピックとの相互作用の有効化
イベント・タイプがデフォルトのEDN AQ JMSトピックまたはカスタムのAQ JMSトピックにマップされている場合、EDNはOracle SOA SuiteパブリッシャおよびサブスクライバがAQ JMSトピックを介してこのイベント・タイプと相互作用できるようにします。ただし、EDNはデフォルトではリモート・パブリッシャまたはサブスクライバの相互作用を有効化しません。
リモート・パブリッシャ、サブスクライバまたはその両方を有効化するには、EDN外部サーバー(EDNによりインストールされたサーバーまたはカスタム外部サーバー)で、表34-3で示すようにJNDIプロパティと資格証明が更新されている必要があります。
表34-3 JNDIプロパティおよび資格証明
プロパティ名 | プロパティ値 |
---|---|
JNDIプロパティ |
db_url=jdbc:oracle:thin:@host:port:service java.naming.security.principal=soainfra_schema_userを追加します。 |
JNDIプロパティ資格証明 |
oainfra_schema_userのパスワードを入力します。 |
図34-3に詳細を示します。
「ビジネス・イベント」ページでのJMSトピック宛先へのビジネス・イベントのマッピング
Oracle Enterprise Manager Fusion Middleware Controlの「ビジネス・イベント」ページで、JMSトピック宛先にビジネス・イベントをマップできます。
「ビジネス・イベント」ページでJMSトピック宛先にビジネス・イベントをマップするには:
詳細は、次のドキュメントを参照してください。
-
ビジネス・イベントの詳細は、『Oracle SOAスイートでのSOAアプリケーションの開発』の「ビジネス・イベントおよびイベント配信ネットワークの使用方法」を参照してください。
ビジネス・イベントの公開のテストとEDLファイルの表示
ビジネス・イベントの公開をテストし、EDLファイルの内容を表示できます。ビジネス・イベントは、EDLを使用して定義されます。EDLは、ビジネス・イベント定義の作成に使用するスキーマです。
-
次のいずれかのオプションを使用して、このページにアクセスします。
SOAインフラストラクチャのメニューから... ナビゲータのSOAフォルダから... 「ビジネス・イベント」を選択します。
「soa-infra」を右クリックして、「ビジネス・イベント」を選択します。
「ビジネス・イベント」ページに、次の詳細が表示されます。
-
特定のビジネス・イベントを検索するためのユーティリティ。名前の全部または一部を指定して「検索」アイコンをクリックします。詳細は、「weblogic」メニューの「ヘルプ」→「このページのヘルプ」をクリックします。
-
ビジネス・イベント。ネームスペース、イベント名、JMSタイプ、ビジネス・イベントとJMSトピック宛先間のマッピング、各イベントのサブスクリプション数および失敗したイベント配信数が表示されます。ビジネス・イベントは、それぞれのネームスペース内に格納されています。
-
-
「ネームスペースおよびイベント」列で、テストする特定のイベントを選択します。
-
「テスト」をクリックし、選択したイベントをテストします。このテストによって、サブスクライバが操作できるテスト・イベントを公開できます。
「テスト・イベント」ダイアログが表示されます。
-
テストに使用するXMLペイロードを指定します。
-
「公開」をクリックします。
パブリッシュが成功した場合は、次のメッセージが表示されます。
The Event published successfully
-
-
「ネームスペースおよびイベント」列で、EDLファイルを表示する特定のイベントを選択します。
-
「イベント定義の表示」をクリックし、選択したイベントのEDLファイルを表示します。
-
「OK」をクリックして、メッセージを閉じます。
-
ビジネス・イベント・サブスクライバの表示
ビジネス・イベントが公開されると、サービス・コンポーネントはそれをサブスクライブできます。ビジネス・イベントをサブスクライブしているサービス・コンポーネントを表示できます。サービス・コンポーネント・サブスクリプションは、設計時にOracle JDeveloperで作成されるため、Oracle Enterprise Manager Fusion Middleware Controlでは変更できません。
すべてのビジネス・イベントは、パブリッシャおよびサブスクライバの個々のパーティションではなく、Oracle SOA Suiteドメイン全体に適用可能です。また、ビジネス・イベントは、ビジネス・フロー・インスタンスのフロー・トレースで個々のエントリとして表示されます。
ノート:
-
SOAコンポジット・アプリケーションにビジネス・イベント・サブスクリプションが組み込まれている状況で、別のリビジョンのコンポジットをデプロイすると、そのコンポジットの全リビジョンのイベント・サブスクリプションすべてがアクティブとなり、メッセージを受信します。最新リビジョンのコンポジットのみを使用してイベントを受信するには、以前のリビジョンのコンポジットすべてをリタイア状態にすることをお薦めします。
-
リタイア状態のSOAコンポジット・アプリケーション内のBPELコンポーネントでは、BPELプロセスの非開始受信アクティビティにイベントが関連付けられていても、ビジネス・イベントを受信できません。
ビジネス・イベント・サブスクライバを表示するには:
-
次のいずれかのオプションを使用して、このページにアクセスします。
SOAインフラストラクチャのメニューから... ナビゲータのSOAフォルダから... -
「ビジネス・イベント」を選択します。
-
「soa-infra」を右クリックします。
-
「ビジネス・イベント」を選択します。
-
-
「サブスクリプション」をクリックします。
「サブスクリプション」ページに、次の詳細が表示されます。
-
特定のサブスクリプションを検索するためのユーティリティ。基準を指定して「検索」をクリックします。ネームスペースまたはイベント名に基づいて検索できます。詳細は、「weblogic」メニューの「ヘルプ」→「このページのヘルプ」をクリックします。
-
コンポーネント・サブスクリプション。イベント名、ネームスペース、イベントをサブスクライブするサービス・コンポーネント、SOAコンポジット・アプリケーション、必要に応じて定義したXPathフィルタ、一貫性レベル(保証付きまたはOneAndOnlyOne)および配信に失敗したビジネス・イベントの数が表示されます。
-
-
「サブスクリプション」のコンポーネント」列で、サービス・コンポーネントをクリックし、そのホーム・ページにアクセスします。
-
「コンポジット」列で、SOAコンポジット・アプリケーションをクリックし、そのホーム・ページにアクセスします。
Oracle JDeveloperでのビジネス・イベントの作成の詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』の「ビジネス・イベントおよびイベント配信ネットワークの使用方法」を参照してください。
ノート:
イベント・サブスクリプションに対するポリシーの実行は、このリリースではサポートされていません。ポリシーは、警告なしでビジネス・イベントをサブスクライブするサービス・コンポーネント(Oracle Mediatorなど)に対してアタッチまたはデタッチできます。ポリシーの実行は発生しないため、このアクションによるエラーはありません。
クラスタ環境におけるサブスクライバの重複メッセージの解決
SOAコンポジット・サブスクライバは、複数ノードのクラスタ内で重複イベントを受信する場合があります。これは、EDNがデフォルトのJMSタイプおよびトピック(つまり、Oracle WebLogic Server JMS)を使用している場合に発生します。これは、Oracle SOA Suiteインストールで使用されるテンプレートが、レプリケートされた(パーティション化ではなく)転送ポリシーを持つUniform Distributed WebLogic JMSトピックにデフォルトで設定され、転送ポリシーの構成をサポートしていないために起こります。
EDN JMSトピックが、クラスタ化環境においてパーティション分散トピックになるよう自動的に構成するには、EDN JMSトピックをレプリケートからパーティション化に変更します。
パーティション化されたポリシーに変更するには:
- Oracle WebLogic Server管理コンソールにログインします。
- 「ドメイン構造」で、「soainfra」→「サービス」→「メッセージング」→「JMSモジュール」→「SOAJMSModule」に移動します。
- 分散EDNトピック(dist_EDNTopic_auto)をクリックします。
- 「構成」→「全般」タブに移動します。
- ドロップダウン・リストで、「転送ポリシー」を、「レプリケート」から「パーティション化」に変更します。
Partitioned
に設定すると、メッセージを受信する物理メンバーは、メッセージを認識する共通分散トピックのメンバーのみになります。パーティション化された共通分散トピックの論理名にメッセージが公開される場合、メッセージは特定の1つの物理トピック・メンバーにのみ届きます。メッセージが物理トピック・メンバーに届くと、次のようになります。
-
メッセージは、共通分散宛先の残りのメンバーに転送されません。
-
他の物理トピック・メンバーにあるサブスクライバは、メッセージのコピーを受信しません。