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 に答える