当我尝试使用下面的代码从代理(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
如果不清楚,请通过此链接。谢谢提前
答案 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");