プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Event Processingの管理
12c リリース(12.1.3)
E57532-04
目次へ移動
目次

前
前へ
次
次へ

11 JMX

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

この章の内容は次のとおりです。

11.1 MBean使用法

ソフトウェア開発者は、MBeanインタフェースを実装して、顧客のインストールで管理者によって使用されるOracle Event Processing管理コンソールを設計および開発します。 MBeanによって、開発者はEPNコンポーネントを動的に構成し、サーバー、ドメイン、およびアプリケーション構成とライフ・サイクル管理を実行できます。EPN構成タスクとして、Oracle CQLまたはルールの追加と削除、チャネル最大サイズの変更、通知へのサブスクライブ、様々な操作の実行といったタスクがあります。

現在、ローカルまたはリモート・サーバーでアプリケーション・ライブラリをデプロイおよびアンデプロイするためのMBeanサポートはありません。詳細は、「デプロイヤ・コマンドライン・リファレンス」を参照してください。

次のいずれかのツールを使用してMBeanを操作できます。

11.2 Oracle Event Processing JMXサーバーへのアクセス

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

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

localhostまたはリモート・ホストで実行されているOracle Event Processing JMXサーバーに接続するとき、Oracle Event Processingサーバーへの接続元にするホストのクライアント・クラス・パスに、次のOracle Event ProcessingサーバーJARファイルをコピーする必要があります。

  • Oracle\Middleware\my_oep\oep\wlserver\modules\com.bea.core.jmx_13.0.0.0.jar

  • Oracle\Middleware\my_oep\oep\wlserver\modules\com.bea.core.rmi_13.0.0.0.jar

  • Oracle\Middleware\my_oep\oep\wlserver\modules\com.bea.core.jndi.context_13.0.0.0.jar

  • Oracle\Middleware\my_oep\oep\wlserver\modules\com.bea.core.logging_3.0.0.0.jar

  • Oracle\Middleware\my_oep\oep\wlserver\modules\com.bea.core.bootbundle_13.0.0.0.jar

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

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_13.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_HOMEOracle Event ProcessingサーバーJARファイルをコピーしたディレクトリです。

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

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

11.3 MBeanのタイプ

Oracle Event Processingでは、構成および実行時MBeanが公開されています。

構成MBeanには、EPNコンポーネント、デプロイ済アプリケーション、サーバーおよびドメインに関する構成情報が含まれます。構成MBeanは固定の管理インタフェースを持ち、サーバーのconfig.xmlファイルおよびコンポーネントの構成ファイルに含まれている情報を表します。CQLProcessorMBeanおよびEventChannelMBeanは、構成MBeanの例です。

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

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

特定のMBeanの詳細は、Oracle Event Processing Java APIリファレンスを参照してください。

11.3.1 構成MBean

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

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

11.3.2 構成MBeanのネーミング

Oracle Event Processing構成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=CQLProcessor,Application=myapplication

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

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

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

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

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

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

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

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

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

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

11.3.3 ランタイムMBean

ランタイムMBeanで、EPNの各コンポーネントについての監視情報を収集できます。Oracle Event Processingサーバーは各コンポーネントで監視できる次のメトリックを定義します。

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

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

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

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

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

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

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

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

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

11.3.5 Event Processing MBeanの階層

すべてのMBeanは、javax.management.ObjectName型のオブジェクト名でMBeanサーバーに登録されなければなりません。Oracle Event Processingでは、子MBeanのオブジェクト名が親MBeanオブジェクト名の一部を含むという規則に準拠しています。

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

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

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

図11-1 Event Processing MBeanオブジェクト・モデル

図11-1の説明が続きます
「図11-1 Event Processing MBeanオブジェクト・モデル」の説明

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

11.4 JMXの構成

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

11.4.1 JMX構成の例

次のconfig.xmlファイルからのスニペットは、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>

11.4.2 JMX構成オブジェクト

Oracle Event Processingサーバーを示すconfig.xmlファイルにある次の要素を使用して、Oracle Event Processing JMXサービスを構成します。

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

jmx

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

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

パラメータ データ型 説明
rmi-service-name 
String

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

jndi-service-name
String

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

rmi

Oracle Event Processing RMIサービスでは、次のものが提供されます。

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

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

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

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

パラメータ データ型 説明
heartbeat-period
int

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

http-service-name
String

リモート・オブジェクトの登録に使用するHTTPサービス名(Jettyなど、「Jetty」を参照してください)。

heartbeat-interval
int

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

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

name
String

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

jndi-context

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

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

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

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

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

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

パラメータ データ型 説明
default-provider
boolean

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

デフォルト値はtrueです。

name
String

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

exported-jndi-context

構成済jndi-contextが必要です。

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

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

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

パラメータ データ型 説明
rmi-service-name
String

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

name
String

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

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

11.5 JMXによる管理

この項では、JMXを使用したOracle Event Processingコンポーネントの管理の例を説明します。

次に例を示します。

注意:

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

11.5.1 APIを使用した、非Oracle Event ProcessingクライアントからJMXサーバーへの接続

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

Oracle Event Processing JMXサーバーに別のOracle Event Processingサーバーから接続する際の情報は、APIを使用した、Oracle Event ProcessingクライアントからJMXサーバーへの接続を参照してください。

APIを使用した、非Oracle Event ProcessingクライアントからJMXサーバーへの接続:

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

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

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

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

    次に示すように、JMXプログラムでは、まずOracle Event Processingサーバーで実行中の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;
    }
    

11.5.2 APIを使用した、Oracle Event ProcessingクライアントからJMXサーバーへの接続

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

Oracle Event Processing JMXサーバーに非Oracle Event Processingクライアントから接続する際の情報は、APIを使用した、Oracle以外のEvent ProcessingクライアントからJMXサーバーへの接続を参照してください。

APIを使用した、Oracle Event ProcessingクライアントからJMXサーバーへの接続:

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

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

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

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

    次に示すように、JMXプログラムでは、まずOracle Event Processingサーバーで実行中の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;
    }
    

11.5.3 JMX APIを使用したOracle Event Processingコンポーネントの構成

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

JMX APIを使用したOracle Event Processingコンポーネントの構成:

  1. Oracle Event Processing JMXサーバーへの接続を取得します。
  2. http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement Javaコードを記入し、適切なMBeanでコンポーネントを構成します。

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

    次の例は、接続を使用して、MBeanを問い合せることで、ドメインおよびデプロイされたアプリケーションの情報取得を開始する方法を示します。

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

    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 ;

11.5.4 JMX APIを使用したコンポーネントのスループットと待機時間の監視

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

JMX APIを使用したOracle Event Processingコンポーネントの動的な構成:

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

    詳細は、「APIを使用した、Oracle以外のEvent ProcessingクライアントからJMXサーバーへの接続」を参照してください。

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

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

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

  3. 次に示すように統計のタイプに応じてMonitorRuntimeMBeanを使用して、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. 監視情報の収集が完了したら、次に示すようにMBeanサーバーからMBeanを登録解除します。

    probON.terminate();
    

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

11.5.5 セキュリティが有効なJconsoleを使用したローカルまたはリモートJMXサーバーへの接続

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

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

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

注意:

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

セキュリティが有効なJconsoleを使用したローカルまたはリモートJMXサーバーへの接続:

  1. ローカルまたはリモートOracle Event Processingサーバーが実行されていることを確認します。

  2. /Oracle/Middleware/my_oep/oep/binディレクトリにあるwlevsjconsole.cmdまたはwlevsjconsole.shスクリプトを使用して、jconsoleを起動します。

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

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

      prompt> wlevsjconsole.cmd HOST-NAME:PORT
      

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

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

    図11-2 Jconsole初回ログイン試行

    図11-2の説明が続きます
    「図11-2 Jconsole初回ログイン試行」の説明
  3. 「取消」をクリックします。

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

    図11-3 Jconsoleの新しい接続ダイアログ

    図11-3の説明が続きます
    「図11-3 Jconsole:「新しい接続」ダイアログ」の説明
  4. 表11-7で説明するように「新しい接続」ダイアログを構成します。

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

    属性 説明

    リモート・プロセス

    次のURLを入力します。

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

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

    ユーザー名

    Oracle Event Processing管理ユーザー名: oepadminを入力します。

    パスワード

    Oracle Event Processing管理パスワード: welcome1を入力します。

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

    jconsoleブラウザが開くと、**INTERNAL XREF ERROR**で示すようにOracle Event Processing MBeanにアクセスできます。

11.5.6 セキュリティが無効なJConsoleを使用したローカルまたはリモートJMXサーバーへの接続

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

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

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

注意:

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

セキュリティが無効なJconsoleを使用したローカルまたはリモートJMXサーバーへの接続:

  1. セキュリティが無効の状態でローカルまたはリモートOracle Event Processingサーバーが実行されていることを確認します。

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

  2. /Oracle/Middleware/my_oep/oep/binディレクトリにあるwlevsjconsole.cmdまたはwlevsjconsole.shスクリプトを使用して、jconsoleを起動します。

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

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

      prompt> wlevsjconsole.cmd HOST-NAME:PORT
      

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

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