この章の内容は次のとおりです。
Oracle CEPでは、Java Management Extensions (JMX)仕様に完全に準拠した標準ベースのインタフェースが提供されます。ソフトウェア・ベンダーはこれらのインタフェースを使用して、Oracle CEP MBeanを監視し、Oracle CEPドメインの構成を変更できます。また、Oracle CEPアプリケーションを監視できます。
詳細は、次を参照してください:
JMXおよびOracle CEP Mbeanを使用してOracle CEPアプリケーション、サーバー、ドメインを管理する前に、まずJMXサービスをOracle CEPサーバーで構成する必要があります。
Oracle CEPドメインを示すconfig.xml
ファイルにある次の要素を使用してOracle CEP JMXサービスを構成します。
jmx
: 詳細は、12.2.1項「jmx構成オブジェクト」を参照してください。
rmi
: 詳細は、12.2.2項「rmi構成オブジェクト」を参照してください。
jndi-context
: 詳細は、12.2.3項「jndi-context構成オブジェクト」を参照してください。
exported-jndi-context
: 詳細は、12.2.4項「exported-jndi-context構成オブジェクト」を参照してください。
詳細は、12.2項「JMXの構成」を参照してください。
Oracle CEPアプリケーションは、アダプタ、チャネル、プロセッサなどのコンポーネントで構成されたイベント処理ネットワーク(EPN)を定義します。これらのアプリケーションをドメイン内の起動済Oracle CEPインスタンスにデプロイします。
注意: コンポーネントは「ステージ」と呼ばれることもあります(特に管理Javadocの場合)。ただし、他のOracle CEPドキュメントとの整合性を保つために、この項では「コンポーネント」という用語を使用します。 |
管理BeanまたはMBeansを使用してEPNの各コンポーネントを動的に構成できます。一般的な構成タスクとして、Oracle CQLまたはEPLルールの追加と削除、チャネル最大サイズの変更、通知へのサブスクライブ、様々な操作の実行といったタスクがあります。
次のいずれかを使用してMBeanを操作します:
Oracle CEP Visualizer: Oracle CEPのグラフィカルな管理コンソール。
詳細は、『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
この項では次の内容について説明します。
詳細は、次を参照してください:
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.ja
r
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-NAME
はlocalhost
またはリモート・ホスト名で、port
はOracle CEPサーバーのJNDIポートです)。
詳細は、次を参照してください:
MBeanを使用して、サーバー、ドメイン、およびデプロイ済みアプリケーションの一部の構成とアプリケーション・ライフ・サイクル管理を実行することもできますが、この節では主に個々のアプリケーション・コンポーネントの構成について説明します。ただし、サーバー、ドメイン、およびアプリケーションの構成もMBeanを使用して行うので、この節に示す情報の大部分があてはまります。
デプロイ済アプリケーション(アダプタ、チャネル、またはプロセッサ)の各コンポーネントには、基になるコンポーネントの構成を管理する構成MBeanが指定されています。コンポーネント・タイプごとに、管理可能な独自のアーティファクトがあります。たとえば、チャネルの最大スレッド数やプロセッサに関連付けられたOracle CQLルールを動的に構成できます。
Oracle CEPでは以下のタイプのMBeanが公開されています。
構成MBean: EPNのコンポーネントの構成、デプロイ済Oracle CEPアプリケーション、サーバーおよびドメインの構成についての情報が含まれます。構成MBeanは固定の管理インタフェースを持ち、ドメインのconfig.xmlファイルおよびコンポーネントの構成XMLファイルに含まれている情報を表します。標準MBeanの例として、CQLProcessorMBean
やEventChannelMBean
があります。
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
この項では次の内容について説明します。
Oracle CEPアプリケーションをデプロイすると、管理容易性が有効になっているEPNの各コンポーネント(つまり、EPNアセンブリ・ファイルに登録されている各コンポーネント)について、構成MBeanがサーバーによって自動的に作成されます。アダプタの構成を拡張した場合、アダプタ用のカスタム構成MBeanがデプロイされます。
JMXを使用すると、コンポーネントの構成MBeanを使用してコンポーネントを動的に構成できます。たとえば、StreamMBean.setMaxSize()
メソッドを使用してチャネル・コンポーネントのサイズを設定できます。
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:
で開始する必要があります。
たとえば、ドメイン内のアプリケーションmyapplication
にmyprocessor
と呼ばれるプロセッサがある場合、そのプロセッサに対応するMBeanのオブジェクト名は次のようになります。
com.bea.wlevs:Name=myprocessor,Type=EPLProcessor,Application=myapplication
表12-1は、Oracle CEPがMBeanオブジェクト名にエンコードするキー・プロパティについて説明します。
表12-1 Oracle CEP MBeanオブジェクト名のキー・プロパティ
キー・プロパティ | 指定する対象 |
---|---|
Name=name
|
MBeanによって表されるリソースを作成したときに指定した文字列。通常はコンポーネントの名前です。 EPNアセンブリ・ファイル内に特定のコンポーネントの名前を指定するには、コンポーネント登録の たとえばプロセッサの場合、EPNアセンブリ・ファイル内のエントリは次のようになります。 <wlevs:processor id="myprocessor" advertise="true" /> この場合、キー プロパティは |
Type=type
|
MBeanのタイプの短縮名。短縮名は たとえば、MBeanが |
TypeOfParentMBean=NameOfParentMBean
|
親MBeanのタイプと名前を指定します。 コンポーネントの場合は、常に 特定のOracle CEPアプリケーションの名前は、アプリケーション・バンドルに含まれる Manifest-Version: 1.0 Archiver-Version: Build-Jdk: 1.5.0_06 .... Bundle-SymbolicName: 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
|
<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
|
ランタイムMBeanで、EPNの各コンポーネントに監視情報を収集することができます。Oracle CEPサーバーは各コンポーネントで監視できる次のメトリクスを定義します。
スループット - コンポーネントで処理されるイベント数。このメトリックのパラメータは、スループット時間間隔、集約時間間隔、間隔を表す時間の単位です。
平均待機時間 - イベントがコンポーネントまたは待機時間を通過するのにかかる平均時間。パラメータ: 集計時間間隔、その間隔の時間単位。
最大待機時間 - イベントがコンポーネントを通過するのにかかる最大時間。パラメータ:集約時間間隔、間隔を表す時間の単位。
平均待機時間のしきい値 - コンポーネントの開始点と終了点の間のイベントの平均待機時間が指定されたしきい値を超えたかどうかを指定します。パラメータ:集約時間間隔、しきい値、間隔を表す時間の単位。
ランタイムMBeanの命名には、構成MBeanと同じパターンが使用されDirection
というプロパティが1つ余分にあります。このプロパティには有効な値が2つあります。どの時点で統計を収集するかを指定するOUTBOUND
とINBOUND
です。OUTBOUND
は、指定したコンポーネントをイベントが離れたときにスループットと待機時間を収集することを示します。同様に、INBOUND
は、イベントがコンポーネントに入ったときに監視情報を収集することを示します。
たとえば、イベントがコンポーネントに入ったときにイベントを監視するアプリケーションmyapplication
にmyprocessor
と呼ばれるプロセッサがある場合、そのプロセッサに対応するランタイムMBeanのオブジェクト名は次のようになります。
com.bea.wlevs:Name=myprocessor,Type=EPLProcessor,Application=myapplication,Direction=INBOUND
構成MBeanのネーミングの詳細は、12.1.3.1.1項「構成MBeanのネーミング」を参照してください。
図12-1は、Oracle CEP MBeanツリーを表しています。
すべてのMBeanは、タイプjavax.management.ObjectName
のオブジェクト名でMBeanサーバーに登録されている必要があります。Oracle CEPは、子MBeanのオブジェクト名が親MBeanオブジェクト名の一部を含むという規則に準拠します。
DomainMBean
およびDomainRuntimeMBean
という主要な2つのMBeanルートがあります。前者にはドメイン全体の構成MBeanが含まれ、後者には、通常は単一のサーバー・インスタンスをスコープとするランタイム情報(統計など)とローカル・サービス(監視など)が含まれます。
ApplicationMBean
はDomainMBean
の子であり、ServerMBean
の子ではありません。アプリケーションはドメイン内で一意であり、複数のサーバーにまたがって実行できるためです。
図12-2は、オブジェクト・モデルを構成する主なクラスと関係を示しています。
ほとんどのMBeanは通知を送信するエミッタであり、AttributeChangeNotifications
を生成します。つまり、JMXクライアントは、アプリケーション状態の変更、ドメインでのアプリケーションの挿入と削除、チャネル・サイズとスレッドの変更、ルールの挿入と削除などに関する属性変更通知を受け取るように登録できます。
Oracle CEPドメインを記述するconfig.xml
ファイルの、次の要素を使用してOracle CEP JMXサービスを構成します。
jmx
: 詳細は、12.2.1項「jmx構成オブジェクト」を参照してください。
rmi
: 詳細は、12.2.2項「rmi構成オブジェクト」を参照してください。
jndi-context
: 詳細は、12.2.3項「jndi-context構成オブジェクト」を参照してください。
exported-jndi-context
: 詳細は、12.2.4項「exported-jndi-context構成オブジェクト」を参照してください。
JMXに影響するセキュリティ構成タスクの詳細は、10.8.2項「JMXセキュリティの構成」を参照してください。
詳細は、次を参照してください:
表12-3は、構成が必要とされるconfig.xml
ファイルのjmx
要素のリストを示しています。
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 |
ハートビートの間隔(ミリ秒単位)。 失敗したハートビートの試行回数が |
name |
String |
この構成オブジェクトの名前。 |
JNDIファクトリ・マネージャは、OSGi環境でJNDIをサポートする役割を果たします。これにより、JNDIプロバイダがOSGiバンドルとして提供され、OSGiバンドルの内部で実行されるコードからJNDI環境への完全なアクセスが可能になります。
ファクトリ・マネージャは、次の2つのコンポーネントで構成されています。
OSGiバンドルはOSGi固有のファクトリ管理コードを提供し、適切なOSGiクラス・ローダーを使用してJNDIオブジェクトをルックアップします。
JNDIの「グルー・コード」はOracle CEP内部で動作し、ファクトリ・マネージャ・バンドルをサポートできるようにJNDI環境を初期化します。
表12-5は、構成が必要とされるconfig.xml
ファイル内の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サービスの名前。既存の |
name |
String |
この構成オブジェクトの名前。 この要素の値は、同じ |
例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>
この項では、次のように、JMXを使用したOracle CEPコンポーネントの管理の例を説明します。
12.3.1項「Oracle以外のCEPクライアントからOracle CEP JMXサーバーへのプログラムで接続する方法」
12.3.4項「JMX APIを使用したOracle CEPコンポーネントのスループットと待機時間をプログラムで監視する方法」
12.3.5項「セキュリティが有効な状態でJconsoleを使用してローカルまたはリモートOracle CEP JMXサーバーに接続する方法」
12.3.6項「セキュリティが無効なJconsoleでローカルまたはリモートOracle CEP JMXサーバーに接続する方法」
注意: Jconsoleを使用する際、Oracle CEPwlevsjconsole.cmd またはwlevsjconsole.sh スクリプトで開始します。jconsole を直接開始できません。 |
詳細は、次を参照してください:
この項では、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サーバーにプログラムで接続するには:
使用するドメインにJMXサービスを構成したことを確認します。
詳細は、12.2項「JMXの構成」を参照してください。
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; }
この項では、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サーバーにプログラムで接続には:
使用するドメインにJMXサービスを構成したことを確認します。
詳細は、12.2項「JMXの構成」を参照してください。
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; }
この項では、Oracle CEP MBeanにアクセスする際の、JMX API (http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement
)を使用したJavaコードの記述方法を説明します。
JMX APIを使用してOracle CEPコンポーネントをプログラムで構成するには:
Oracle CEP JMXサーバーへの接続を取得します。
詳細は、12.3.1項「Oracle以外のCEPクライアントからOracle CEP JMXサーバーへのプログラムで接続する方法」を参照してください。
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 ; }
この項では、Oracle CEP MBeanにアクセスしてOracle CEPコンポーネントのスループットと待機時間を動的に監視する場合のJMX API (http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement
)を使用したJavaコードの記述方法を説明します。
JMX APIを使用してOracle CEPコンポーネントを動的に構成するには:
Oracle CEP JMXサーバーへの接続を取得します。
詳細は、12.3.1項「Oracle以外のCEPクライアントからOracle CEP JMXサーバーへのプログラムで接続する方法」を参照してください。
例12-5で示すように監視するコンポーネントにはMonitorRuntimeMBean
のインスタンスを取得します。
例12-5 MonitorRuntimeMBeanのインスタンスの取得
m_processorInbound = ObjectName.getInstance( "com.bea.wlevs:Name=myprocessor, Type=EPLProcessor, Application=myapplication, Direction=INBOUND" );
着信イベント(INBOUND
)または発信イベント(OUTBOUND
)のどちらを監視するのかを必ず指定します。例:
例12-6で示すように統計のタイプに応じてMonitorRuntimeMBean
を使用して、ProbeRuntimeMBean
のインスタンスを取得します。
例12-6 ProbeRuntimeMBeanのインスタンスの取得
ProbeRuntimeMBean probeON = m_testBean.getMonitorRuntimeMBean().monitorAvgThroughput( m_processorInbound, 1000, 1000 );
MonitorRuntimeMBean
には、収集可能な統計のタイプごとに使用できるメソッドがあります。たとえば、平均待機時間を監視する場合はmonitorAvgLatency()
を実行し、平均待機時間を監視する場合はmonitorAvgThroughput()
を実行します。これらのメソッドはすべてProbeRuntimeMBean
を返します。
ProbeRuntimeMbean
のインスタンスを使用して、実際の実行時メトリックを取得するには次のいずれかの方法があります。
ProbeRuntimeMBean
のgetMetric()
メソッドを使用して情報を取得します。
javax.management.NotificationBroadcaster.addNotificationListener()
を使用して、メトリックに変更があるたびに送信される情報を取得します。
監視情報の収集が完了したら、例12-7で示すようにMBeanサーバーからMBeanを登録解除します。
これらのMBeanインタフェースの詳細、およびこれらのMBeanインタフェースを使用してスループットと待機時間を監視する方法については、『Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンス』のcom.bea.wlevs.monitor.management
パッケージを参照してください。
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 CEPwlevsjconsole.cmd またはwlevsjconsole.sh スクリプトで開始します。jconsole を直接開始できません。 |
セキュリティが有効のJconsoleを使用してローカルまたはリモートのOracle CEP JMXサーバーに接続するには:
ローカルまたはリモートOracle CEPサーバーを実行したことを確認します。
コマンド・ウィンドウを開き、『Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項で説明されているように、環境を設定します。
ORACLE_CEP_HOME
/ocep_11.1/bin
ディレクトリのwlevsjconsole.cmd
またはwlevsjconsole.sh
スクリプトを使用してjconsole
を起動します。ここではORACLE_CEP_HOME
はOracle CEP (例/oracle_home
)がインストールされたディレクトリを参照します。
ローカルOracle CEPサーバーに接続するには次を入力します。
prompt> wlevsjconsole.cmd
リモートOracle CEPサーバーに接続するには次を入力します。
prompt> wlevsjconsole.cmdHOST-NAME
:PORT
HOST-NAME
はリモート・ホストの名前、PORT
はNetIOポートで、リモート・ホストのORACLE_CEP_HOME
/user_projects/domains/
DOMAIN-NAME
/defaultserver/config/config.xml
ファイル中に構成されています。
jconsoleブラウザはJMXサーバーへログインをしようとしますが、図12-3で示すように最初に失敗します。
「取消」をクリックします。
図12-4で示すように、Jconsole
:「新しい接続」ダイアログが表示されます。
表12-7で説明するように「新しい接続」ダイアログを構成します。
表12-7 Jconsole新しい接続属性
属性 | 説明 |
---|---|
|
以下のURLを入力します: service:jmx:msarmi://
|
|
Oracle CEP管理パスワードを入力します。 デフォルト: wlevs。 |
|
選択したOracle CEP管理パスワードを入力します。 デフォルト: wlevs。 |
「接続」をクリックします。
jconsole
ブラウザが開くと、図12-6で示すようにOracle CEP MBeanにアクセスできます。
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 CEPwlevsjconsole.cmd またはwlevsjconsole.sh スクリプトで開始します。jconsole を直接開始できません。 |
セキュリティが無効のJconsoleを使用してローカルまたはリモートのOracle CEP JMXサーバーに接続するには:
セキュリティが無効の状態でローカルまたはリモートのOracle CEPサーバーを実行します。
詳細は、10.10項「セキュリティの無効化」を参照してください。
コマンド・ウィンドウを開き、『Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項で説明されているように、環境を設定します。
ORACLE_CEP_HOME
/ocep_11.1/bin
ディレクトリのwlevsjconsole.cmd
またはwlevsjconsole.sh
スクリプトを使用してjconsole
を起動します。ここではORACLE_CEP_HOME
はOracle CEP (例/oracle_home
)がインストールされたディレクトリを参照します。
ローカルOracle CEPサーバーに接続するには次を入力します。
prompt> wlevsjconsole.cmd
リモートOracle CEPサーバーに接続するには次を入力します。
prompt> wlevsjconsole.cmdHOST-NAME
:PORT
HOST-NAME
はリモート・ホストの名前、PORT
はNetIO
ポートで、リモート・ホストのORACLE_CEP_HOME
/user_projects/domains/
DOMAIN-NAME
/defaultserver/config/config.xml
ファイル中に構成されています。
スクリプトが自動的にJMXサーバーに接続し、jconsole
ブラウザが開くと、図12-6で示すようにOracle CEP Mbeanにアクセスできます。