我正在尝试按照此处和此处的文章为 ehCache 实现 JMX。但是,我的应用程序使用 Spring 实现,并且下面的配置条目出现此异常:
org.springframework.beans.factory.UnsatisfiedDependencyException:在类路径资源 [trs.application.finance.businessactivites.xml] 中定义名称为“managementService”的 bean 创建时出错:通过构造函数参数表达的不满足的依赖关系,类型为 [net.sf 的索引为 0 .ehcache.CacheManager]:无法将类型 [org.springframework.cache.ehcache.EhCacheCacheManager] 的构造函数参数值转换为所需类型 [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>
问题在于您连接 bean 的方式。
你不希望使用myCacheManager
的managementService
,你真的想用返回,并通过作为豆cacheManager
的myCacheManager
。
所以我建议移动以下内容:
<bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"/>
</bean>
到顶级 bean,以便它可以注入managementService
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句