在使用Jmx獲取ActiveMQ信息時,訪問遠程Linux開發機器上的Jmx,代碼片段:
RemoteJMXBrokerFacade createConnector = new RemoteJMXBrokerFacade();
System.setProperty("webconsole.jmx.url","service:jmx:rmi://jndi/rmi://10.17.2.216:1099/jmxrmi");
System.setProperty("webconsole.jmx.user","admin");
System.setProperty("webconsole.jmx.password","activemq");
SystemPropertiesConfiguration configuration = new SystemPropertiesConfiguration();
createConnector.setConfiguration(configuration);
BrokerViewMBean brokerAdmin = createConnector.getBrokerAdmin();
報異常:
java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested
這個127.0.0.1非常奇怪,后來查清是遠程JMX啟動時參數錯誤導致。
解決方法:
在activemq啟動腳本中編輯,找到 $ ACTIVEQM_SUNJMX_START,在后面加 -Djava.rmi.server.hostname= <ip>
例如我的是-Djava.rmi.server.hostname=10.17.2.216
重啟ActiveMQ,可正常連接。