Apache ActiveMQ浏览器可以';t连接到JMX控制台

Apache ActiveMQ浏览器可以';t连接到JMX控制台,activemq,jmx,Activemq,Jmx,我正在使用ApacheActiveMQ 5.8.0版,我下载了ApacheActiveMQ浏览器2.5.2.8版 在Apache ActiveMQ中,我编辑了ActiveMQ.xml配置以使用JMX: <broker xmlns="http://activemq.apache.org/schema/core" useJmx="true" brokerName="localhost" dataDirectory="${activemq.data}"> <!-- This ne

我正在使用ApacheActiveMQ 5.8.0版,我下载了ApacheActiveMQ浏览器2.5.2.8版

在Apache ActiveMQ中,我编辑了
ActiveMQ.xml
配置以使用JMX:

<broker xmlns="http://activemq.apache.org/schema/core" useJmx="true" brokerName="localhost" dataDirectory="${activemq.data}">
  <!-- This needed to be set to true, otherwise JMX won't start in 5.8.0 -->
  <managementContext>
    <managementContext createConnector="true"/>
  </managementContext>
</broker>
当我重新启动Apache ActiveMQ时,日志显示JMX已启动并可访问:

JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi | org.apache.activemq.broker.jmx.ManagementContext | JMX connector
另外,检查端口是否正在侦听结果到侦听端口:

[me@server ~]$ netstat -lptun | grep 1099
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 :::1099                     :::*                        LISTEN      16775/java
Apache ActiveMQ正在服务器上运行。例如,在IP 10.0.0.100上。Apache ActiveMQ浏览器在我的电脑上运行(10.0.0.200)

当我尝试连接Apache ActiveMQ浏览器时,连接总是失败。我正在使用以下设置:

 JMX URL: service:jmx:rmi:///jndi/rmi://10.0.0.100:1099/jmxrmi
 JMX role: admin
 JMS password: activemq
此时,我在jmx.passwordjmx.access中将用户和密码保留为默认值

我还尝试在连接putty时为端口1099创建一个到本地端口1099的隧道,然后连接到localhost,而不是10.0.0.100,以确保没有防火墙问题。但一切都失败了


我忘了什么吗?

不幸的是,JMX需要两个端口才能正常工作。第二个(RMI注册表端口)默认情况下是随机选取的,这会导致防火墙等问题

由于JDK7u4可以使用

-Dcom.sun.management.jmxremote.rmi.port=<port>
-Dcom.sun.management.jmxremote.rmi.port=

设置要使用的RMI端口。

如果受JDK版本限制,因此无法使用-Dcom.sun.management.jmxremote.RMI.port,也可以在managementContext本身中指定RMI注册表端口

<broker xmlns="http://activemq.apache.org/schema/core" useJmx="true" brokerName="localhost" dataDirectory="${activemq.data}">
    ...
    <managementContext>
        <managementContext connectorPort="1099" rmiServerPort="<port>" />
    </managementContext>
    ...
</broker>

...
...

经历了数小时的痛苦之后。在防火墙后面连接的魔力

<managementContext>
  <managementContext createConnector="true" rmiServerPort="1098"  connectorPort="1099"  />
</managementContext>

对我来说,我得到了这个:
连接拒绝托管:;嵌套异常是:…
,即使它是在其jmx端口上侦听TCP

似乎我还需要-Djava.rmi.server.hostname=my.local.ip.address,然后它就可以正常连接url了

 service:jmx:rmi:///jndi/rmi://host:your_jmxremote_port/jmxrmi
不知道为什么

在activemq端可能也需要这个,不确定:

--jmxurl service:jmx:rmi:///jndi/rmi://127.0.0.1:11099/jmxrmi

我不知道使用了第二个端口。谢谢
 service:jmx:rmi:///jndi/rmi://host:your_jmxremote_port/jmxrmi
--jmxurl service:jmx:rmi:///jndi/rmi://127.0.0.1:11099/jmxrmi