2014-03-26 18 views
1

我有积极的MQ和爱马仕JMS。InstanceNotFoundException当试图发现在爱马仕队列JMS

JMX连接活跃MQ在activemq.xml启用:

<managementContext> 
    <managementContext createConnector="true"/> 
</managementContext> 

但是,当我试图发现在爱马仕的JMS活动MQ会话队列我得到InstanceNotFoundException例外:

javax.management.InstanceNotFoundException: org.apache.activemq:BrokerName=localhost,Type=Broker 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:643) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:678) 
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1464) 
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97) 
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328) 
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420) 
    at javax.management.remote.rmi.RMIConnectionImpl.getAttribute(RMIConnectionImpl.java:657) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322) 
    at sun.rmi.transport.Transport$1.run(Transport.java:177) 
    at sun.rmi.transport.Transport$1.run(Transport.java:174) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Transport.java:173) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:275) 
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:252) 
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161) 
    at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source) 
    at javax.management.remote.rmi.RMIConnectionImpl_Stub.getAttribute(Unknown Source) 
    at javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.getAttribute(RMIConnector.java:902) 
    at hermes.ext.activemq.ActiveMQAdmin.discoverDestinationConfigs(ActiveMQAdmin.java:140) 
    at hermes.impl.HermesAdminAdapter.discoverDestinationConfigs(HermesAdminAdapter.java:82) 
    at hermes.impl.DefaultHermesImpl.discoverDestinationConfigs(DefaultHermesImpl.java:1126) 
    at hermes.browser.tasks.DiscoverDestinationsTask.invoke(DiscoverDestinationsTask.java:77) 
    at hermes.browser.tasks.TaskSupport.run(TaskSupport.java:175) 
    at hermes.browser.tasks.ThreadPool.run(ThreadPool.java:170) 
    at java.lang.Thread.run(Thread.java:724) 

我我正在使用Hermes 1.14Active MQ 5.9

回答

0

Hermes JMS使用JMX来发现代理上的队列。

Apache 5.8更改了名称JMX MBeans这意味着Active Mq不会找到它正在查找的MBean(因此实例未找到异常)。我试图用Active MQ 5.1发现队列,它工作。

没有办法解决它。爱马仕JMS的作者必须更新代码来支持Active MQ 5.8+

的MBean中的ActiveMQ 5.1: enter image description here

的MBean中的ActiveMQ 5.9: enter image description here