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