用語整理
JMX
* Java Management Extensions * 外部からJava アプリケーションをモニタおよび管理するための仕組み
MBean
* Management Bean * JMXでアクセスする管理用オブジェクト
MBeanServer
* 外部との通信を行うコンポーネント
主なクラス・メソッド
* MBeanServer + queryNames() + getMBeanInfo + getAttribute() + invoke() * MBeanServerFactory + findMBeanServer()
サンプル
* 以下を参考に作ってみたhttp://alvinalexander.com/blog/post/java/source-code-java-jmx-hello-world-application
Main.java
package com.sample.mbeans; import java.lang.management.ManagementFactory; import javax.management.MBeanServer; import javax.management.ObjectName; public class Main { private MBeanServer mbs = null; public Main() { // Get the platform MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); // Unique identification of MBeans Hello helloBean = new Hello(); ObjectName helloName = null; try { // Uniquely identify the MBeans and register them with the platform MBeanServer helloName = new ObjectName("FOO:name=IHelloBean"); mbs.registerMBean(helloBean, helloName); } catch (Exception e) { e.printStackTrace(); } } // Utility method: so that the application continues to run private void waitForEnterPressed() { try { System.out.println("Press to continue..."); System.in.read(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String argv[]) { Main agent = new Main(); System.out.println("SimpleAgent is running..."); agent.waitForEnterPressed(); } }
HelloMBean.java
package com.sample.mbeans; public interface HelloMBean { public void setMessage(String message); public String getMessage(); public void sayHello(); }
Hello.java
package com.sample.mbeans; public class Hello implements HelloMBean { private String message = null; public Hello() { message = "Hello, world"; } public Hello(String message) { this.message = message; } public void setMessage(String message) { this.message = message; } public String getMessage() { return message; } public void sayHello() { System.out.println(message); } }
実行時のVM argument
実行時のVM argumentに以下を指定する-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1767 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
参考文献
Oracleサイト
http://otndnld.oracle.co.jp/document/products/wls/docs103/jmxinst/understanding.htmlhttps://docs.oracle.com/javase/jp/6/technotes/guides/jmx/
シリーズもの1
http://www.javainthebox.net/laboratory/J2SE1.5/MonitoringAndManagement/JMX/JMX1.htmlhttp://www.javainthebox.net/laboratory/J2SE1.5/MonitoringAndManagement/JMX/JMX2.html
シリーズもの2
* 一部、会員登録(無料)しないと読めないページもあるが、MBeanとは?から説明してくれるhttp://itpro.nikkeibp.co.jp/article/COLUMN/20060206/228620/
http://itpro.nikkeibp.co.jp/article/COLUMN/20060213/229137/
http://itpro.nikkeibp.co.jp/article/COLUMN/20060313/232331/
http://itpro.nikkeibp.co.jp/article/COLUMN/20060306/231781/
シリーズもの3
http://d.hatena.ne.jp/tubureteru/20100829/p2http://d.hatena.ne.jp/tubureteru/20100829/p3
http://d.hatena.ne.jp/tubureteru/20100830/p1
http://d.hatena.ne.jp/tubureteru/20100901/p1
その他
* 分かりやすいhttp://kazu.tv/blog/2007/07/08/tomcatjmx/
http://techblog.hilife-jp.info/2012/12/jmx-java-monitoring/
http://www63.tok2.com/home2/jd4/YourFirstMBean1.html