0

正如Spring参考https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#jmx-notifications-listeners所说,我需要MBeanExporter.setNotificationListenerMappings在通知监听器之后通过调用方法来设置监听器映射宣布。

当使用基于 XML 的配置或 @Bean 注解配置MBeanExporter显式声明 a 时,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

谢谢。

4

1 回答 1

1

@EnableMBeanExport应用程序上下文中注册一个AnnotationMBeanExporterbean,因此您可以将其注入到您的一些配置中并执行这样的映射注册:

@Autowired
AnnotationMBeanExporter exporter;

@PostConstruct
public void init() {
    this.exporter.setNotificationListenerMappings(...);
}
于 2019-04-24T13:44:21.917 回答