JMX远程管理示例小程序

  最近在学习JMX相关的知识,本地管理程序相对容易做到,因为不需要配置启动参数,对于不了解如何写bat或sh文件的人来说,还是有点难度的。由于本人在日企工作,系统也是日语的,在命令行下敲命令,错误信息一堆日文,很伤...

  下面我以Eclipse和JDK6作为环境来演示下JMX的远程管理:

 

文件1:HelloMBean.java

public interface HelloMBean {
	public void setName(String name);
	
	public String getName();
	
	public void print();
}

 

 文件2:Hello.java

 

public class Hello implements HelloMBean {
	private String name = "";

	@Override
	public String getName() {
		return name;
	}

	@Override
	public void print() {
		System.out.println("Hello, " + name  + "!");
	}

	@Override
	public void setName(String name) {
		this.name = name;
	}

}

 

 文件3:JmxDemo.java

public class JmxDemo {

	/**
	 * @param args
	 * @throws NullPointerException 
	 * @throws MalformedObjectNameException 
	 * @throws NotCompliantMBeanException 
	 * @throws MBeanRegistrationException 
	 * @throws InstanceAlreadyExistsException 
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException, MalformedObjectNameException, NullPointerException, InterruptedException {
		MBeanServer server = ManagementFactory.getPlatformMBeanServer();
		
		server.registerMBean(new Hello(), new ObjectName("com.jmxdemo.test2:type=Hello"));
		
		Thread.sleep(Long.MAX_VALUE);
		
	}

}

 ok,文件都有了,建工程和包组织我就不说了,只要文件引用正确就没问题。当然这是最简单的标准MBean,您可以自己写测试用例,下面是很多新手不知道的,至少我才知道不久。

 

1. 在JmxDemo.java文件中,右键—>Run As—>Run Configurations...;

2. 左边选择你要执行的程序,此处是JmxDemo,在右边Name中会显示你选择的程序,Main选项卡还会显示程序所在的工程名称和执行类,确定这些后切换到Arguments选项卡;

3. 在VM arguments文本框中添加如下的参数

-Dcom.sun.management.jmxremote.port=9998
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

 

点击Apply,然后Run即可

 

4.打开命令行,输入jconsole

 

5.在打开的程序中选择远程连接,

地址:localhost:9998

因为不要验证,所以无需填写用户名和密码

不出意外,连接成功的话,就可以进入并管理了,在MBean选项卡中可以看到com.jmxdemo.test2这个节点,即我们要管理的对象了

 

你可能感兴趣的:(jmx)