2016-11-23 31 views
0

當JAVA_HOME指向JRE(1.8.111)時,我無法使用activemq-admin.bat腳本停止JMS代理。使用JDK時不會出現該問題。 在腳本的ACTIVEMQ_SUNJMX_START參數被註釋掉和默認端口改爲61099這樣的:當JAVA_HOME指向JRE時,無法使用activemq-admin.bat停止JMS代理1.8

"set ACTIVEMQ_SUNJMX_START=-Dcom.sun.management.jmxremote.port=61099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" 

不知怎的,它的端口看起來被忽略......

我們是否需要一個JDK停止經紀人? 任何想法?

JRE 1.8.111 PATH\bin>call "..\middleware\apache-activemq-5.14.0\bin\activemq-admin.bat" "stop" Java Runtime: Oracle Corporation 1.8.0_111 C:\Program Files\Java\jre1.8.0_111 Heap sizes: current=251392k free=248770k max=3706880k JVM args: -Dactivemq.classpath=PATH\middleware\apache-activemq-5.14.0\bin..\conf;_PROGRAM_DATA_\middleware\apache-activemq-5.14.0; -Dactivemq.home=PATH\middleware\apache-activemq-5.14.0\bin.. -Dactivemq.base=PATH\middleware\apache-activemq-5.14.0\bin.. -Dactivemq.data=_PROGRAM_DATA_\middleware\apache-activemq-5.14.0 -Djava.io.tmpdir=_PROGRAM_DATA_\middleware\apache-activemq-5.14.0\tmp -Dactivemq.conf=PATH\middleware\apache-activemq-5.14.0\bin..\conf Extensions classpath: [PATH\middleware\apache-activemq-5.14.0\bin..\lib,PATH\middleware\apache-activemq-5.14.0\bin..\lib\camel,PATH\middleware\apache-activemq-5.14.0\bin..\lib\optional,PATH\middleware\apache-activemq-5.14.0\bin..\lib\web,PATH\middleware\apache-activemq-5.14.0\bin..\lib\extra] ACTIVEMQ_HOME: PATH\middleware\apache-activemq-5.14.0\bin.. ACTIVEMQ_BASE: PATH\middleware\apache-activemq-5.14.0\bin.. ACTIVEMQ_CONF: PATH\middleware\apache-activemq-5.14.0\bin..\conf ACTIVEMQ_DATA: _PROGRAM_DATA_\middleware\apache-activemq-5.14.0 Connecting to JMX URL: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi INFO: Broker not available at: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi

JDK 1.8.111 PATH\bin>call "..\middleware\apache-activemq-5.14.0\bin\activemq-admin.bat" "stop" Java Runtime: Oracle Corporation 1.8.0_111 C:\Program Files\Java\jdk1.8.0_111\jre Heap sizes: current=251392k free=248770k max=3706880k JVM args: -Dactivemq.classpath=PATH\middleware\apache-activemq-5.14.0\bin..\conf;_PROGRAM_DATA_\middleware\apache-activemq-5.14.0; -Dactivemq.home=PATH\middleware\apache-activemq-5.14.0\bin.. -Dactivemq.base=PATH\middleware\apache-activemq-5.14.0\bin.. -Dactivemq.data=_PROGRAM_DATA_\middleware\apache-activemq-5.14.0 -Djava.io.tmpdir=_PROGRAM_DATA_\middleware\apache-activemq-5.14.0\tmp -Dactivemq.conf=PATH\middleware\apache-activemq-5.14.0\bin..\conf Extensions classpath: [PATH\middleware\apache-activemq-5.14.0\bin..\lib,PATH\middleware\apache-activemq-5.14.0\bin..\lib\camel,PATH\middleware\apache-activemq-5.14.0\bin..\lib\optional,PATH\middleware\apache-activemq-5.14.0\bin..\lib\web,PATH\middleware\apache-activemq-5.14.0\bin..\lib\extra] ACTIVEMQ_HOME: PATH\middleware\apache-activemq-5.14.0\bin.. ACTIVEMQ_BASE: PATH\middleware\apache-activemq-5.14.0\bin.. ACTIVEMQ_CONF: PATH\middleware\apache-activemq-5.14.0\bin..\conf ACTIVEMQ_DATA: _PROGRAM_DATA_\middleware\apache-activemq-5.14.0 useJmxServiceUrl Found JMS Url: service:jmx:rmi://127.0.0.1/stub/rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LnJlbW90ZS5ybWkuUk1JU2VydmVySW1wbF9TdHViAAAAAAAAAAICAAB4cgAaamF2YS5ybWkuc2VydmVyLlJlbW90ZVN0dWLp/tzJi+FlGgIAAHhyABxqYXZhLnJtaS5zZXJ2Z XIuUmVtb3RlT2JqZWN002G0kQxhMx4DAAB4cHc5AAtVbmljYXN0UmVmMgAADjE5Mi4xNjguMTAwLjIwAAD9nHXsmR+4orQ3llsk9wAAAVhxZdSygAIAeA== Connecting to pid: 5020 Stopping broker: MYBROKER

回答

3

這是因爲ActiveMQ的使用Java Attach API自動發現JMX URL。要使用此API,類將從$JAVA_HOME\..\lib\tools.jar加載。由於tools.jar是JDK(參見JDK files)的一部分,因此對於JRE(不是JDK $JDK_HOME\jre附帶的JRE)將會失敗。

要使用JRE停止代理,您必須提供JMX URL。

set ACTIVEMQ_OPTS=-Dactivemq.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:61099/jmxrmi 
activemq-admin.bat stop 

連接消息看起來像

Connecting to JMX URL: service:jmx:rmi:///jndi/rmi://localhost:61099/jmxrmi 
+0

THX的答案。我會嘗試。 – user1730838

+0

它的工作 - 現在經紀人停止。 – user1730838

相關問題