现在要用JMX来远程地监控与操作ActiveMQ,不过, 悲催的是, 第一步就有问题了, 远程的ActiveMQ连不上。 Google加Baidu了半天,看到的方法都试过了,还是不行。郁闷。现在静下心来回顾下JMX远程连接ActiveMQ的思路。 JMX连接有两种方式:1,普通端口号(非jmxrmi)方式。在默认脚本activemq基础上只改了下面的内容,其它的没动:ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 "
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONF}/jmx.password"
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONF}/jmx.access"
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.ssl=false"
#ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote"
客户端这边是直接通过jconsole方式连接的,没有用Java代码连接。 如下所示:
这里的用户名密码是admin/activemq。  应该不是用户名密码用错了吧?jconsole上直接报“连接失败”错误。
2, jmxrmi方式。在默认脚本activemq基础上只改了下面的内容,其它的没动:
ACTIVEMQ_SUNJMX_CONTROL="--jmxurl service:jmx:rmi:///jndi/rmi://127.0.0.1:1099/jmxrmi --jmxuser controlRole --jmxpassword abcd1234"
#ACTIVEMQ_SUNJMX_CONTROL=""   /etc/hosts文件中新加了“127.0.0.1   192.168.40.50”, 这里的192.168.40.50是远程服务器的IP。
      这时用java代码连接, 代码如下:
       
        RemoteJMXBrokerFacade createConnector = new RemoteJMXBrokerFacade();        System.setProperty("webconsole.jmx.url", "service:jmx:rmi:///jndi/rmi://192.168.40.50:1099/jmxrmi");
        System.setProperty("webconsole.jmx.user","controlRole");
        System.setProperty("webconsole.jmx.password","abcd1234");        SystemPropertiesConfiguration configuration = new SystemPropertiesConfiguration();
        createConnector.setConfiguration(configuration);
        try {
            BrokerViewMBean brokerAdmin = createConnector.getBrokerAdmin();  Java运行时报这样的异常: 
     java.lang.RuntimeException: java.rmi.ConnectException: Connection refused to host: 192.168.40.50; nested exception is:
  剩下的试了不少方法, 类似的有http://blog.csdn.net/lucett/article/details/7024756, 但都不行。 于是, 不想再瞎试了, 想系统地研究下JMX远程连接ActiveMQ的事。 请问谁哪有JMX远程连接ActiveMQ的时序图?或相关的材料?
注: 远程服务器上防火墙已经不再拦截端口号1099。