2017-06-14 52 views
0

我試圖按照文章here & here來實現eHCache的JMX。我的應用程序使用Spring實現然而&下面的配置項得到此異常:使用ehcache的Spring實現配置JMX?

org.springframework.beans.factory.UnsatisfiedDependencyException: 錯誤創建名爲「managementService」類 路徑資源定義[TRS豆。 application.finance.businessactivites.xml]: 不合格依賴通過構造器參數表示與 折射率型的0 [net.sf.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。 「我的緩存管理器」已經存在,在我的彈簧配置&似乎工作正常,只要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> 

回答

1

問題是你連接你的豆的方式。

你不想在managementService使用myCacheManager,你真的要使用的bean返回,並作爲myCacheManagercacheManager通過。

所以我建議把以下內容:

<bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> 
    <property name="configLocation" value="classpath:ehcache.xml"/> 
</bean> 

到頂級豆,以便它可以在managementService注入。