首页 文章

覆盖Spring Boot中AnnotationMBeanExporter上的默认RegistrationPolicy

提问于
浏览
4

https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jmx/JmxAutoConfiguration.java

节目

RegistrationPolicy.FAIL_ON_EXISTING

被设定 .

我们在独立的tcserver中使用spring boot创建的WAR . 在旧版本取消部署之前会进行新部署,因此您可以部署多个版本 .

我已经在使用了

spring.jmx.default-domain=[app name]

避免跨应用程序发生冲突......但是

我们看到的错误就像

UnableToRegisterMBeanException: Unable to register MBean with  key 'dataSourceMBean'
  nested exception is javax.management.InstanceAlreadyExistsException

对于我们的数据源Mbean跨越同一个应用程序的不同版本 .

我想设置一个

RegistrationPolicy.IGNORE_EXISTING

根据http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jmx.html#jmx-exporting-registration-behavior .

我可以在维护ObjectNamingStrategy和defaultDomain的同时轻松完成这项工作吗?虽然一点也不困难,但我希望我不必覆盖所有JmxAutoConfiguration?

惭愧没有

spring.jmx.mbeanExporter.registrationPolicy

Spring 季靴子属性

干杯

1 回答

  • 3

    虽然这个问题是前一段时间被问过的,也许你已经找到了答案,但是一旦我遇到这个问题,我会在这里给出2美分,并找到适合我的解决方案 .

    最初我还不完全清楚我需要做什么,但是当仔细阅读你在问题中提供的相同 spring 文档时,我发现你可以通过引入类注释来控制SpringBoot上的注册行为

    @EnableMBeanExport(registration=RegistrationPolicy.IGNORE_EXISTING)

    如果MBean已经注册,允许Spring忽略第二次JMX注册,可以看到at the spring documentation here

相关问题