プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Coherenceのマネージメント
12c (12.2.1)
E69906-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

3 カスタムMBeanの登録

この章では、Oracle Coherence管理フレームワークにカスタムMBeanを登録し、カスタムMBeanとOracle Coherence MBeanの管理を統合する方法について説明します。

この章には次の項が含まれます:

3.1 カスタムMBeanの登録の概要

Oracle Coherenceでは、管理フレームワーク内でカスタムMBeanを管理およびモニターできます。カスタムMBeanは、アプリケーション固有のMBeanです(JavaプラットフォームのMBeanを含む)。カスタムMBeanは、XMLファイルでの宣言的な方法またはプログラム的な方法で、Oracle Coherence MBeanサーバーに登録されます。

カスタムMBeanとOracle Coherence MBeanを統合することで、管理者は、クラスタ内に存在するすべてのメンバーのシステム情報とアプリケーション情報を1つの場所から更新および表示できます。


注意:

グローバル・カスタムMBeanのコンストラクタがCoherence分散サービスにアクセスすると、デッドロックが発生する可能性があります。グローバル・カスタムMBeanのコンストラクタがCoherence分散サービスにアクセスすることはできません。

3.2 カスタムMBeanの宣言的な登録

カスタムMBeanは、custom-mbeans.xmlという名前のMBean構成オーバーライド・ファイル内で宣言的に登録されます。実行時には、クラスパスで見つかったcustom-mbeans.xmlの最初のインスタンスが使用されます。MBean構成に関する詳細は、『Oracle Coherenceでのアプリケーションの開発』を参照してください。MBeanを登録するには、MBeanのクラス名、MBeanファクトリを使用するか、問合せを実行して対象のMBeanを見つけてください。


注意:

カスタムMBeanは、実行時に必ず検出される必要があります。MBean(または、MBeanを含むライブラリ)は、クラスタ・メンバー(JMX管理が有効化されているメンバーを含む)のクラスパスに配置してください。

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

3.2.1 MBean構成ファイルの作成

custom-mbeans.xmlファイルは、オペレーション・デプロイメント・ディスクリプタの<mbeans要素をオーバーライドします。そのため、ルート要素は<mbeans要素である必要があります。<mbeans要素の完全なリファレンスについては、『Oracle Coherenceでのアプリケーションの開発』を参照してください。

MBean構成オーバーライド・ファイルを作成する手順は次のとおりです。

  1. テキスト・ファイルを作成してcustom-mbeans.xmlとして保存します。

  2. 次のようにファイルを編集して空の<mbeans>ノードを作成します。

    <mbeans>
    </mbeans>
    
  3. ファイルを保存して閉じます。

  4. カスタムMBean構成オーバーライド・ファイルが実行時のクラスパスで、coherence.jarライブラリより前にあることを確認してください。

    次の例では、COHERENCE_HOMEにあるcustom-mbeans.xmlファイルを使用するキャッシュ・サーバーを起動します。

    java -cp COHERENCE_HOME;COHERENCE_HOME\lib\coherence.jar com.tangosol.net.DefaultCacheServer
    

3.2.2 クラス名を使用した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のプログラム的な登録」を参照してください。

3.2.3 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のプログラム的な登録」を参照してください。

3.2.4 問合せを使用した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>

3.2.5 別のMBean構成オーバーライド・ファイルの指定

coherence.mbeansシステム・プロパティでは、デフォルトのオーバーライド・ファイルcustom-mbeans.xmlのかわりにMBean構成オーバーライド・ファイルを指定します。次に例を示します。

-Dcoherence.mbeans=my-mbeans.xml

クラスパスにファイルの場所が含まれていることを確認し、含まれていない場合は、ファイル名とそのフルパス(または相対パス)を入力します。このシステム・プロパティでMBean構成オーバーライド・ファイルの場所を指定するときには、URLを使用することもできます。

3.2.6 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>

3.3 カスタムMBeanのプログラム的な登録

com.tangosol.net.management.Registryインタフェースでは、カスタムMBeanがプログラム的に登録されます。次の例では、registerメソッドを使用して標準的なMBeanを登録します。Registryインタフェースの詳細は、Oracle Coherence Java APIリファレンスを参照してください。

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名を使用する手順は次のとおりです。

  1. クラスタに参加する前に、registerMBeanまたはcreateMBeanメソッドを使用して、管理対象メンバーのローカルMBeanサーバーにMBeanを登録します。これらのメソッドの使用方法については、MBeanServerのインタフェース・リファレンスを参照してください。

    http://docs.oracle.com/javase/7/docs/api/javax/management/MBeanServer.html

  2. MBeanHelper.findMBeanServer()メソッドを使用して、Oracle Coherenceが使用しているものと同じMBeanサーバーを取得します。

  3. MBeanサーバーでMBeanを問い合せるようcustom-mbeans.xmlファイルを構成します。「問合せを使用したMBeanの登録」を参照してください。


注意:

ローカルMBeanサーバーにアクセスできるように環境が適切に設定されていることを確認するには、次のOracleのドキュメントを参照してください。

http://download.oracle.com/javase/7/docs/technotes/guides/management/agent.html


3.4 管理対象のCoherenceサーバーへのカスタムMBeanの登録

WLS管理対象CoherenceサーバーへのカスタムMBeansの登録は、スタンドアロンCoherenceへの登録と類似しています。カスタムMBeansの登録には、いくつかのオプションがあります。

  • custom-mbeans.xmlファイル: Coherenceが起動すると、クラスパス内のcustom-mbeans.xmlファイルを検索し、これを構成オーバーライド・ファイルとして使用します。このファイルおよびすべての関連するクラスは、/libサブディレクトリ内のドメイン・ディレクトリにあるJARファイルに配置することでクラスパスに追加できます。

  • 異なるMBean構成ファイルの指定: 管理対象Coherenceサーバーを起動するときに、tangosol.coherence.mbeansシステム・プロパティを指定して、デフォルトのcustom-mbeans.xmlのかわりに異なるMBeanオーバーライド・ファイルを使用することができます。

    -Dtangosol.coherence.mbeans=my-mbeans.xml
    

    カスタムMBeanに関連するクラスを、クラスパスに追加する必要があります。

  • CoherenceClusterSystemResources MBean: カスタムMBeansを操作的なオーバーライド・ファイルに定義して、そのファイルをCoherenceClusterSystemResources MBeanのCustomClusterConfigurationFileName属性に指定することができます。指定された構成ファイルは起動時にロードされます。

カスタムMBeansの定義の詳細は、「カスタムMBeanの宣言的な登録」を参照してください。