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