hawtio InstanceAlreadyExistsException 类型=安全名称=RBACRegistry

hawtio InstanceAlreadyExistsException type=security name=RBACRegistry

我尝试了 运行 一个带有 hawtio 的示例 Camel 应用程序,它在 Tomcat 8 上的 Hawtio getting stated page (http://hawt.io/getstarted/index.html) 中列出,并得到异常,

SEVERE:向 class io.hawt.HawtioContextListener 的侦听器实例发送上下文初始化事件时发生异常 java.lang.RuntimeException: javax.management.InstanceAlreadyExistsException: hawtio:type=security,name=RBACRegistry 在 io.hawt.HawtioContextListener.createServletException(HawtioContextListener.java:61) 在 io.hawt.HawtioContextListener.contextInitialized(HawtioContextListener.java:40) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4842) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397) 在 java.util.concurrent.FutureTask.run(来源不明) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(来源不明) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(来源不明) 引起:javax.management.InstanceAlreadyExistsException: hawtio:type=security,name=RBACRegistry 在 com.sun.jmx.mbeanserver.Repository.addMBean(来源不明) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(来源不明) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(来源不明) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(来源不明) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(来源不明) 在 com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(来源不明) 在 io.hawt.jmx.RBACRegistry.init(RBACRegistry.java:64) 在 io.hawt.HawtioContextListener.contextInitialized(HawtioContextListener.java:38) ... 还有 9 个

谁能告诉我该怎么做。

Caused by: javax.management.InstanceAlreadyExistsException: hawtio:type=security,name=RBACRegistry

这是因为您的 hawtio 在初始化时试图将 hawtio:type=security,name=RBACRegistry 注册到 MBean 注册表,但发现它已经在其他地方注册了。我怀疑您在 Tomcat 上部署了不止一个 hawtio 实例。如果是这样,请确保在一台应用服务器上只部署一个 hawtio 实例。

如果您确定只部署了一个 hawtio 实例,那么您需要检查 hawtio:type=security,name=RBACRegistry 是否真的已经存在,方法是使用 JConsole 等 JMX 客户端连接到 Tomcat 服务器。然后找出这个MBean是在哪里注册的。