Search code examples
activemq-classic

Find out the meaning of "failed to resolve jmxUrl" in the ActiveMQ log


We got the following error but we did not change anything. Although the activemq is still functioning, we would like to understand the meaning of "failed to resolve jmxUrl for pid:11404".
Version: apache-activemq-5.12.1 and Java 1.7 Platform: redhat 6.8

[rhmvno03 ~]$ /app/actmq/current/bin/activemq restart
INFO: Loading '/app/actmq/apache-activemq-5.12.1//bin/env'
INFO: Using java '/usr/bin/java'
INFO: Loading '/app/actmq/apache-activemq-5.12.1//bin/env'
INFO: Using java '/usr/bin/java'
INFO: Waiting at least 30 seconds for regular process termination of pid '11404' :
Java Runtime: Oracle Corporation 1.7.0_261 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261.x86_64/jre
  Heap sizes: current=63488k  free=62473k  max=932352k
    JVM args: -Xms64M -Xmx1024M -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/app/actmq/apache-activemq-5.12.1//conf/login.config -Dactivemq.classpath=/app/actmq/apache-activemq-5.12.1//conf:/app/actmq/apache-activemq-5.12.1//../lib/ -Dactivemq.home=/app/actmq/apache-activemq-5.12.1/ -Dactivemq.base=/app/actmq/apache-activemq-5.12.1/ -Dactivemq.conf=/app/actmq/apache-activemq-5.12.1//conf -Dactivemq.data=/app/actmq/apache-activemq-5.12.1//data
Extensions classpath:
  [/app/actmq/apache-activemq-5.12.1/lib,/app/actmq/apache-activemq-5.12.1/lib/camel,/app/actmq/apache-activemq-5.12.1/lib/optional,/app/actmq/apache-activemq-5.12.1/lib/web,/app/actmq/apache-activemq-5.12.1/lib/extra]
ACTIVEMQ_HOME: /app/actmq/apache-activemq-5.12.1
ACTIVEMQ_BASE: /app/actmq/apache-activemq-5.12.1
ACTIVEMQ_CONF: /app/actmq/apache-activemq-5.12.1/conf
ACTIVEMQ_DATA: /app/actmq/apache-activemq-5.12.1/data
Connecting to pid: 11404
INFO: failed to resolve jmxUrl for pid:11404, using default JMX url
Connecting to JMX URL: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
Stopping broker: rhmvno03
.. TERMINATED

Solution

  • The log statement is not necessarily an error. It is logged at INFO level because it is simply informing the user of the situation.

    ActiveMQ management is ultimately based on Java Management Extensions (i.e. JMX). Therefore, when you invoke the activemq restart command the code attempts to use the process ID (i.e. 11404 in this case) to derive the proper JMX URL by inspecting the com.sun.management.jmxremote.localConnectorAddress system property of the JVM instance with the corresponding process ID. If it can't find this value, for whatever reason, then it logs this and falls back to the default (i.e. service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi).

    As long as you aren't running multiple instances of ActiveMQ on the same hardware or using a non-standard port for JMX then everything should work fine with the default JMX URL.