2015-04-29 69 views
7

時發出警告的消息我有這樣的Ehcache XML配置:如何刪除的Ehcache使用Hibernate

<ehcache> 
    <defaultCache 
      maxElementsInMemory="10000" 
      eternal="false" 
      timeToIdleSeconds="120" 
      timeToLiveSeconds="120" 
      overflowToDisk="false" 
      diskSpoolBufferSizeMB="30" 
      diskPersistent="false" 
      diskExpiryThreadIntervalSeconds="120" 
      memoryStoreEvictionPolicy="LRU" 
      /> 
</ehcache> 

還有,我有一些軟件包與實體(約150)。如果我部署我的Tomcat服務器上的應用程序,有很多日誌WARN消息:

2015-04-29 11:59:02,712 [RMI TCP Connection(3)-127.0.0.1] WARN org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory - HHH020003: Could not find a specific ehcache configuration for cache named [com.company.project.entity.package.MyEntity]; using defaults.

我可以寫配置爲每個實體 -

<cache name="com.company.project.entity.package.MyEntity" 
         maxEntriesLocalHeap="50" 
         eternal="false" 
         overflowToDisk="false" 
        timeToLiveSeconds="120"> 
       <persistence strategy="localTempSwap"/> 
     </cache> 

但這種方式,我的配置文件變得太大(1600行)。我認爲存在另一種方法來設置每個實體的默認配置並殺死警告消息,但我不知道該怎麼做。如果有人知道,請幫助。非常感謝。

+0

你見過這個問題,這似乎描述相同警告你看到了? http://stackoverflow.com/questions/19280073/hibernate-in-multi-module-maven-project-could-not-find-specific-ehcache-config – Bobulous

+0

兩個解決方案,1 /殺死日誌(使用日誌配置)或2 /爲每個實體定義一個ehcache配置 –

+1

警告'HHH020003'被提及[這裏](https://hahamo.wordpress.com/2014/12/02/ehcache-and-java-ee-6/),你可以嘗試所提到的解決方案(在persistence.xml中設置')。 – vanOekel

回答

6

這是休眠的EHCache緩存區域代碼,記錄報警信息:

private Ehcache getCache(String name) throws CacheException { 
    try { 
     Ehcache cache = manager.getEhcache(name); 
     if (cache == null) { 
      LOG.unableToFindEhCacheConfiguration(name); 
      manager.addCache(name); 
      cache = manager.getEhcache(name); 
      LOG.debug("started EHCache region: " + name); 
     } 
     HibernateEhcacheUtils.validateEhcache(cache); 
     return cache; 
    } 
    catch (net.sf.ehcache.CacheException e) { 
     throw new CacheException(e); 
    } 

} 

正如你所看到的,你有兩個選擇:

  1. 你要麼在ehcache.xml聲明緩存區域文件。
  2. 你設置了 'org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory' 日誌級別爲ERROR:

    對於Log4j2:

    <Logger name="org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory" level="error"> 
        <AppenderRef ref="File"/> 
    </Logger> 
    
0

一個選項是創建一個CacheObject基本實體並將其配置爲您的緩存對象。

不是最乾淨的解決方案,但會刪除警告而不添加大量的配置。

由於警告只是,個人的警告,我只是配置它不顯示。

+0

好主意,但不幸我現在在家。在moday中,我會測試它,希望它能起作用。 – degr

+0

沒有人,這是行不通的。 – degr

相關問題