gpt4 book ai didi

java - 将 JMX 的 XML Spring 配置转换为 Java 配置

转载 作者:行者123 更新时间:2023-12-04 06:16:15 25 4
gpt4 key购买 nike

我有一个小型测试应用程序,用于使用 Spring 将“Bean”暴露给 JMX。它使用基于 XML 的配置,一切正常:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<context:component-scan base-package="com.dmclaughlin.spring" />
<context:property-placeholder location="classpath:test.properties"/>

<bean id="SimpleJmxController" class="com.dmclaughlin.spring.jmx.SimpleJmxBean">
<property name="activated" value="${some.activated}"/>
</bean>

<!-- Spring JMX -->
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
<property name="autodetect" value="true"></property>
<property name="namingStrategy" ref="namingStrategy"></property>
<property name="assembler" ref="assembler"></property>
</bean>
<bean id="attributeSource"
class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource"/>
<bean id="assembler"
class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
<property name="attributeSource" ref="attributeSource"/>
</bean>
<bean id="namingStrategy"
class="org.springframework.jmx.export.naming.MetadataNamingStrategy">
<property name="attributeSource" ref="attributeSource"/>
</bean>

但是我需要将此功能添加到的应用程序使用@Configuration 样式,并且我正在尝试将上述 XML 转换为工作。我添加了这样的东西:
@Bean
public MetadataNamingStrategy getNamingStrategy() {
MetadataNamingStrategy strategy = new MetadataNamingStrategy();
strategy.setAttributeSource(new AnnotationJmxAttributeSource());
return strategy;
}

@Bean
public MetadataMBeanInfoAssembler getMbeanInfoAssembler() {
return new MetadataMBeanInfoAssembler(new AnnotationJmxAttributeSource());
}

@Bean
public MBeanExporter getExporter() {
MBeanExporter exporter = new MBeanExporter();
exporter.setAutodetect(true);
exporter.setNamingStrategy(getNamingStrategy());
exporter.setAssembler(getMbeanInfoAssembler());
return exporter;
}

一切都可以编译,但是当我加载 JConsole 时,我用 @ManagedResource 和 @ManagedAttribute 注释的 Bean 没有暴露出来。我在这里错过了一些简单的东西吗?

编辑:下面的答案没有解决我的问题(问题是我在 Tomcat 环境中测试我的 XML,但在独立应用程序中测试我的非 XML 配置,这意味着没有 JMXServer 存在.. d'oh) ,但是一旦我调试了我搞砸的东西,它确实帮助我简化了。

最佳答案

对于 me添加以下内容就足够了:

@Bean
public AnnotationMBeanExporter annotationMBeanExporter() {
return new AnnotationMBeanExporter();
}

关于java - 将 JMX 的 XML Spring 配置转换为 Java 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7202051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com