From 49f0a33791ac8a95a60a4c1d6075b1ad7ff74073 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Thu, 11 Oct 2018 12:25:06 -0400 Subject: [PATCH] Defensive MBeanExporterHelper Registration If the initializer is somehow called more than once, context initialization will fail with default Boot 2.1 settings, which do not allow bean overrides. --- .../jmx/config/JmxIntegrationConfigurationInitializer.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/config/JmxIntegrationConfigurationInitializer.java b/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/config/JmxIntegrationConfigurationInitializer.java index 326fa7145a..1785c38c60 100644 --- a/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/config/JmxIntegrationConfigurationInitializer.java +++ b/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/config/JmxIntegrationConfigurationInitializer.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2016 the original author or authors. + * Copyright 2014-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ import org.springframework.integration.monitor.IntegrationMBeanExporter; * The JMX Integration infrastructure {@code beanFactory} initializer. * * @author Artem Bilan + * @author Gary Russell * @since 4.0 */ public class JmxIntegrationConfigurationInitializer implements IntegrationConfigurationInitializer { @@ -39,7 +40,8 @@ public class JmxIntegrationConfigurationInitializer implements IntegrationConfig } private void registerMBeanExporterHelperIfNecessary(ConfigurableListableBeanFactory beanFactory) { - if (beanFactory.getBeanNamesForType(IntegrationMBeanExporter.class, false, false).length > 0) { + if (!beanFactory.containsBean(MBEAN_EXPORTER_HELPER_BEAN_NAME) + && beanFactory.getBeanNamesForType(IntegrationMBeanExporter.class, false, false).length > 0) { ((BeanDefinitionRegistry) beanFactory).registerBeanDefinition(MBEAN_EXPORTER_HELPER_BEAN_NAME, new RootBeanDefinition(MBeanExporterHelper.class)); }