2013-09-30 19 views
12

Sto usando Apache ActiveMQ version 5.8.0 e ho scaricato Apache ActiveMQ Browser version 2.5.2.8Apache ActiveMQ browser non riesce a connettersi alla console JMX

Entro Apache ActiveMQ ho modificato la configurazione activemq.xml di utilizzare 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> 

All'interno dello script di avvio ho impostato le impostazioni JMX come segue:

#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" 

Quando ho riavviato Apache ActiveMQ, il registro me il JMX è stato avviato e accessibl mostra e:

JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi | org.apache.activemq.broker.jmx.ManagementContext | JMX connector 

verifica anche se la porta è in ascolto i risultati in una porta di ascolto:

[[email protected] ~]$ 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 è in esecuzione su un server. Ad esempio su IP 10.0.0.100. Apache ActiveMQ Browser gira sul mio PC (10.0.0.200).

Quando provo a connettermi con Apache ActiveMQ Browser, le connessioni continuano a non riuscire. Sto utilizzando le seguenti impostazioni:

JMX URL: service:jmx:rmi:///jndi/rmi://10.0.0.100:1099/jmxrmi 
JMX role: admin 
JMS password: activemq 

ho lasciato l'utente e la password in questo momento in modo predefinito in jmx.password e jmx.access.

Ho provato anche durante la connessione con mastice per creare un tunnel per porta 1099 alla porta locale 1099 e quindi connettersi localhost anziché 10.0.0.100 per essere sicuri nessun firewall è il problema. Ma tutto fallisce.

Sto dimenticando qualcosa?

risposta

15

Sfortunatamente, JMX ha bisogno di due porte per funzionare correttamente. E la seconda (la porta registro RMI) è di default selezionati a caso causando problemi con i firewall ecc

Da JDK7u4 utilizzabili

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

per impostare la porta RMI da utilizzare.

+0

non sapevo che ci fosse una seconda porta utilizzata. Grazie! –

5

Se la versione di JDK è limitata, quindi non è possibile utilizzare -Dcom.sun.management.jmxremote.rmi.port, in alternativa è possibile specificare la porta del registro RMI nello stesso managementContext.

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

Dopo ore di sofferenza. La magia di connettersi dietro un firewall.

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

Esempio stringa di connessione:

service:jmx:rmi://10.0.4.14:1098/jndi/rmi://10.0.4.14:1099/jmxrmi 
Problemi correlati