最近在学习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这个节点,即我们要管理的对象了