JMX是java 管理扩展的简称,主要是为系统的管理提供一套有效的机制,我使用jmx主要是为开发中一些需要系统配置的地方提供热部署的功能。这只是我的简单理解。也希望大家能给我多提批评意见,帮助我提高自己的知识水平。
使用JMX比较简单,首先到Sun 主页上下载JMX的参考实现。http://java.sun.com/products/JavaManagement/download.html
第一步:写一个MBean 它与普通的Bean 基本上没有什么区别。不过一定要用MBean结尾.
/**
**用接口来定义Bean,然后用一个类来实现
**/
public interface HelloWorldMBean {
public String sayHello (String inputString);
public String getState();
public void setState(String state);
}
public class HelloWorld implements HelloWorldMBean {
private String state="run";
public String getState() {
// TODO Auto-generated method stub
return state;
}
public String sayHello(String inputString) {
// TODO Auto-generated method stub
return "hello"+inputString;
}
public void setState(String state) {
// TODO Auto-generated method stub
this.state=state;
}
}
import java.io.IOException;
import javax.management.InstanceAlreadyExistsException;
import javax.management.MBeanException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
import javax.management.ReflectionException;
public class MServer {
public static void main(String arg[]){
MBeanServer mbs = MBeanServerFactory.createMBeanServer();
String domain = mbs.getDefaultDomain();
String mbeanClassName = "HelloWorld";
String mbeanObjectNameStr = domain + ":type=" + mbeanClassName + ",index=1";
ObjectName mbeanObjectName = createSimpleMBean(mbs, mbeanClassName, mbeanObjectNameStr);
}
private static ObjectName createSimpleMBean(MBeanServer mbs, String mbeanClassName, String mbeanObjectNameStr) {
// TODO Auto-generated method stub
ObjectName mbeanObjectName = null;
try {
mbeanObjectName =
ObjectName.getInstance(mbeanObjectNameStr);
mbs.createMBean(mbeanClassName, mbeanObjectName);
} catch (MalformedObjectNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstanceAlreadyExistsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MBeanRegistrationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotCompliantMBeanException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ReflectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MBeanException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mbeanObjectName;
}
}