Liberty: MBean の登録の例

アプリケーションは、独自の MBean インスタンスを Liberty に登録することができます。これにより、その MBean インスタンスは、他のアプリケーションまたは外部管理者が使用できます。

MBeanServer インスタンスを使用すれば、あらゆるアプリケーションで MBean を登録できます。 いくつかの属性と操作を定義したインターフェース org.example.ExampleMBean を実装する org.example.Example というクラスがアプリケーションに含まれているものとします。以下の例のように、アプリケーションは単に Example クラスをインスタンス化してから、固有の ObjectName を使用してそれを登録できます。選択した ObjectName が既に使用されている場合は、javax.management.InstanceAlreadyExistsException が報告されます。
import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.example.Example;

...

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
Object mbean = new Example();
ObjectName name = new ObjectName("org.example.MyApplication:name=Example");
mbs.registerMBean(mbean, name);
また、アプリケーションは、java.lang.ClassLoader を継承し、任意の数の MBean 実装クラスにアクセスできるようにする MBean を登録することもできます。その後、任意の他の JMX クライアント (ローカルまたはリモート) を使用して、アプリケーションで提供されている MBean を作成して登録できます。例えば、以下のタスクを実行する MBean クラス org.example.ApplicationClassLoader がアプリケーションに含まれているものとします。
  • 任意の空のインターフェース org.example.ApplicationClassLoaderMBean を実装する
  • java.lang.Classloader を拡張する
  • org.example.Example MBean 実装クラスにアクセスできるようにする
以下のように、アプリケーションは ApplicationClassLoader のインスタンスを登録して、他の JMX クライアントが Example MBean を使用できるようにすることができます。
import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.example.ApplicationClassLoader;

...

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
Object classLoader = new ApplicationClassLoader();
ObjectName name = new ObjectName("org.example.MyApplication:name=ClassLoader");
mbs.registerMBean(classLoader, name);
すべての JMX クライアントが Example インスタンスを作成できます。 以下の例では、変数 mbsMBeanServer または MBeanServerConnection インスタンスであるものとしています。 『Liberty での JMX MBean の使用』を参照してください。
import javax.management.ObjectName;

...

ObjectName loaderName = new ObjectName("org.example.MyApplication:name=ClassLoader");
ObjectName exampleName = new ObjectName("org.example.MyApplication:name=Example");
mbs.createMBean("org.example.Example", exampleName, loaderName);

必要であれば、他の形式の MBeanServer.createMBean メソッドを使用して、非デフォルト・コンストラクターによって MBean を作成できます。

管理インターフェースについて詳しくは、Liberty の Java API 資料を参照してください。各 Liberty API の Java API 文書は、${wlp.install.dir}/dev ディレクトリーのいずれかの javadoc サブディレクトリー内の個別 .zip ファイル内にあります。


トピックのタイプを示すアイコン 参照トピック

ファイル名: rwlp_mbeans_registration.html