//主运行类Main.
package jmx;
import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
public class Main {
/**
* JMX允许多种协议来实现远程连接,而简单的Java 5 JMX内置的协议是RMI远程调用协议
*
* 在运行Main时,要加下面的参数.
* -Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
*
* 即 java -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false
* -Dcom.sun.management.jmxremote.ssl=false jmx.Main(这是类名)
*
* 然后,再JDK5.0 的bin的目录下,找到jconsole.exe并运行,
* 输入IP:localhost,端口号1099就可以连接到eclipse中的JMX应用程序了
*
*
* 备注:如果当属性被修改时,要监听,可编写一个监听器类,它实现NotificationListener接口.
* 另外,MBean本身还必须在属性被修改后向NotiricationListener发出通知.MBean可直接从NofificationBroadcasterSupport派生就可以实现该功能.
*/
public static void main(String[] args) throws Exception{
//Mbean是通过MBeanServer和MBean的名称来访问MBean中,因些要将MBean注册到MBeanServer中
MBeanServer server = ManagementFactory.getPlatformMBeanServer(); //获得MBeanServer
server.registerMBean(new Hello(),new ObjectName("test:name=Hello"));
//无限等待以便JMX管理程序连接
Thread.sleep(Long.MAX_VALUE);
}
}
//HelloMBean接口:
package jmx;
public interface HelloMBean {
String getName();
void setName(String name);
void sayHello();
}
//Hello类:
package jmx;
public class Hello implements HelloMBean {
private String name = "world";
public String getName() {
return name;
}
public void sayHello() {
System.out.println("Hello, "+name);
}
public void setName(String name) {
this.name = name;
}
}