2012-06-13 38 views
8

Cấu hình: Redhat 5.3, Sun Java 1.6.31, ActiveMQ 5.4.2ActiveMQ ngoại lệ khi dừng

tôi nhận được một ngoại lệ mỗi khi tôi dừng ActiveMQ ($> Dịch vụ ActiveMQ dừng)

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 

Quá trình này vẫn chết nhưng không duyên dáng. Bất kỳ đề xuất?

Trả lời

24

Tôi đã tìm thấy một bản sửa lỗi, nhưng tôi không chắc nó giải quyết vấn đề gốc. Khi ActiveMQ đã bắt đầu tôi đã kiểm tra để xem nếu cổng 1099 thực sự là mở bằng cách sử dụng lệnh sau:

$> netstat -lptun | grep 1099 

này lệnh in không có gì cho thấy các cổng không mở cửa (với ActiveMQ bắt đầu). Điều này có nghĩa rằng mặc dù ActiveMQ đã bắt đầu, nó không lắng nghe bất kỳ kết nối JMX (đó là cách kịch bản sẽ cố gắng để ngăn chặn nó). Sau khi một số tìm kiếm xung quanh tôi tìm thấy điều này link dẫn tôi đến {ACTIVEMQ_HOME} /conf/activemq.xml tệp. Trong file này có phần sau:

<!-- 
    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> 

Thiết createConnector = "true" giải quyết vấn đề của tôi (điều này sẽ khởi động server MBean trong JVM khi ActiveMQ bắt đầu). Sản lượng shutdown bây giờ trông như thế này (như dự kiến):

... 
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 

Thêm vào đó, sau khi thay đổi cờ này tôi có thể xác minh rằng các cổng JMX mặc định (1099) mở cửa sau khi bắt đầu ActiveMQ

$> netstat -lptun | grep 1099 
tcp  0  0 :::1099      :::*      LISTEN  30033/java 
Các vấn đề liên quan