0

当我尝试使用以下代码从代理(activemq)中删除一个队列时,我收到了类似Instancenotfound exception.code的错误

JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
JMXConnector jmxc = JMXConnectorFactory.connect(url);
MBeanServerConnection conn = jmxc.getMBeanServerConnection();

String operationName="removeQueue";
String parameter="PostWithParameter_Queue"; //am given queue name
ObjectName activeMQ = new ObjectName("org.apache.activemq:BrokerName=localhost,Type=Broker");
if(parameter != null) {
    Object[] params = {parameter};
    String[] sig = {"java.lang.String"};
    conn.invoke(activeMQ, operationName, params, sig);
} else {
    conn.invoke(activeMQ, operationName,null,null);
} 

我得到的确切错误如下所示

   Exception in thread "main" javax.management.InstanceNotFoundException: org.apache.activemq:BrokerName=localhost,Type=Broker
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(Unknown Source)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getClassLoaderFor(Unknown Source)
at com.sun.jmx.mbeanserver.JmxMBeanServer.getClassLoaderFor(Unknown Source)

我从下面的链接中得到了这个代码

http://www.consulting-notes.com/2010/08/monitoring-and-managing-activemq-with.html

如果不清楚,请通过此链接。谢谢提前

4

2 回答 2

1

Apache ActiveMQ 5.8 更改了 MBean 命名。请参阅发行说明中的​​详细信息,其中包含旧名称与新名称的表:http: //activemq.apache.org/activemq-580-release.html

您找到的带有注释的博客来自 2010 年,因此它涵盖了 MBean 名称未更改的旧 ActiveMQ 版本。

于 2013-11-11T09:21:38.010 回答
0

我得到了答案。代码如下

ObjectName activeMQ = new ObjectName("org.apache.activemq:BrokerName=localhost,Type=Broker");

在上面的代码中,我提到了 BrokerName 和 Type 的第一个字母是大写的。但它应该是小写字母

ObjectName activeMQ = new ObjectName("org.apache.activemq:brokerName=localhost,type=Broker");
于 2013-11-11T10:15:31.987 回答