如何避免Cassandra StorageService类InstanceAlreadyExistsException

时间:2012-09-21 04:20:12

标签: exception service cassandra storage

我已创建StorageService类对象,如下所示

StorageService服务=新的StorageService();

当该指令遇到以下异常时抛出。

java.lang.RuntimeException:javax.management.InstanceAlreadyExistsException: org.apache.cassandra.db:type = StorageService     在org.apache.cassandra.service.StorageService。(StorageService.java:233)     在com.exterro.edrm.restore.EmbeddedService.main(EmbeddedService.java:144) 引起:javax.management.InstanceAlreadyExistsException:org.apache.cassandra.db:type = StorageService     at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:453)     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerInterceptor.java:1484)     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:963)     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:917)     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312)     at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:482)     在org.apache.cassandra.service.StorageService。(StorageService.java:229)     ......还有1个

        **What should I add or change to avoid this exception **            

创建此StorageService类对象后,我必须调用 startRPCServer()来启动 cassandra服务以及 regeister MBean以在java代码中以编程方式使用节点工具实用程序。 < / p>

1 个答案:

答案 0 :(得分:1)

您是否只想使用JMX来完成所有这些操作?如果是这样,那么你所做的事情比你需要的还多。以下是Java中JMX客户端的示例:http://docs.oracle.com/javase/1.5.0/docs/guide/jmx/examples/Basic/Client.java

如果你想做一些与nodetool相同的事情,我建议你只需将代码的相关部分拉出来并将它们粘贴到你的应用程序中。无需在您的应用程序中运行nodetool。