I was looking at the method protected JMXServiceURL useJmxServiceUrl() throws 
MalformedURLException in  
org.apache.activemq.console.command.AbstractJmxCommand - 

Here is the relevant code from that method - 

                    List allVMs = (List)getVMList.invoke(null, (Object[])null);

                    for(Object vmInstance : allVMs) {
                        String displayName = 
(String)getVMDescriptor.invoke(vmInstance, (Object[])null);
                        if (displayName.contains("activemq.jar start")) {
                            String id = (String)getVMId.invoke(vmInstance, 
(Object[])null);

                            Object vm = attachToVM.invoke(null, id);

                            Properties agentProperties = 
(Properties)getAgentProperties.invoke(vm, (Object[])null);
                            String connectorAddress = 
agentProperties.getProperty(CONNECTOR_ADDRESS);

                            if (connectorAddress != null) {
                                jmxUrl = connectorAddress;
                                connectingPid = Integer.parseInt(id);
                                context.print("useJmxServiceUrl Found JMS Url: 
" + jmxUrl);
                                break;
                            }
                        }
                    }

The loop that goes thru allVMs seems to have a "break;" statement if the 
connectorAddress is not null. So, the code might have a bug in it since it 
might break after the first vm in allVMs. 

This code has not been modified in a while. I talked to my friend and he said 
that "the assumption at the time might have been to just use the first broker 
you find since the commands weren't really written with the idea that they'd be 
dealing with multiple brokers.  If you want the commands to work with more than 
one broker on the same machine there might be room for some contributions"

Pull requests are welcome.

Thanks.



----- Original Message -----
From: "Gerard Weatherby" <gweathe...@uchc.edu>
To: users@activemq.apache.org
Sent: Thursday, August 13, 2015 9:52:53 AM
Subject: Second instance uses wrong pid

ActiveMQ 5.11.1

We have multiple instances running on the same server. This were created using 
the activemq script "create" command and then changing the openwire port in 
activemq.xml and the web port in jetty.xml. All transports other than openwire 
are commented out.
The instances are in sibling directories:
/usr/local/apache-activemq-5.11.1/rel
/usr/local/apache-activemq-5.11.1/qbio
Et. al.

The correct pids are in the corresponding data/activemq.pid files.

When I execute "qbio query" it finds and queries the activemq instance of a 
different server. From the log message, it seems to have something to do with 
jmxServiceUrl, but I don't understand what that's about. Here's the top lines 
of output, ending with the wrong pid:

INFO: Loading '/usr/local/apache-activemq-5.11.1/bin/env'
INFO: Using java '/usr/lib/jvm/jdk1.8.0_45/jre/bin/java'
Java Runtime: Oracle Corporation 1.8.0_45 /usr/lib/jvm/jdk1.8.0_45/jre
  Heap sizes: current=1005056k  free=989327k  max=1005056k
    JVM args: -Xms1G -Xmx1G -Djava.util.logging.config.file=logging.properties 
-Djava.security.auth.login.config=/usr/local/apache-activemq-5.11.1/qbio/conf/login.config
 -Dactivemq.classpath=/usr/local/apache-activemq-5.11.1/qbio/conf: 
-Dactivemq.home=/usr/local/apache-activemq-5.11.1 
-Dactivemq.base=/usr/local/apache-activemq-5.11.1/qbio 
-Dactivemq.conf=/usr/local/apache-activemq-5.11.1/qbio/conf 
-Dactivemq.data=/usr/local/apache-activemq-5.11.1/qbio/data
Extensions classpath:
  
[/usr/local/apache-activemq-5.11.1/qbio/lib,/usr/local/apache-activemq-5.11.1/lib,/usr/local/apache-activemq-5.11.1/qbio/lib/camel,/usr/local/apache-activemq-5.11.1/qbio/lib/optional,/usr/local/apache-activemq-5.11.1/qbio/lib/web,/usr/local/apache-activemq-5.11.1/qbio/lib/extra,/usr/local/apache-activemq-5.11.1/lib/camel,/usr/local/apache-activemq-5.11.1/lib/optional,/usr/local/apache-activemq-5.11.1/lib/web,/usr/local/apache-activemq-5.11.1/lib/extra]
ACTIVEMQ_HOME: /usr/local/apache-activemq-5.11.1
ACTIVEMQ_BASE: /usr/local/apache-activemq-5.11.1/qbio
ACTIVEMQ_CONF: /usr/local/apache-activemq-5.11.1/qbio/conf
ACTIVEMQ_DATA: /usr/local/apache-activemq-5.11.1/qbio/data
useJmxServiceUrl Found JMS Url: 
service:jmx:rmi://127.0.0.1/stub/rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LnJlbW90ZS5ybWkuUk1JU2VydmVySW1wbF9TdHViAAAAAAAAAAICAAB4cgAaamF2YS5ybWkuc2VydmVyLlJlbW90ZVN0dWLp/tzJi+FlGgIAAHhyABxqYXZhLnJtaS5zZXJ2ZXIuUmVtb3RlT2JqZWN002G0kQxhMx4DAAB4cHc5AAtVbmljYXN0UmVmMgAADjE1NS4zNy4xNzYuMTg3AADuGJUNmYhm4HoFE5hCNgAAAU8M22XIgAEAeA==
Connecting to pid: 27587

Tech data:
Linux code2.cam.uchc.edu 2.6.32-220.2.1.el6.x86_64 #1 SMP Fri Dec 23 02:21:33 
CST 2011 x86_64 x86_64 x86_64 GNU/Linux
CentOS release 6.2 (Final)

JRE 1.8.0_45

Not using an application server.

Thanks,

Gerard Weatherby  |  Application Architect
Center for Cell Analysis & Modeling  |  UConn Health
263 Farmington Avenue, Farmington, CT 06030-6406
Office: 860.679.2065
uchc.edu


Reply via email to