2012-06-13 14 views
8

Konfiguration: Redhat 5.3, Sun Java 1.6.31, ActiveMQ 5.4.2ActiveMQ Ausnahme beim Anhalten

Ich erhalte eine Ausnahme jedes Mal wenn ich activemq ($> Service activemq stop)

ACTIVEMQ_HOME: /opt/apache/apache-activemq-5.4.2 
ACTIVEMQ_BASE: /opt/apache/apache-activemq-5.4.2 
Connecting to JMX URL: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi 
ERROR: java.lang.RuntimeException: Failed to execute stop task. Reason: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: 
    java.net.ConnectException: Connection refused] 
java.lang.RuntimeException: Failed to execute stop task. Reason: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: 
    java.net.ConnectException: Connection refused] 
    at org.apache.activemq.console.command.ShutdownCommand.runTask(ShutdownCommand.java:107) 
    at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) 
    at org.apache.activemq.console.command.AbstractJmxCommand.execute(AbstractJmxCommand.java:316) 
    at org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:143) 
    at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) 
    at org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:85) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.activemq.console.Main.runTaskClass(Main.java:251) 
    at org.apache.activemq.console.Main.main(Main.java:107) 
ERROR: java.lang.Exception: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: 
    java.net.ConnectException: Connection refused] 
java.lang.Exception: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: 
    java.net.ConnectException: Connection refused] 
    at org.apache.activemq.console.command.ShutdownCommand.runTask(ShutdownCommand.java:108) 
    at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) 
    at org.apache.activemq.console.command.AbstractJmxCommand.execute(AbstractJmxCommand.java:316) 
    at org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:143) 
    at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) 
    at org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:85) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.activemq.console.Main.runTaskClass(Main.java:251) 
    at org.apache.activemq.console.Main.main(Main.java:107) 
Caused by: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: 
    java.net.ConnectException: Connection refused] 
    at javax.management.remote.rmi.RMIConnector.connect(Unknown Source) 
    at javax.management.remote.JMXConnectorFactory.connect(Unknown Source) 
    at javax.management.remote.JMXConnectorFactory.connect(Unknown Source) 
    at org.apache.activemq.console.command.AbstractJmxCommand.createJmxConnector(AbstractJmxCommand.java:214) 
    at org.apache.activemq.console.command.AbstractJmxCommand.createJmxConnection(AbstractJmxCommand.java:237) 
    at org.apache.activemq.console.command.ShutdownCommand.runTask(ShutdownCommand.java:71) 
    ... 11 more 
Caused by: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: 
    java.net.ConnectException: Connection refused] 
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(Unknown Source) 
    at com.sun.jndi.toolkit.url.GenericURLContext.lookup(Unknown Source) 
    at javax.naming.InitialContext.lookup(Unknown Source) 
    at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(Unknown Source) 
    at javax.management.remote.rmi.RMIConnector.findRMIServer(Unknown Source) 
    ... 17 more 
Caused by: java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: 
    java.net.ConnectException: Connection refused 
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source) 
    at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) 
    at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) 
    at sun.rmi.server.UnicastRef.newCall(Unknown Source) 
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) 
    ... 22 more 
Caused by: java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(Unknown Source) 
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
    at java.net.SocksSocketImpl.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at java.net.Socket.<init>(Unknown Source) 
    at java.net.Socket.<init>(Unknown Source) 
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source) 
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source) 
    ... 27 more 
stoppen

Der Prozess stirbt noch, aber nicht anmutig. Irgendwelche Vorschläge?

Antwort

24

Ich habe eine Lösung gefunden, aber ich bin mir nicht sicher, ob es das Grundproblem anspricht. Sobald ActiveMQ begonnen hat überprüfte ich, um zu sehen, ob der Port 1099 tatsächlich offen ist, den folgenden Befehl:

$> netstat -lptun | grep 1099 

Dieser Befehl druckt nichts zeigt, dass der Port nicht geöffnet ist (mit ActiveMQ gestartet). Dies bedeutet, dass, obwohl ActiveMQ gestartet wurde, es nicht auf JMX-Verbindungen wartet (auf diese Weise wird das Skript versuchen, es zu stoppen). Nachdem ich mich umgesehen habe, fand ich diese link, die mich zu der Datei {ACTIVEMQ_HOME} /conf/activemq.xml führte. In dieser Datei gibt es den folgenden Abschnitt:

<!-- 
    The managementContext is used to configure how ActiveMQ is exposed in 
    JMX. By default, ActiveMQ uses the MBean server that is started by 
    the JVM. For more information, see: 

     http://activemq.apache.org/jmx.html 
--> 
<managementContext> 
    <managementContext createConnector="false"/> 
</managementContext> 

Einstellung createConnector = „true“ aufgelöst meine Probleme (dies wird die MBeanServer innerhalb der JVM starten, wenn ActiveMQ startet). Die Abschaltung Ausgang sieht nun wie folgt (wie erwartet):

... 
ACTIVEMQ_HOME: /opt/apache/apache-activemq-5.4.2 
ACTIVEMQ_BASE: /opt/apache/apache-activemq-5.4.2 
Connecting to JMX URL: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi 
Stopping broker: localhost 
.. FINISHED 

Zusätzlich nachdem diese Einflaggung ich, dass der Standard JMX-Port offen (1099) ist

nach dem Start ActiveMQ
$> netstat -lptun | grep 1099 
tcp  0  0 :::1099      :::*      LISTEN  30033/java 
überprüfen kann