我已创建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>
答案 0 :(得分:1)
您是否只想使用JMX来完成所有这些操作?如果是这样,那么你所做的事情比你需要的还多。以下是Java中JMX客户端的示例:http://docs.oracle.com/javase/1.5.0/docs/guide/jmx/examples/Basic/Client.java
如果你想做一些与nodetool相同的事情,我建议你只需将代码的相关部分拉出来并将它们粘贴到你的应用程序中。无需在您的应用程序中运行nodetool。