1

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

StorageService service=new StorageService();

当此指令遇到以下异常时,已抛出异常。

java.lang.RuntimeException: javax.management.InstanceAlreadyExistsException: org.apache.cassandra.db:type=StorageService
    at org.apache.cassandra.service.StorageService.<init>(StorageService.java:233)
    at com.exterro.edrm.restore.EmbeddedService.main(EmbeddedService.java:144)
Caused by: 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)
    at org.apache.cassandra.service.StorageService.<init>(StorageService.java:229)
    ... 1 more

我应该添加或更改什么以避免此异常?

创建此 StorageService 类对象后,我必须调用startRPCServer()以启动 cassandra 服务以及注册 MBean 以在 java 代码中以编程方式使用 nodetool 实用程序。

4

1 回答 1

1

您是否只是为了使用 JMX 而尝试执行所有这些操作?如果是这样,你做的比你需要的要多。这是 Java 中的 JMX 客户端示例:http: //docs.oracle.com/javase/1.5.0/docs/guide/jmx/examples/Basic/Client.java

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

于 2012-09-22T02:37:09.100 回答