diff --git a/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/NotificationPublishingMessageHandler.java b/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/NotificationPublishingMessageHandler.java index 1c1a113331..caf303dbd4 100644 --- a/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/NotificationPublishingMessageHandler.java +++ b/spring-integration-jmx/src/main/java/org/springframework/integration/jmx/NotificationPublishingMessageHandler.java @@ -22,6 +22,7 @@ import javax.management.MalformedObjectNameException; import javax.management.Notification; import javax.management.ObjectName; +import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.BeanFactoryUtils; import org.springframework.beans.factory.InitializingBean; @@ -60,7 +61,6 @@ public class NotificationPublishingMessageHandler extends AbstractMessageHandler private String defaultNotificationType; - @Nullable private OutboundMessageMapper notificationMapper; @@ -109,11 +109,12 @@ public class NotificationPublishingMessageHandler extends AbstractMessageHandler @Override public final void onInit() { - Assert.isTrue(this.getBeanFactory() instanceof ListableBeanFactory, "A ListableBeanFactory is required."); + BeanFactory beanFactory = getBeanFactory(); + Assert.isTrue(beanFactory instanceof ListableBeanFactory, "A ListableBeanFactory is required."); Map exporters = - BeanFactoryUtils.beansOfTypeIncludingAncestors((ListableBeanFactory) getBeanFactory(), + BeanFactoryUtils.beansOfTypeIncludingAncestors((ListableBeanFactory) beanFactory, MBeanExporter.class); - Assert.isTrue(exporters.size() > 0, "No MBeanExporter is available in the current context."); + Assert.state(exporters.size() > 0, "No MBeanExporter is available in the current context."); MBeanExporter exporter = null; for (MBeanExporter exp : exporters.values()) { exporter = exp; @@ -124,9 +125,11 @@ public class NotificationPublishingMessageHandler extends AbstractMessageHandler if (this.notificationMapper == null) { this.notificationMapper = new DefaultNotificationMapper(this.objectName, this.defaultNotificationType); } - exporter.registerManagedResource(this.delegate, this.objectName); - if (this.logger.isInfoEnabled()) { - this.logger.info("Registered JMX notification publisher as MBean with ObjectName: " + this.objectName); + if (exporter != null) { + exporter.registerManagedResource(this.delegate, this.objectName); + if (this.logger.isInfoEnabled()) { + this.logger.info("Registered JMX notification publisher as MBean with ObjectName: " + this.objectName); + } } }