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 = "";@Overridepublic String getName() {return name;}@Overridepublic void print() {System.out.println("Hello, " + name + "!");}@Overridepublic 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这个节点,即我们要管理的对象了
?