当我使用 @EnableMBeanExport 时,如何使用 Spring JMX 集成设置通知侦听器映射
How to set notification listener mappings with Spring JMX integration when I'm using @EnableMBeanExport
正如Spring参考资料https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#jmx-notifications-listeners所说,我需要在通知监听器声明后通过调用MBeanExporter.setNotificationListenerMappings
方法来设置监听器映射。
使用基于XML的配置或@Bean注解配置声明时
一个 MBeanExporter
明确地, setNotificationListenerMappings
操作很容易完成。如下代码所示:
@Bean
public AnnotationMBeanExporter mBeanExporter() {
Map<String, JmxNotificationListener> mappings = new HashMap<>();
mappings.put("com.foo.spring-jmx-test:name=JmxService", new JmxNotificationListener());
AnnotationMBeanExporter exporter = new AnnotationMBeanExporter();
exporter.setRegistrationPolicy(RegistrationPolicy.IGNORE_EXISTING);
exporter.setNotificationListenerMappings(mappings);
return exporter;
}
但是当使用 @EnableMBeanExport 时,它会自动定义一个 AnnotationMBeanExporter
,我找不到将侦听器映射设置为 MBeanExporter 的方法。那么,当我使用 @EnableMBeanExport
时,有没有办法设置通知侦听器映射?
谢谢。
@EnableMBeanExport
在应用程序上下文中注册了一个 AnnotationMBeanExporter
bean,因此您可以将其注入到您的某些配置中并执行这样的映射注册:
@Autowired
AnnotationMBeanExporter exporter;
@PostConstruct
public void init() {
this.exporter.setNotificationListenerMappings(...);
}
正如Spring参考资料https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#jmx-notifications-listeners所说,我需要在通知监听器声明后通过调用MBeanExporter.setNotificationListenerMappings
方法来设置监听器映射。
使用基于XML的配置或@Bean注解配置声明时
一个 MBeanExporter
明确地, setNotificationListenerMappings
操作很容易完成。如下代码所示:
@Bean
public AnnotationMBeanExporter mBeanExporter() {
Map<String, JmxNotificationListener> mappings = new HashMap<>();
mappings.put("com.foo.spring-jmx-test:name=JmxService", new JmxNotificationListener());
AnnotationMBeanExporter exporter = new AnnotationMBeanExporter();
exporter.setRegistrationPolicy(RegistrationPolicy.IGNORE_EXISTING);
exporter.setNotificationListenerMappings(mappings);
return exporter;
}
但是当使用 @EnableMBeanExport 时,它会自动定义一个 AnnotationMBeanExporter
,我找不到将侦听器映射设置为 MBeanExporter 的方法。那么,当我使用 @EnableMBeanExport
时,有没有办法设置通知侦听器映射?
谢谢。
@EnableMBeanExport
在应用程序上下文中注册了一个 AnnotationMBeanExporter
bean,因此您可以将其注入到您的某些配置中并执行这样的映射注册:
@Autowired
AnnotationMBeanExporter exporter;
@PostConstruct
public void init() {
this.exporter.setNotificationListenerMappings(...);
}