Skip to content

Commit aa30fdb

Browse files
author
Dave Syer
committed
Add MBeanServer @bean in case it is needed
Anywhere that an MBeanServer is needed it should be created @Conditionally, so that user can exclude the JmxAutoConfiguration and still get the other JMX behaviours automatically.
1 parent 1a5c4f8 commit aa30fdb

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/EndpointMBeanExportAutoConfiguration.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
2525
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2626
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
27+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2728
import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration;
2829
import org.springframework.boot.context.properties.EnableConfigurationProperties;
2930
import org.springframework.context.annotation.Bean;
3031
import org.springframework.context.annotation.Configuration;
32+
import org.springframework.jmx.support.MBeanServerFactoryBean;
3133
import org.springframework.util.StringUtils;
3234

3335
/**
@@ -61,4 +63,11 @@ public EndpointMBeanExporter endpointMBeanExporter(MBeanServer server) {
6163
return mbeanExporter;
6264
}
6365

66+
@Bean
67+
@ConditionalOnMissingBean(MBeanServer.class)
68+
public MBeanServerFactoryBean mbeanServer() {
69+
MBeanServerFactoryBean factory = new MBeanServerFactoryBean();
70+
factory.setLocateExistingServerIfPossible(true);
71+
return factory;
72+
}
6473
}

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfiguration.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,19 @@
1616

1717
package org.springframework.boot.autoconfigure.integration;
1818

19+
import javax.management.MBeanServer;
20+
1921
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
2022
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2123
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
2224
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2325
import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration;
26+
import org.springframework.context.annotation.Bean;
2427
import org.springframework.context.annotation.Configuration;
2528
import org.springframework.integration.config.EnableIntegration;
2629
import org.springframework.integration.jmx.config.EnableIntegrationMBeanExport;
2730
import org.springframework.integration.jmx.config.IntegrationMBeanExportConfiguration;
31+
import org.springframework.jmx.support.MBeanServerFactoryBean;
2832

2933
/**
3034
* {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration
@@ -52,4 +56,12 @@ protected static class IntegrationConfiguration {
5256
protected static class IntegrationJmxConfiguration {
5357
}
5458

59+
@Bean
60+
@ConditionalOnMissingBean(MBeanServer.class)
61+
public MBeanServerFactoryBean mbeanServer() {
62+
MBeanServerFactoryBean factory = new MBeanServerFactoryBean();
63+
factory.setLocateExistingServerIfPossible(true);
64+
return factory;
65+
}
66+
5567
}

0 commit comments

Comments
 (0)