J'ai une petite application de test pour exposer un "Bean" à JMX en utilisant Spring. Il utilise une configuration à base de XML et tout fonctionne très bien:Conversion de config XML Spring pour config JMX en Java
<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>
Mais l'application que je dois ajouter cette fonctionnalité à, utilise le style @Configuration, et je suis en train de convertir le XML ci-dessus pour travailler . J'ai ajouté quelque chose comme ceci:
@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;
}
Et tout est compilé, mais quand je charge mon JConsole Bean annotés avec @ManagedResource et @ManagedAttribute n'est pas exposé. Ai-je manqué quelque chose de simple ici?
Modifier: la réponse ci-dessous n'a pas résoudre mon problème (le problème était que je testais mon XML dans un environnement Tomcat, mais tester ma config non-XML dans une application autonome, ce qui signifie qu'il n'y avait pas présent JMXServer .. d'oh), mais cela m'a aidé à simplifier une fois que j'ai débogué ce que j'ai foiré.
Votre problème est résolu – Bhupi