最近我在Spring Web应用程序中添加了JMX支持。
这适用于@Component
的bean,但是,对于某些服务,添加@ManagedResource
我有一个使用@Service
方法注释的spring服务。
我正在尝试使用@ManagedResource
将JMX添加到该服务,但看起来春天在注册bean时遇到了麻烦:
org.springframework.beans.factory.BeanCreationException:
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'mbeanExporter': Invocation of init method
failed; nested exception is
org.springframework.jmx.export.UnableToRegisterMBeanException: Unable
to register MBean [...] with key 'appAnalysisServiceImpl'; nested
exception is org.springframework.jmx.export.MBeanExportException:
Could not create ModelMBean for managed resource [
l@6142152] with key 'myservice'; nested exception is java.lang.IllegalArgumentException: MetadataMBeanInfoAssembler does
not support JDK dynamic proxies - export the target beans directly or
use CGLIB proxies instead
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
从异常消息来看,spring似乎需要为这种类提供一个特殊的导出器。 如何在不编写自己的导出器的情况下直接导出bean?
答案 0 :(得分:0)
如果您的服务使用@Transactional,则Spring无法创建ModelBean,因为服务已被代理。