java – 覆盖Spring Boot中AnnotationMBeanExporter上的默认RegistrationPolicy

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

春季靴子属性

干杯

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

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

@EnableMBeanExport(注册= RegistrationPolicy.IGNORE_EXISTING)

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

转载注明原文:java – 覆盖Spring Boot中AnnotationMBeanExporter上的默认RegistrationPolicy - 代码日志