JMX- Java Management Extensions
MBean (Managed Bean)
- JavaBeansの一種であり、
- 依存性の注入により作られている。
- MBeanはJava Virtual Machine上で走るリソース(アプリケーションやJava EE技術サービス(トランザクション・モニタやJDBCドライバなど))との連絡窓口の役割を果たす
- MBeanは、関心のある統計数値(パフォーマンス、リソース使用量、問題など)を収集すること(プル)、アプリケーションの設定値を取得または設定すること(プッシュ/プル)、および障害や状態変化などのイベントを通知すること(プッシュ)に使える
できること
稼働中のJVMのメソッドが呼べる(MBean経由で外部に公開されているものであればなんでも出来る)
- 稼働中にログレベルを変更したり
- やばそうだからGC呼んでみたり
- 設定変更や動作に直結する変更でも、いちいち再起動する必要がない
- 稼働中のJVMの内部状態が見える
JMXをリモートで接続し、管理するためには
リモートから MBeanServer に接続するために
- Connector
- Connector は JMX に特有のプロトコルを使用して MBeanServer と監視システムの通信を行うもの
- Protocol Adapter
- Protocol Adapter は JMX のプロトコルを他のプロトコルに変換して通信を行うもの
- tomcatの管理にも使っている
- SNMP
- 他のプロトコルとして HTML やネットワーク機器を管理するために使用される がある
ほか jconsole
MBean を作る
- StandardMBean
- DynamicMBean
- OpenMBean
- ModelMBean
MBeanインターフェイスとその実装
public interface HogeFTPServerMBean {
public String getUptime();
public int getReadBytes();
public int getWrittenBytes();
public void setEchoMessage(String msg);
}
で、これをimplementsしたサーバを書いて、それが起動する際に
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
server.registerMBean(this, new ObjectName("yourDomain:type=hogeFTPServer"));
などと書いておけばあら不思議、先ほどのインターフェイスを実行中に呼び出すことができます。