【发布时间】:2017-06-14 15:45:30
【问题描述】:
我正在尝试按照文章here 和here 为ehCache 实现JMX。但是,我的应用使用 Spring 实现,并且下面的配置条目会出现此异常:
org.springframework.beans.factory.UnsatisfiedDependencyException: 创建类中定义的名称为“managementService”的 bean 时出错 路径资源 [trs.application.finance.businessactivites.xml]: 通过构造函数参数表达的不满足的依赖关系 [net.sf.ehcache.CacheManager] 类型的索引 0:无法转换 类型的构造函数参数值 [org.springframework.cache.ehcache.EhCacheCacheManager] 为必需 type [net.sf.ehcache.CacheManager]: 转换类型值失败 'org.springframework.cache.ehcache.EhCacheCacheManager' 为必需 输入“net.sf.ehcache.CacheManager”;嵌套异常是 java.lang.IllegalStateException:无法转换类型的值 [org.springframework.cache.ehcache.EhCacheCacheManager] 为必需 类型 [net.sf.ehcache.CacheManager]:没有匹配的编辑器或转换 找到策略
spring 有我可以使用的 net.sf.ehcache.management.ManagementService 的实现吗?如果是这样,我该如何配置它,以便我可以在我的应用程序中为 ehcache 提供 JMX 支持。
注意,“managementService”和“mbeanServer”bean 是我添加的,用于尝试让 ehcache 注册到 jmx。 “myCacheManager”已经存在于我的 spring 配置中并且似乎工作正常,就 ehcache 而言。
<bean id="managementService" class="net.sf.ehcache.management.ManagementService"
init-method="init"
destroy-method="dispose">
<constructor-arg ref="myCacheManager"/>
<constructor-arg ref="mbeanServer"/>
<constructor-arg index="2" value="true"/>
<constructor-arg index="3" value="true"/>
<constructor-arg index="4" value="true"/>
<constructor-arg index="5" value="true"/>
</bean>
<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
<property name="locateExistingServerIfPossible" value="true"/>
</bean>
<bean id="myCacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager">
<bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"/>
</bean>
</property>
</bean>
【问题讨论】: