Java 无法连接到RMI注册表

Java 无法连接到RMI注册表,java,ubuntu-12.04,activemq,Java,Ubuntu 12.04,Activemq,我在Ubuntu12.04上运行activemq-5.9,可以公平地说,我是activemq的新手 我怀疑我正在对记录排队,而不是将它们解排队,所以我正在研究使用JMX连接到我的活动MQ代理,看看发生了什么。Jconsole失败了 这很难,因为关于如何实现这一点的大多数文档都很旧,但我最终开始运行activemq列表。当我这样做时,它会抛出一个相当长的堆栈跟踪: Connecting to JMX URL: service:jmx:rmi:///jndi/rmi://localhost:1099

我在Ubuntu12.04上运行activemq-5.9,可以公平地说,我是activemq的新手

我怀疑我正在对记录排队,而不是将它们解排队,所以我正在研究使用JMX连接到我的活动MQ代理,看看发生了什么。Jconsole失败了

这很难,因为关于如何实现这一点的大多数文档都很旧,但我最终开始运行activemq列表。当我这样做时,它会抛出一个相当长的堆栈跟踪:

Connecting to JMX URL: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
ERROR: java.lang.RuntimeException: Failed to execute list 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]
...
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(TCPEndpoint.java:619)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:342)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:118)
    ... 21 more
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:211)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
    ... 26 more
连接到JMX URL:service:JMX:rmi:///jndi/rmi://localhost:1099/jmxrmi
错误:java.lang.RuntimeException:无法执行列表任务。原因:java.io.IOException:检索RMIServer存根失败:javax.naming.ServiceUnavailableException[根异常为java.rmi.ConnectException:拒绝连接到主机:localhost;嵌套异常为:
java.net.ConnectException:连接被拒绝]
...
原因:java.rmi.ConnectException:连接拒绝主机:localhost;嵌套异常是:
java.net.ConnectException:连接被拒绝
位于sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
位于sun.rmi.transport.tcp.tcpcchannel.createConnection(tcpcchannel.java:216)
位于sun.rmi.transport.tcp.tcpcchannel.newConnection(tcpcchannel.java:202)
位于sun.rmi.server.UnicastRef.newCall(UnicastRef.java:342)
位于sun.rmi.registry.RegistryImpl\u Stub.lookup(未知源)
在com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:118)上
... 还有21个
原因:java.net.ConnectException:连接被拒绝
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
位于java.net.socksocketimpl.connect(socksocketimpl.java:392)
位于java.net.Socket.connect(Socket.java:589)
位于java.net.Socket.connect(Socket.java:538)
位于java.net.Socket。(Socket.java:434)
位于java.net.Socket。(Socket.java:211)
位于sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
位于sun.rmi.transport.proxy.rmismastersocketfactory.createSocket(rmismastersocketfactory.java:148)
位于sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
... 26多

是否仍有配置错误的内容?我没有防火墙规则。我想不出还有什么需要寻找的。

这里没有“检索RMI服务器存根失败”。无法连接到RMI注册表。要么它根本没有运行,要么您正在查找错误的主机或端口。

确保您的RMI注册表正在运行。您可以使用另一个终端中的
rmiregistry
执行此操作,前提是它位于同一个工作目录中。

嗯,如果您查看错误消息,它就是这么说的。我正在连接localhost,这很难搞砸,它是现成的端口。这没关系。那里没有可连接的RMI注册表。在localhost:1099上根本没有监听内容。底部是TCP错误。最终的目标是检索存根,但在此之前它是失败的。那我该怎么办?netstat-l确认没有侦听任何内容。启动RMI注册表。