3 カスタムMBeanの登録
この章の内容は次のとおりです。
- カスタムMBeanの登録の概要
Coherenceは、Coherence管理フレームワーク内のカスタムMBeanの管理およびモニタリングをサポートします。カスタムMBeanは、アプリケーション固有のMBeanです(JavaプラットフォームのMBeanを含む)。 - カスタムMBeanの宣言的な登録
カスタムMBeanは、custom-mbeans.xmlMBean構成オーバーライド・ファイルを使用してCoherence管理フレームワークに登録できます。 - カスタムMBeanのプログラム的な登録
カスタムMBeanは、アプリケーションのcom.tangosol.net.management.Registryインタフェースを使用してCoherence管理フレームワークに登録できます。 - 管理対象のCoherenceサーバーへのカスタムMBeanの登録
管理対象Coherenceサーバーを使用している場合は、XMLを使用してカスタムMBeanを登録できます。
カスタムMBeanの登録の概要
カスタムMBeanは、XMLファイルでの宣言的な方法またはプログラム的な方法で、Oracle Coherence MBeanサーバーに登録されます。
ノート:
グローバル・カスタムMBeanのコンストラクタがCoherence分散サービスにアクセスすると、デッドロックが発生する可能性があります。グローバル・カスタムMBeanのコンストラクタがCoherence分散サービスにアクセスすることはできません。
親トピック: カスタムMBeanの登録
カスタムMBeanの宣言的な登録
custom-mbeans.xml MBean構成オーバーライド・ファイルを使用してCoherence管理フレームワークに登録できます。
custom-mbeans.xmlファイルが使用されます。MBeanは、クラス名、クラスのファクトリ名、またはMBeanサーバー対して実行される問合せ文字列を使用して構成ファイル内で宣言されます。
ノート:
カスタムMBeanは、実行時に必ず検出される必要があります。MBean(または、MBeanを含むライブラリ)は、クラスタ・メンバー(JMX管理が有効化されているメンバーを含む)のクラスパスに配置してください。
この項には次のトピックが含まれます:
- MBean構成ファイルの作成
- クラス名を使用したMBeanの登録
- MBeanファクトリからのMBeanの登録
- 問合せを使用したMBeanの登録
- 別のMBean構成オーバーライド・ファイルの指定
- MBeanのローカルMBeanサーバーへの制限
親トピック: カスタムMBeanの登録
MBean構成ファイルの作成
custom-mbeans.xmlファイルは、オペレーション・デプロイメント・ディスクリプタの<mbeans>要素をオーバーライドします。そのため、ルート要素は<mbeans>要素である必要があります。『Oracle Coherenceでのアプリケーションの開発』のmbeansに関する項を参照してください。
MBean構成オーバーライド・ファイルを作成するには:
親トピック: カスタムMBeanの宣言的な登録
クラス名を使用したMBeanの登録
<mbean-class>要素は、MBeanの完全修飾されたクラス名を使用してMBeanを登録およびインスタンス化します。次の例では、com.MyMBeanという名前のMBeanを登録して、そのMBeanにtype=applicationというオブジェクト名を付けます。
<mbeans>
<mbean id="100">
<mbean-class>com.MyMBean</mbean-class>
<mbean-name>type=application</mbean-name>
<enabled>true</enabled>
</mbean>
</mbeans>
前述の構成では、MBeanを登録してリモート管理を許可します。つまり、MBeanの名前を指定すると、そのオブジェクト名の一部としてクラスタ・メンバーのノードIDやドメイン・ネームスペースも自動的に含められることになります。たとえば:
Coherence:type=application,nodeId=<nodeId>
デフォルトの登録動作を変更する方法は、「カスタムMBeanのプログラム的な登録」を参照してください。
親トピック: カスタムMBeanの宣言的な登録
MBeanファクトリからのMBeanの登録
<mbean-factory>および<mbean-accessor>要素は、ファクトリ・クラスからMBeanを登録およびインスタンス化します。次の例では、java.lang.management.ManagementFactoryクラスのgetMemoryMXBeanアクセッサ・メソッドを使用してJavaプラットフォームのMemoryMXBean MBeanを登録し、そのMBeanにtype=java,SubSystem=Memoryというオブジェクト名を付けます。
<mbeans>
<mbean id="2">
<mbean-factory>java.lang.management.ManagementFactory</mbean-factory>
<mbean-accessor>getMemoryMXBean</mbean-accessor>
<mbean-name>type=java,SubSystem=Memory</mbean-name>
<enabled>true</enabled>
</mbean>
</mbeans>
前述の構成では、MBeanを登録してリモート管理を許可します。つまり、MBeanの名前を指定すると、そのオブジェクト名の一部としてクラスタ・メンバーのノードIDやドメイン・ネームスペースも自動的に含められることになります。たとえば:
Coherence:type=java,SubSystem=Memory,nodeId=<nodeId>
デフォルトの登録動作を変更する方法は、「カスタムMBeanのプログラム的な登録」を参照してください。
親トピック: カスタムMBeanの宣言的な登録
問合せを使用したMBeanの登録
MBeanを登録およびインスタンス化する際には、<mbean-query>要素でMBeanサーバーを問い合せます。デフォルトでは、メンバーのデフォルトのMBeanサーバーが問い合せられますが、別のMBeanサーバーを指定することもできます。次の例では、メンバーのデフォルトのMBeanサーバーに対してjava.lang:*問合せを実行して、登録するMBeanを見つけます。
<mbeans>
<mbean id="3">
<mbean-query>java.lang:*</mbean-query>
<mbean-name>type=Platform</mbean-name>
<enabled>true</enabled>
</mbean>
<mbeans>
メンバーのデフォルトのMBeanサーバー以外のMBeanサーバーを指定するには、<mbean-server-domain>要素を使用してMBeanサーバーのドメイン名を入力します。たとえば:
<mbeans>
<mbean id="3">
<mbean-query>java.lang:*</mbean-query>
<mbean-server-domain>MyDomain</mbean-server-domain>
<mbean-name>type=Platform</mbean-name>
<enabled>true</enabled>
</mbean>
</mbeans>
親トピック: カスタムMBeanの宣言的な登録
別のMBean構成オーバーライド・ファイルの指定
coherence.mbeansシステム・プロパティでは、デフォルトのオーバーライド・ファイルcustom-mbeans.xmlのかわりにMBean構成オーバーライド・ファイルを指定します。たとえば:
-Dcoherence.mbeans=my-mbeans.xml
クラスパスにファイルの場所が含まれていることを確認し、含まれていない場合は、ファイル名とそのフルパス(または相対パス)を入力します。このシステム・プロパティでMBean構成オーバーライド・ファイルの場所を指定するときには、URLを使用することもできます。
親トピック: カスタムMBeanの宣言的な登録
MBeanのローカルMBeanサーバーへの制限
カスタムMBeanは、JMX管理が有効なすべてのクラスタ・メンバーから監視できます。MBeanをローカルMBeanサーバーにのみ登録し、そのMBeanをリモート・クラスタ・メンバーから監視できないように制限するには、<local-only>要素をtrueに設定します。たとえば:
<mbeans>
<mbean id="100">
<mbean-class>com.MyMBean</mbean-class>
<mbean-name>type=application</mbean-name>
<local-only>true</local-only>
<enabled>true</enabled>
</mbean>
</mbeans>
親トピック: カスタムMBeanの宣言的な登録
カスタムMBeanのプログラム的な登録
com.tangosol.net.management.Registryインタフェースを使用してCoherence管理フレームワークに登録できます。次の例では、registerメソッドを使用して標準的なMBeanを登録します。
Registry registry = CacheFactory.ensureCluster().getManagement();
Custom bean = new Custom();
String sName = registry.ensureGlobalName("type=Custom");
registry.register(sName, bean);
前述の構成では、MBeanを登録してリモート管理を有効にします。つまり、MBeanの名前を指定すると、そのオブジェクト名の一部としてクラスタ・メンバーのノードIDやドメイン・ネームスペースも自動的に含められることになります。たとえば:
Coherence:type=custom,nodeId=<nodeId>
カスタム・ドメイン・ネームスペースの使用方法
デフォルトのネームスペースの動作を設定することで、同一JVM内で複数のクラスタが実行されていても、集中管理するMBeanサーバーがオブジェクトを一意の名前で認識するようになります。つまり、MBeanがクラスタ間で同じオブジェクト名を使用しないように、別のドメイン・ネームスペースが自動的に割り当てられる(Coherence@1:など)ことになります。カスタム・ドメイン・ネームスペースを使用する際には、一意のオブジェクト名を付ける必要があります。
カスタム・ドメイン・ネームスペースを使用するには、その定義にネームスペースを明示的に追加します。たとえば:
Registry registry = CacheFactory.ensureCluster().getManagement();
Custom bean = new Custom();
String sName = registry.ensureGlobalName("Monitor:type=Custom");
registry.register(sName, bean);
カスタムMBeanに対してJMX操作を実行するには、Registry.ensureGlobalName() APIで返されるオブジェクト名を使用します。
静的MBean名の使用方法
ensureGlobalNameメソッドは、MBeanのObjectNameの終わりに,nodeId=...部分を追加することで、集中管理するMBeanサーバーがオブジェクトを一意の名前で認識できるようにします。アプリケーションに静的MBean名が必要な場合は、MBean問合せを使用して、ローカルのMBeanサーバーから管理フレームワークにMBeanを追加します。たとえば、管理対象メンバーに静的な名前を持つMBeanが作成されて、,nodeId=...部分がそのMBeanの名前に、管理メンバーでのMBean集約時に追加されます。
静的MBean名を使用するには:
-
クラスタに参加する前に、
registerMBeanまたはcreateMBeanメソッドを使用して、管理対象メンバーのローカルMBeanサーバーにMBeanを登録します。『Java™ Platform, Standard Edition API仕様』の「インタフェースMBeanServer」を参照してください。 -
MBeanHelper.findMBeanServer()メソッドを使用して、Oracle Coherenceが使用しているものと同じMBeanサーバーを取得します。
-
MBeanサーバーでMBeanを問い合せるよう
custom-mbeans.xmlファイルを構成します。「問合せを使用したMBeanの登録」を参照してください。
ノート:
ローカルMBeanサーバーにアクセスできるように環境が適切に設定されていることを確認してください。『Java SEモニタリングおよび管理ガイド』の「JMXテクノロジを使用するモニタリングと管理」を参照してください。
親トピック: カスタムMBeanの登録
管理対象のCoherenceサーバーへのカスタムMBeanの登録
custom-mbeans.xmlファイルを使用してカスタムMBeanを登録できます。「カスタムMBeanの宣言的な登録」を参照してください。
管理対象Coherenceサーバー使用時にMBean構成ファイルを指定するには、次の3つの方法があります。
-
custom-mbeans.xmlファイルをサーバーのクラスパスに追加する: Coherenceが起動すると、サーバーのクラスパス内のcustom-mbeans.xmlファイルが検索され、これがMBean構成ファイルとして使用されます。このファイルおよびすべての関連するクラスは、/libサブディレクトリ内のドメイン・ディレクトリにあるJARファイルに配置することでクラスパスに追加できます。 -
別のMBean構成ファイルを指定する: 管理対象Coherenceサーバーを起動するときに、
tangosol.coherence.mbeansシステム・プロパティを使用してデフォルトのcustom-mbeans.xmlファイル以外のMBean構成ファイルを指定します。-Dtangosol.coherence.mbeans=my-mbeans.xml
カスタムMBeanに関連するクラスを、クラスパスに追加する必要があります。
-
CoherenceClusterSystemResourcesMBeanを使用する: カスタムMBeansをオペレーション・オーバーライド・ファイルに定義して、そのファイルをCoherenceClusterSystemResourcesMBeanのCustomClusterConfigurationFileName属性に指定できます。指定された構成ファイルは起動時にロードされます。「カスタムMBeanの宣言的な登録」を参照してください。
親トピック: カスタムMBeanの登録