ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Complex Event Processing管理者ガイド
11gリリース1 (11.1.1.6.2)
B61653-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

12 Oracle CEP用のJMXの構成

この章は、Oracle Complex Event Processing (Oracle CEP)で使用するJava Management Extensions (JMX)の構成方法を、データ・ソースの構成に関する情報と、MBeansへのアクセス、JMX構成オブジェクト、JMX APIを使用したプログラムによる接続と構成を含めて説明します。

12.1 Oracle CEPにおけるJMXサポートの概要

Oracle CEPでは、Java Management Extensions (JMX)仕様に完全に準拠した標準ベースのインタフェースが提供されます。ソフトウェア・ベンダーはこれらのインタフェースを使用して、Oracle CEP MBeanを監視し、Oracle CEPドメインの構成を変更できます。また、Oracle CEPアプリケーションを監視できます。

詳細は、次を参照してください:

12.1.1 JMX構成の理解

JMXおよびOracle CEP Mbeanを使用してOracle CEPアプリケーション、サーバー、ドメインを管理する前に、まずJMXサービスをOracle CEPサーバーで構成する必要があります。

Oracle CEPドメインを示すconfig.xmlファイルにある次の要素を使用してOracle CEP JMXサービスを構成します。

詳細は、12.2項「JMXの構成」を参照してください。

12.1.2 JMX管理の理解

Oracle CEPアプリケーションは、アダプタ、チャネル、プロセッサなどのコンポーネントで構成されたイベント処理ネットワーク(EPN)を定義します。これらのアプリケーションをドメイン内の起動済Oracle CEPインスタンスにデプロイします。


注意:

コンポーネントは「ステージ」と呼ばれることもあります(特に管理Javadocの場合)。ただし、他のOracle CEPドキュメントとの整合性を保つために、この項では「コンポーネント」という用語を使用します。


管理BeanまたはMBeansを使用してEPNの各コンポーネントを動的に構成できます。一般的な構成タスクとして、Oracle CQLまたはEPLルールの追加と削除、チャネル最大サイズの変更、通知へのサブスクライブ、様々な操作の実行といったタスクがあります。

次のいずれかを使用してMBeanを操作します:

  • Oracle CEP Visualizer: Oracle CEPのグラフィカルな管理コンソール。

    詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』を参照してください。

  • wlevs.Admin: Oracle CEPのコマンドラインの管理ユーティリティ。

    詳細は、付録A「wlevs.Adminコマンドライン・リファレンス」を参照してください。

  • デプロイヤ: Oracle CEPのコマンドラインのデプロイメント・ユーティリティ。

    詳細は、付録B「デプロイヤ・コマンドライン・リファレンス」を参照してください。

  • jconsole: Java JDKが提供するJMXコンソール。

  • 標準のJMX APIを使用した独自のJavaコード: http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement

この項では次の内容について説明します。

詳細は、次を参照してください:

12.1.2.1 Oracle CEP JMXサーバーへのアクセス

Oracle CEP MBeanにアクセスするには、まずOracle CEP JMXサーバーに接続する必要があります。

Oracle CEPでは、JRMPプロトコルがサポートされていません。かわりに、JMXクライアントでは、Oracle CEP JMXサーバーにローカルおよびリモートからアクセスするために、よりセキュアなMSAプロトコルを使用する必要があります。

localhost上またはリモート・ホスト上で稼働するOracle CEP JMXサーバーに接続する場合、そのOracle CEPサーバーに接続するホストのクライアント・クラス・パスに、次のOracle CEPサーバーJARファイルをコピーする必要があります。

  • ORACLE_CEP_HOME\modules\com.bea.core.jmx_8.0.0.0.jar

  • ORACLE_CEP_HOME\modules\com.bea.core.rmi_7.0.0.0.jar

  • ORACLE_CEP_HOME\modules\com.bea.core.jndi.context_8.0.0.0.jar

  • ORACLE_CEP_HOME\modules\com.bea.core.logging_1.8.0.0.jar

  • ORACLE_CEP_HOME\modules\com.bea.core.bootbundle_11.0.0.0.jar

ORACLE_CEP_HOMEはOracle CEP(例d:\oracle_home)がインストールされているディレクトリです。

次のコマンド・ライン・オプションおよびクラスパスを使用してJMXクライアント(jconsoleなど)を起動する必要があります(読みやすくするために区切ってありますが、実際にはコマンドは1行にする必要があります)。

prompt> java -Djmx.remote.protocol.provider.pkgs=com.bea.core.jmx.remote.provider 
-Dmx4j.remote.resolver.pkgs=com.bea.core.jmx.remote.resolver 
-Djava.naming.factory.initial=com.bea.core.jndi.context.ContextFactory 
-classpath %JAVA_HOME%\lib\jconsole.jar;MODULE_HOME\modules\com.bea.core.jmx_8.0.0.0.jar;
MODULE_HOME\modules\com.bea.core.rmi_7.0.0.0.jar;MODULE_HOME\modules\com.bea.core.jndi.context_7.0.0.0.jar;
MODULE_HOME\modules\com.bea.core.logging_1.5.0.0.jar;MODULE_HOME\modules\com.bea.core.bootbundle_8.0.0.0.jar 
sun.tools.jconsole.JConsole 

MODULE_HOMEはOracle CEPサーバーJARファイルをコピーしたディレクトリです。

Oracle CEP JMXサーバーに接続する場合、常にMSAコネクタを使用するように、必ずJMX URL service:jmx:msarmi://HOST-NAME:port/jndi/jmxconnectorを使用する必要があります(HOST-NAMElocalhostまたはリモート・ホスト名で、portはOracle CEPサーバーのJNDIポートです)。

詳細は、次を参照してください:

12.1.2.2 構成MBeanへのアクセス

MBeanを使用して、サーバー、ドメイン、およびデプロイ済みアプリケーションの一部の構成とアプリケーション・ライフ・サイクル管理を実行することもできますが、この節では主に個々のアプリケーション・コンポーネントの構成について説明します。ただし、サーバー、ドメイン、およびアプリケーションの構成もMBeanを使用して行うので、この節に示す情報の大部分があてはまります。

デプロイ済アプリケーション(アダプタ、チャネル、またはプロセッサ)の各コンポーネントには、基になるコンポーネントの構成を管理する構成MBeanが指定されています。コンポーネント・タイプごとに、管理可能な独自のアーティファクトがあります。たとえば、チャネルの最大スレッド数やプロセッサに関連付けられたOracle CQLルールを動的に構成できます。

12.1.2.3 Oracle CEPランタイムMBeanへのアクセス

ランタイムMBeanで、EPNの各コンポーネントに監視情報を収集することができます。監視情報にはスループット(イベントのコンポーネント通過数)と待機時間(イベントのコンポーネント通過時間)が含まれます。

12.1.3 Oracle CEP MBeanの理解

Oracle CEPでは以下のタイプのMBeanが公開されています。

  • 構成MBean: EPNのコンポーネントの構成、デプロイ済Oracle CEPアプリケーション、サーバーおよびドメインの構成についての情報が含まれます。構成MBeanは固定の管理インタフェースを持ち、ドメインのconfig.xmlファイルおよびコンポーネントの構成XMLファイルに含まれている情報を表します。標準MBeanの例として、CQLProcessorMBeanEventChannelMBeanがあります。

  • ランタイムMBean: コンポーネントのスループットと待機時間についての情報が含まれます。

Oracle CEP MBeanおよび一般的な管理の詳細なリファレンスは、『Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンス』の次に示すクラスを参照してください。

  • com.bea.wlevs.management.configuration

  • com.bea.wlevs.management.runtime

  • com.bea.wlevs.monitor.management

  • com.bea.wlevs.monitor

  • com.bea.wlevs.processor.epl.management

  • com.bea.wlevs.deployment.mbean

この項では次の内容について説明します。

12.1.3.1 Oracle CEP構成MBean

Oracle CEPアプリケーションをデプロイすると、管理容易性が有効になっているEPNの各コンポーネント(つまり、EPNアセンブリ・ファイルに登録されている各コンポーネント)について、構成MBeanがサーバーによって自動的に作成されます。アダプタの構成を拡張した場合、アダプタ用のカスタム構成MBeanがデプロイされます。

JMXを使用すると、コンポーネントの構成MBeanを使用してコンポーネントを動的に構成できます。たとえば、StreamMBean.setMaxSize()メソッドを使用してチャネル・コンポーネントのサイズを設定できます。

12.1.3.1.1 構成MBeanのネーミング

Oracle CEP構成MBeanは階層構造に編成されています。各MBeanのオブジェクト名は階層内でのそのMBeanの位置を表しています。一般的なオブジェクトのネーミング・パターンは次のとおりです。

com.bea.wlevs:Name=name,Type=type,[TypeOfParentMBean=NameOfParentMBean]

説明:

  • com.bea.wlevs:はJMXドメイン名です。

  • Name=name,Type=type,[TypeOfParentMBean=NameOfParentMBean]は、一連のJMXキー・プロパティです。

キー・プロパティの順序は重要ではありませんが、オブジェクト名はcom.bea:wlevs:で開始する必要があります。

たとえば、ドメイン内のアプリケーションmyapplicationmyprocessorと呼ばれるプロセッサがある場合、そのプロセッサに対応するMBeanのオブジェクト名は次のようになります。

com.bea.wlevs:Name=myprocessor,Type=EPLProcessor,Application=myapplication

表12-1は、Oracle CEPがMBeanオブジェクト名にエンコードするキー・プロパティについて説明します。

表12-1 Oracle CEP MBeanオブジェクト名のキー・プロパティ

キー・プロパティ 指定する対象
Name=name

MBeanによって表されるリソースを作成したときに指定した文字列。通常はコンポーネントの名前です。

EPNアセンブリ・ファイル内に特定のコンポーネントの名前を指定するには、コンポーネント登録のid属性を使用します。

たとえばプロセッサの場合、EPNアセンブリ・ファイル内のエントリは次のようになります。

<wlevs:processor id="myprocessor" advertise="true" />

この場合、キー プロパティはName=myprocessorになります。

Type=type

MBeanのタイプの短縮名。短縮名はMBean接尾辞を付けない未修飾のタイプ名です。

たとえば、MBeanがCQLProcessorMBeanのインスタンスである場合は、CQLProcessorを使用します。この場合、キー・プロパティはType=CQLProcessorになります。

TypeOfParentMBean=NameOfParentMBean

親MBeanのタイプと名前を指定します。

コンポーネントの場合は、常にApplication=application_nameとなります。application_nameは、コンポーネントが属するアプリケーションの名前です。

特定のOracle CEPアプリケーションの名前は、アプリケーション・バンドルに含まれるMANIFEST.MFファイルのBundle-SymbolicNameヘッダーで指定します。たとえば、アプリケーションに次のようなMANIFEST.MFのスニペットが指定されている場合(関連する部分のみを示します):

Manifest-Version: 1.0
Archiver-Version:
Build-Jdk: 1.5.0_06
....
Bundle-SymbolicName: myapplication

この場合、キー・プロパティはApplication=myapplicationになります。


表12-2は、HelloWorldサンプルEPNアセンブリ・ファイルでのコンポーネント宣言に対応した構成MBeanオブジェクト名の例を示しています。個々の例で、アプリケーション名はhelloworldであり、ドメイン名はmydomainです。

表12-2 コンポーネント宣言の例および対応するMBeanオブジェクト名

EPNアセンブリ・ファイルでのコンポーネント宣言 対応する構成MBeanオブジェクト名
<wlevs:processor id="helloworldProcessor" />
com.bea.wlevs:Name=helloworldProcessor,Type=EPLProcessor,Application=helloworld,Domain=mydomain

EPLProcessorは、プロセッサ・コンポーネントの標準構成MBeanです。管理可能なプロパティはrulesです。

<wlevs:channel id="helloworldInstream">
  <wlevs:listener ref="helloworldProcessor"/>
  <wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>
com.bea.wlevs:Name=helloworldInstream,Type=Channel,Application=helloworld,Domain=mydomain

Channelは、チャネル・コンポーネントの標準構成MBeanです。管理可能なプロパティはMaxSizeMaxThreadsです。


12.1.3.2 Oracle CEPランタイムMBean

ランタイムMBeanで、EPNの各コンポーネントに監視情報を収集することができます。Oracle CEPサーバーは各コンポーネントで監視できる次のメトリクスを定義します。

  • スループット - コンポーネントで処理されるイベント数。このメトリックのパラメータは、スループット時間間隔、集約時間間隔、間隔を表す時間の単位です。

  • 平均待機時間 - イベントがコンポーネントまたは待機時間を通過するのにかかる平均時間。パラメータ: 集計時間間隔、その間隔の時間単位。

  • 最大待機時間 - イベントがコンポーネントを通過するのにかかる最大時間。パラメータ: 集計時間間隔、その間隔の時間単位。

  • 平均待機時間のしきい値 - コンポーネントの開始点と終了点の間のイベントの平均待機時間が指定されたしきい値を超えたかどうかを指定します。パラメータ:集約時間間隔、しきい値、間隔を表す時間の単位。

12.1.3.2.1 ランタイムMBeanのネーミング

ランタイムMBeanの命名には、構成MBeanと同じパターンが使用されDirectionというプロパティが1つ余分にあります。このプロパティには有効な値が2つあります。どの時点で統計を収集するかを指定するOUTBOUNDINBOUNDです。OUTBOUNDは、指定したコンポーネントをイベントが離れたときにスループットと待機時間を収集することを示します。同様に、INBOUNDは、イベントがコンポーネントに入ったときに監視情報を収集することを示します。

たとえば、イベントがコンポーネントに入ったときにイベントを監視するアプリケーションmyapplicationmyprocessorと呼ばれるプロセッサがある場合、そのプロセッサに対応するランタイムMBeanのオブジェクト名は次のようになります。

com.bea.wlevs:Name=myprocessor,Type=EPLProcessor,Application=myapplication,Direction=INBOUND

構成MBeanのネーミングの詳細は、12.1.3.1.1項「構成MBeanのネーミング」を参照してください。

12.1.3.3 Oracle CEP MBeanの階層

図12-1は、Oracle CEP MBeanツリーを表しています。

図12-1 Oracle CEP MBeanツリー

図12-1の説明が続きます
「図12-1 Oracle CEP MBeanツリー」の説明

すべてのMBeanは、タイプjavax.management.ObjectNameのオブジェクト名でMBeanサーバーに登録されている必要があります。Oracle CEPは、子MBeanのオブジェクト名が親MBeanオブジェクト名の一部を含むという規則に準拠します。

DomainMBeanおよびDomainRuntimeMBeanという主要な2つのMBeanルートがあります。前者にはドメイン全体の構成MBeanが含まれ、後者には、通常は単一のサーバー・インスタンスをスコープとするランタイム情報(統計など)とローカル・サービス(監視など)が含まれます。

ApplicationMBeanDomainMBeanの子であり、ServerMBeanの子ではありません。アプリケーションはドメイン内で一意であり、複数のサーバーにまたがって実行できるためです。

図12-2は、オブジェクト・モデルを構成する主なクラスと関係を示しています。

図12-2 Oracle CEP MBeanオブジェクト・モデル

図12-2の説明が続きます
「図12-2 Oracle CEP MBeanオブジェクト・モデル」の説明

ほとんどのMBeanは通知を送信するエミッタであり、AttributeChangeNotificationsを生成します。つまり、JMXクライアントは、アプリケーション状態の変更、ドメインでのアプリケーションの挿入と削除、チャネル・サイズとスレッドの変更、ルールの挿入と削除などに関する属性変更通知を受け取るように登録できます。

12.2 JMXの構成

Oracle CEPドメインを記述するconfig.xmlファイルの、次の要素を使用してOracle CEP JMXサービスを構成します。

JMXに影響するセキュリティ構成タスクの詳細は、10.8.2項「JMXセキュリティの構成」を参照してください。

詳細は、次を参照してください:

12.2.1 jmx構成オブジェクト

表12-3は、構成が必要とされるconfig.xmlファイルのjmx要素のリストを示しています。

表12-3 jmx要素の構成パラメータ

パラメータ タイプ 説明
rmi-service-name 
String

jmxサーバーが呼出しの受信のために登録するRMIサービス名。

jndi-service-name
String

jmxサーバーがオブジェクトをバインドするJNDIサービス名。


12.2.2 rmi構成オブジェクト

Oracle CEP RMIサービスには次の機能があります。

  • クライアントからのリモート・メソッド呼出しのためにサーバーのPOJOインタフェースを登録する機能。

  • リモート・メソッド呼出し時にクライアントからサーバーへのコンテキスト伝播が行われるように登録し、インターセプトして、サーバー内のこの伝播されたコンテキストを操作する機能。

表12-4は、リモート・クライアントへのサーバー側オブジェクトのエクスポートに使用するconfig.xmlファイルのrmi要素の子要素のリストを示しています。

表12-4 rmi要素の構成パラメータ

パラメータ タイプ 説明
heartbeat-period
int

ハートビートの試行失敗回数。この回数を超えると、登録されているすべてのリスナーへの切断通知がトリガーされます。

http-service-name
String

リモート・オブジェクトの登録に使用するHTTPサービス名(たとえば、Jettyなど。詳細は、11.1項「Oracle Complex Event ProcessingのJettyサポートの概要」を参照してください)。

heartbeat-interval
int

ハートビートの間隔(ミリ秒単位)。

失敗したハートビートの試行回数がHeartbeatPeriodパラメータに指定した値に達すると、登録されているすべてのDisconnectListenerインスタンスが通知を受け取ります。

name
String

この構成オブジェクトの名前。


12.2.3 jndi-context構成オブジェクト

JNDIファクトリ・マネージャは、OSGi環境でJNDIをサポートする役割を果たします。これにより、JNDIプロバイダがOSGiバンドルとして提供され、OSGiバンドルの内部で実行されるコードからJNDI環境への完全なアクセスが可能になります。

ファクトリ・マネージャは、次の2つのコンポーネントで構成されています。

  • OSGiバンドルはOSGi固有のファクトリ管理コードを提供し、適切なOSGiクラス・ローダーを使用してJNDIオブジェクトをルックアップします。

  • JNDIの「グルー・コード」はOracle CEP内部で動作し、ファクトリ・マネージャ・バンドルをサポートできるようにJNDI環境を初期化します。

表12-5は、構成が必要とされるconfig.xmlファイル内のjndi-context要素の子要素のリストを示しています。

図12-5 jndi-context要素の構成パラメータ

パラメータ タイプ 説明
default-provider
boolean

trueの場合、デフォルトのOracle CEP JNDIプロバイダが使用されます。

デフォルト値はtrueです。

name
String

この構成オブジェクトの名前。


12.2.4 exported-jndi-context構成オブジェクト

構成された12.2.3項「jndi-context構成オブジェクト」が必要です。

RMIを使用しているクライアントにリモートJNDIサービスをエクスポートするには、この構成オブジェクトを使用します。JNDIコンテキストをRMIサービスに登録することにより、InitialContextオブジェクトで、プロバイダURLのパラメータを渡すクライアントへのリモート・アクセスが提供されます。

表12-6は、構成が必要とされるconfig.xmlファイル内のexported-jndi-context要素の子要素のリストを示しています。

表12-6 exported-jndi-context要素の構成パラメータ

パラメータ タイプ 説明
rmi-service-name
String

このJNDIコンテキストをネットワークで処理するために使用されるRMIサービスの名前。既存の<rmi>構成オブジェクトと一致する必要があります。詳細は、12.2.2項「rmi構成オブジェクト」を参照してください。

name
String

この構成オブジェクトの名前。

この要素の値は、同じconfig.xmlファイル内にある<jndi-context><name>子要素の値とは異なっている必要があります。


12.2.5 JMX構成の例

例12-1は、JMX構成に関するconfig.xmlのスニペットの例です - ファイルの関連する部分のみを示します。

例12-1 JMX構成

<config>
  <netio>
    <name>JettyNetio</name>
    <port>12345</port>
  </netio>
  <work-manager>
    <name>WM</name>
    <fairshare>5</fairshare>
    <min-threads-constraint>1</min-threads-constraint>
    <max-threads-constraint>4</max-threads-constraint>
  </work-manager>
  <jetty>
    <name>TestJetty</name>
    <work-manager-name>WM</work-manager-name>
    <network-io-name>JettyNetio</network-io-name>
  </jetty>
  <rmi>
    <name>RMI</name>
    <http-service-name>TestJetty</http-service-name>
  </rmi>
  <jndi-context>
    <name>JNDI</name>
  </jndi-context>
  <exported-jndi-context>
    <name>exportedJNDI</name>
    <rmi-service-name>RMI</rmi-service-name>
  </exported-jndi-context>
  <jmx>
    <jndi-service-name>JNDI</jndi-service-name>
    <rmi-service-name>RMI</rmi-service-name>
  </jmx>
</config>

12.3 JMXによる管理

この項では、次のように、JMXを使用したOracle CEPコンポーネントの管理の例を説明します。


注意:

Jconsoleを使用する際、Oracle CEP wlevsjconsole.cmdまたはwlevsjconsole.shスクリプトで開始します。jconsoleを直接開始できません。


詳細は、次を参照してください:

12.3.1 Oracle以外のCEPクライアントからOracle CEP JMXサーバーへのプログラムで接続する方法

この項では、Oracle以外のCEPクライアントからOracle CEP JMXサーバーに接続する際のJMX API (http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement)を使用したJavaコードの記述方法を説明します。これはあらゆるプログラマチックJMX管理への最初のステップです。

Oracle CEP JMXサーバーに別のOracle CEPサーバーから接続する際の情報は、12.3.2項「Oracle CEPクライアントからOracle CEP JMXサーバーにプログラムで接続する方法」を参照してください。

Oracle以外のCEPクライアントからOracle CEP JMXサーバーにプログラムで接続するには:

  1. 使用するドメインにJMXサービスを構成したことを確認します。

    詳細は、12.2項「JMXの構成」を参照してください。

  2. http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement Javaコードを記入し、適切なMBeanでコンポーネントを構成します。

    次のJMXのプログラミングのヒントを考慮します。

    例12-2で示すように、JMXプログラムでは、まずOracle CEPサーバーで実行中のJMXサーバーへの接続を確立します。

    例12-2 Oracle CEP JMXサーバーへの接続の確立

    public static void initConnection(String hostname, int port, String username, char[] password) 
      throws IOException,MalformedURLException {
    
      Map<String,Object> env = makeSecureEnv();
      env.put("jmx.remote.protocol.provider.pkgs","com.bea.core.jmx.remote.provider");
      env.put("mx4j.remote.resolver.pkgs","com.bea.core.jmx.remote.resolver");
      env.put("java.naming.factory.initial","com.bea.core.jndi.context.ContextFactory");
    
      JMXServiceURL serviceUrl = new JMXServiceURL(
          "MSARMI","localhost",9002,"/jndi/jmxconnector"
      );
    
      System.out.println("Service: " + serviceURL.toString());
    
      JMXConnector connector = JMXConnectorFactory.connect(serviceUrl,env);
    
      MBeanServerConnection connection = connector.getMBeanServerConnection();
    }
    
    // The JMXConnectorFactory.connect() method's second parameter is a Map object that sets up a
    // secure environment using the makeSecureEnv() method, which looks like the following:
    
    private static Map<String,Object> makeSecureEnv() {
        Map<String,Object> env = new HashMap<String,Object>();
        String username = "wlevs" ;
        char[] password = { 'w','l','e','v','s' };
        env.put(JMXConnector.CREDENTIALS, new Serializable[]{username,password});
        env.put("jmx.remote.authenticator", "com.bea.core.jmx.server.CEAuthenticator");
        System.setProperty("jmx.remote.authenticator", "com.bea.core.jmx.server.CEAuthenticator");
        return env;
    }
    

12.3.2 Oracle CEPクライアントからOracle CEP JMXサーバーへプログラムで接続する方法

この項では、Oracle CEP JMXサーバーに、別のOracle CEPサーバーから接続する際の、JMX API (http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement)を使用したJavaコードの記述方法を説明します。これはあらゆるプログラマチックJMX管理への最初のステップです。

Oracle CEP JMXサーバーに別のOracle以外のCEPクライアントから接続する際の情報は、12.3.1項「Oracle以外のCEPクライアントからOracle CEP JMXサーバーへのプログラムで接続する方法」を参照してください。

Oracle CEPクライアントからOracle CEP JMXサーバーにプログラムで接続には:

  1. 使用するドメインにJMXサービスを構成したことを確認します。

    詳細は、12.2項「JMXの構成」を参照してください。

  2. http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement Javaコードを記入し、適切なMBeanでコンポーネントを構成します。

    次のJMXのプログラミングのヒントを考慮します。

    例12-2で示すように、JMXプログラムでは、まずOracle CEPサーバーで実行中のJMXサーバーへの接続を確立します。

    例12-3 Oracle CEP JMXサーバーへの接続の確立

    public static void initConnection(String hostname, int port, String username, char[] password) 
      throws IOException,MalformedURLException {
    
      Map<String,Object> env = makeSecureEnv();
    
      // This is an OSGi necessity
      env.put(
          JMXConnectorFactory.DEFAULT_CLASS_LOADER,
          com.bea.core.jmx.remote.provider.msarmi.ServerProvider.class.getClassLoader()
      );
      env.put(
          JMXConnectorFactory.PROTOCOL_PROVIDER_CLASS_LOADER,
          com.bea.core.jmx.remote.provider.msarmi.ServerProvider.class.getClassLoader()
      );
    
      JMXServiceURL serviceUrl = new JMXServiceURL(
          "MSARMI","localhost",9002,"/jndi/jmxconnector"
      );
    
      System.out.println("Service: " + serviceURL.toString());
    
      env.put(
          JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, 
          "com.bea.core.jmx.remote.provider"
      );
    
      System.setProperty("mx4j.remote.resolver.pkgs", "com.bea.core.jmx.remote.resolver");
     
      JMXConnector connector = JMXConnectorFactory.connect(url, env);
      connector.connect();
     
      MBeanServerConnection connection = connector.getMBeanServerConnection();
      ...
    }
    
    // The JMXConnectorFactory.connect() method's second parameter is a Map object that sets up a
    // secure environment using the makeSecureEnv() method, which looks like the following:
    
    private static Map<String,Object> makeSecureEnv() {
        Map<String,Object> env = new HashMap<String,Object>();
        String username = "wlevs" ;
        char[] password = { 'w','l','e','v','s' };
        env.put(JMXConnector.CREDENTIALS, new Serializable[]{username,password});
        env.put("jmx.remote.authenticator", "com.bea.core.jmx.server.CEAuthenticator");
        System.setProperty("jmx.remote.authenticator", "com.bea.core.jmx.server.CEAuthenticator");
        return env;
    }
    

12.3.3 JMX APIを使用してOracle CEPコンポーネントをプログラムで構成する方法

この項では、Oracle CEP MBeanにアクセスする際の、JMX API (http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement)を使用したJavaコードの記述方法を説明します。

JMX APIを使用してOracle CEPコンポーネントをプログラムで構成するには:

  1. Oracle CEP JMXサーバーへの接続を取得します。

    詳細は、12.3.1項「Oracle以外のCEPクライアントからOracle CEP JMXサーバーにプログラムで接続する方法」を参照してください。

  2. http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement Javaコードを記入し、適切なMBeanでコンポーネントを構成します。

    次のJMXのプログラミングのヒントを考慮します。

    例12-4では、MBeanへの問合せによって、ドメインとドメインのデプロイ済アプリケーションについての情報の取得を開始する方法が示されています。

    最初に、タイプがDomainであるすべてのMBeanを取得する方法が示されています。そのようなMBeanは1つのみです。次に、DomainMBeanを使用して、ドメインにデプロイされているすべてのアプリケーションのリストを取得する方法が示されています(ApplicationMBeanを使用)。

    例12-4 MBeanへの問合せ

    Set domainObjectNames = connection.queryMBeans(
        ObjectName.getInstance(
            ManagementConstants.DOMAIN_NAME + ":" + 
            ManagementConstants.TYPE_PROPERTY + "=" + 
            DomainMBean.MBEAN_TYPE + ",*"
        ), 
        null
    );
    ObjectName domainName =  ((ObjectInstance) domainObjectNames.iterator().next()).getObjectName();
    System.out.println("Domain Name: " + domainName.getKeyProperty(ManagementConstants.NAME_PROPERTY));
    ObjectName [] applicationNames =
         (ObjectName[]) connection.getAttribute(domainName, "ApplicationMBeans");
    ObjectName selectedApplicationObjectName = null ;
    for (ObjectName applicationName : applicationNames) {
       String name = 
         applicationName.getKeyProperty(ManagementConstants.NAME_PROPERTY);
       String status =
         (String) connection.getAttribute(applicationName, "State");
        System.out.println("Application: " + name + " Status: " + status);
        selectedApplicationObjectName = applicationName ;
    }
    

12.3.4 JMX APIを使用してOracle CEPコンポーネントのスループットと待機時間をプログラムで監視する方法

この項では、Oracle CEP MBeanにアクセスしてOracle CEPコンポーネントのスループットと待機時間を動的に監視する場合のJMX API (http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement)を使用したJavaコードの記述方法を説明します。

JMX APIを使用してOracle CEPコンポーネントを動的に構成するには:

  1. Oracle CEP JMXサーバーへの接続を取得します。

    詳細は、12.3.1項「Oracle以外のCEPクライアントからOracle CEP JMXサーバーにプログラムで接続する方法」を参照してください。

  2. 例12-5で示すように監視するコンポーネントにはMonitorRuntimeMBeanのインスタンスを取得します。

    例12-5 MonitorRuntimeMBeanのインスタンスの取得

    ObjectName processorInbound = ObjectName.getInstance(
        "com.bea.wlevs:Name=myprocessor," +
        "Type=CQLProcessor," +
        "Application=myapplication," +
        "Direction=INBOUND"
    );
    

    着信イベント(INBOUND)または発信イベント(OUTBOUND)のどちらを監視するのかを必ず指定します。例:

  3. 例12-6で示すように統計のタイプに応じてMonitorRuntimeMBeanを使用して、ProbeRuntimeMBeanのインスタンスを取得します。

    例12-6 ProbeRuntimeMBeanのインスタンスの取得

    ObjectName monitorName =
        ObjectName.getInstance(
            "com.bea.wlevs:ServerRuntime=localhost," +
            "Name=MonitorRuntime," +
            "Type=MonitorRuntime");
    
    MonitorRuntimeMBean monitorMBean =     (MonitorRuntimeMBean)MBeanServerInvocationHandler.newProxyInstance( 
            connection,
            monitorName,
            MonitorRuntimeMBean.class,
            false);
    
    ObjectName probeName = monitorMBean.monitorAvgThroughput(
        processorInbound,
        1000,
        1000
    );
    
    ProbeRuntimeMBean probeOn = (ProveRuntimeMBean)MBeanServerInvocationHandler.newProxyInstance(
        connection,
        probeName,
        ProbeRuntimeMBean.class,
        false
    );
    

    MonitorRuntimeMBeanには、収集可能な統計のタイプごとに使用できるメソッドがあります。たとえば、平均待機時間を監視する場合はmonitorAvgLatency()を実行し、平均待機時間を監視する場合はmonitorAvgThroughput()を実行します。これらのメソッドはすべてProbeRuntimeMBeanを返します。

  4. ProbeRuntimeMbeanのインスタンスを使用して、実際の実行時メトリックを取得するには次のいずれかの方法があります。

    1. ProbeRuntimeMBeangetMetric()メソッドを使用して情報を取得します。

    2. javax.management.NotificationBroadcaster.addNotificationListener()を使用して、メトリックに変更があるたびに送信される情報を取得します。

  5. 監視情報の収集が完了したら、例12-7で示すようにMBeanサーバーからMBeanを登録解除します。

    例12-7 MBeanの登録解除

    probON.terminate();
    

    これらのMBeanインタフェースの詳細、およびこれらのMBeanインタフェースを使用してスループットと待機時間を監視する方法については、『Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンス』com.bea.wlevs.monitor.managementパッケージを参照してください。

12.3.5 セキュリティが有効なJconsoleを使用してローカルまたはリモートOracle CEP JMXサーバーに接続する方法

wlevsjconsoleスクリプトを使用して、ローカル・ホストまたはリモート・ホストで実行されているOracle CEP JMXサーバーに接続し、JDK jconsoleでOracle CEP MBeanのブラウズと管理ができます。

この方法は、Oracle CEPサーバーのセキュリティが有効の場合、Jconsoleをどのように使用するかを説明します。これはデフォルトの構成であり、本番サーバーで使用することはお薦めします。かわりに、セキュリティが無効なJMXサーバーに接続できます。(詳細は、12.3.6項「セキュリティが無効な状態でJconsoleを使用してローカルまたはリモートOracle CEP JMXサーバーに説億する方法」を参照してください。)

詳細は、12.1.2.1項「Oracle CEP JMXサーバーへのアクセス」を参照してください。


注意:

Jconsoleを使用する際、Oracle CEP wlevsjconsole.cmdまたはwlevsjconsole.shスクリプトで開始します。jconsoleを直接開始できません。


セキュリティが有効のJconsoleを使用してローカルまたはリモートのOracle CEP JMXサーバーに接続するには:

  1. ローカルまたはリモートOracle CEPサーバーを実行したことを確認します。

  2. コマンド・ウィンドウを開き、環境を設定します。『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項を参照してください。

  3. ORACLE_CEP_HOME/ocep_11.1/binディレクトリのwlevsjconsole.cmdまたはwlevsjconsole.shスクリプトを使用してjconsoleを起動します。ここではORACLE_CEP_HOMEはOracle CEP (例/oracle_home)がインストールされたディレクトリを参照します。

    1. ローカルOracle CEPサーバーに接続するには次を入力します。

      prompt> wlevsjconsole.cmd
      
    2. リモートOracle CEPサーバーに接続するには次を入力します。

      prompt> wlevsjconsole.cmd HOST-NAME:PORT
      

      HOST-NAMEはリモート・ホストの名前、PORTはNetIOポートで、リモート・ホストのORACLE_CEP_HOME/user_projects/domains/DOMAIN-NAME/defaultserver/config/config.xmlファイル中に構成されています。

    jconsoleブラウザはJMXサーバーへログインをしようとしますが、図12-3で示すように最初に失敗します。

    図12-3 Jconsole初回ログイン試行

    図12-3の説明が続きます
    「図12-3 Jconsole初回ログイン試行」の説明

  4. 「取消」をクリックします。

    図12-4で示すように、Jconsole:「新しい接続」ダイアログが表示されます。

    図12-4 Jconsoleの新しい接続ダイアログ

    図12-4の説明が続きます
    「図12-4 Jconsole:「新しい接続」ダイアログ」の説明

  5. 表12-7で説明するように「新しい接続」ダイアログを構成します。

    表12-7 Jconsole新しい接続属性

    属性 説明

    リモート・プロセス

    以下のURLを入力します:

    service:jmx:msarmi://HOST-NAME:PORT/jndi/jmxconnector
    

    HOST-NAMEはローカル・ホストまたはリモート・ホストの名前、PORTはNetIOポートで、リモート・ホストのORACLE_CEP_HOME/user_projects/domains/DOMAIN-NAME/defaultserver/config/config.xmlファイル中に構成されています(デフォルト: 9002)。

    「ユーザー名」

    Oracle CEP管理パスワードを入力します。

    デフォルト: wlevs

    「パスワード」

    選択したOracle CEP管理パスワードを入力します。

    デフォルト: wlevs


  6. 「接続」をクリックします。

    jconsoleブラウザが開くと、図12-6で示すようにOracle CEP MBeanにアクセスできます。

    図12-5 Jconsoleブラウザ

    図12-5の説明が続きます
    「図12-5 JConsoleブラウザ」の説明

12.3.6 セキュリティが無効なJconsoleを使用してローカルまたはリモートOracle CEP JMXサーバーに接続する方法

wlevsjconsoleスクリプトを使用して、ローカル・ホストまたはリモート・ホストで実行されているOracle CEP JMXサーバーに接続し、JDK jconsoleでOracle CEP MBeanのブラウズと管理ができます。

この手順は、Oracle CEPサーバーのセキュリティが無効の場合のJconsoleの使用方法を説明します。これは共通の開発構成でり、本番サーバーで使用することはお薦めしません。かわりに、セキュリティが有効なJMXサーバーに接続できます(詳細は、12.3.5項「セキュリティが有効な状態でJconsoleを使用してローカルまたはリモートOracle CEP JMXサーバーに接続する方法」を参照してください)。

詳細は、12.1.2.1項「Oracle CEP JMXサーバーへのアクセス」を参照してください。


注意:

Jconsoleを使用する際、Oracle CEP wlevsjconsole.cmdまたはwlevsjconsole.shスクリプトで開始します。jconsoleを直接開始できません。


セキュリティが無効のJconsoleを使用してローカルまたはリモートのOracle CEP JMXサーバーに接続するには:

  1. セキュリティが無効の状態でローカルまたはリモートのOracle CEPサーバーを実行します。

    詳細は、10.11項「セキュリティの無効化」を参照してください。

  2. コマンド・ウィンドウを開き、環境を設定します。『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項を参照してください。

  3. ORACLE_CEP_HOME/ocep_11.1/binディレクトリのwlevsjconsole.cmdまたはwlevsjconsole.shスクリプトを使用してjconsoleを起動します。ここではORACLE_CEP_HOMEはOracle CEP (例/oracle_home)がインストールされたディレクトリを参照します。

    1. ローカルOracle CEPサーバーに接続するには次を入力します。

      prompt> wlevsjconsole.cmd
      
    2. リモートOracle CEPサーバーに接続するには次を入力します。

      prompt> wlevsjconsole.cmd HOST-NAME:PORT
      

      HOST-NAMEはリモート・ホストの名前、PORTNetIOポートで、リモート・ホストのORACLE_CEP_HOME/user_projects/domains/DOMAIN-NAME/defaultserver/config/config.xmlファイル中に構成されています。

    スクリプトが自動的にJMXサーバーに接続し、jconsoleブラウザが開くと、図12-6で示すようにOracle CEP Mbeanにアクセスできます。

    図12-6 Jconsoleブラウザ

    図12-6の説明が続きます
    「図12-6 JConsoleブラウザ」の説明