我们有一些集成测试,但最近我们遇到了一个问题,@ManagedResource 挡住了路:
Unable to register MBean [com.api.configuration.ApiConfiguration@63fde7ca] with key 'apiConfiguration'; nested exception is javax.management.InstanceAlreadyExistsException: api:name=ApiConfiguration
有问题的 bean 看起来像这样:
@Component
@ManagedResource(objectName = "api:name=ApiConfiguration")
public class ApiConfiguration {
@ManagedOperation
public void reloadConfiguration() {
// do something
}
}
我们尝试在每个集成测试中添加一个 @DirtiesContext
但没有成功。
该错误仅在从 Maven 或 IntelliJ 运行所有测试时出现。如果我们只运行其中一个失败的测试,它就会起作用。
最佳答案
如果你使用的是基于java的配置你只需要添加这个
@EnableMBeanExport(registration=RegistrationPolicy.REPLACE_EXISTING) 或者 @EnableMBeanExport(registration=RegistrationPolicy.IGNORE_EXISTING)
因此它将替换或使用已经存在的 bean(根据您的配置)并且它不会给出任何类型的错误
关于java - 测试:无法注册 MBean 实例已经存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48440027/