当我尝试删除队列得到异常,如Activemq中的InstanceNotFoundException

时间:2013-11-08 14:20:25

标签: java jms activemq messaging

当我尝试使用下面的代码从代理(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

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

2 个答案:

答案 0 :(得分:1)

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

带有您发现的笔记的博客是从2010年开始的,所以它涵盖了一个较旧的ActiveMQ版本,其中MBean名称没有改变。

答案 1 :(得分:0)

我得到了答案。代码如下

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

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

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