java - 测试:无法注册 MBean 实例已经存在

标签 java testing integration-testing jmx

我们有一些集成测试,但最近我们遇到了一个问题,@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/

相关文章:

java - 如何将逻辑运算符应用于 Java 中的所有元素

maven - 如果设置了skipITs,如何跳过maven阶段预集成测试?

c# - 覆盖 Autofac 注册 - 使用 DI 进行集成测试

java - JAXB:未编码的 XML 中缺少 "xsi-type"属性

java - setVisibility 列表<item>

javascript - 测试中 AngularJS 中 Controller 初始化时调用的模拟操作

c# - wsdl 到空服务器实现?

android - 单元测试Android,从资源中获取字符串

java - 从 IDE 中在远程服务器上运行 TestNG/JUnit 集成测试

java - Windows 10 - 系统环境变量(路径与 PATH)