J'utilise le @Configuration
de Spring, et j'ai remarqué qu'un @Bean
n'est pas enregistré avec JMX.Exportation d'objets Spring @Bean à l'aide de JMX
Le haricot est câblé comme
@Bean
protected CountingHttpInterceptor countingHttpInterceptor() {
return new CountingHttpInterceptor();
}
et la définition de la classe est
@ManagedResource
public class CountingHttpInterceptor implements HttpRequestInterceptor, HttpResponseInterceptor { /* code here*/ }
Ce fichier @Configuration
est traité après le principal, basé sur XML, le contexte d'application est construit, et ne pas la possibilité de participer au processus de découverte qui est activé à l'aide de définitions de beans XML (org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource
et frits).
Comment puis-je activer JMX les beans à partir du fichier @Configuration
?
Mise à jour: la configuration xml
<bean id="jmxExporter" class="org.springframework.jmx.export.MBeanExporter">
<property name="assembler" ref="assembler"/>
<property name="namingStrategy" ref="namingStrategy"/>
<property name="autodetect" value="true"/>
</bean>
<bean id="jmxAttributeSource" class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource"/>
<bean id="assembler" class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
<property name="attributeSource" ref="jmxAttributeSource"/>
</bean>
<bean id="namingStrategy" class="org.springframework.jmx.export.naming.MetadataNamingStrategy">
<property name="attributeSource" ref="jmxAttributeSource"/>
</bean>
Cela devrait bien (il le fait pour moi, au moins). Pouvez-vous poster les parties de votre config XML qui font le travail ici? – skaffman
@skaffman: mise à jour, mais veuillez noter que cette classe @Configuration ne participe pas au contexte d'application XML parent. Au contraire, il est construit en tant que contexte d'application distinct et a le contexte d'application basé sur XML comme parent. Utilisation de Spring 3.0.2.RELEASE. –