0

以下のコードを使用してブローカー (activemq) から 1 つのキューを削除しようとすると、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 に答える