2015-04-29 26 views
7

Tôi có ehcache cấu hình này XML:Làm thế nào để loại bỏ các ehcache WARN thông điệp khi sử dụng Hibernate

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

Và cũng có thể, tôi có một số gói với các thực thể (khoảng 150). Nếu tôi triển khai ứng dụng của tôi trên máy chủ tomcat, có rất nhiều WARN tin nhắn trong nhật ký:

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.

tôi có thể viết cấu hình cho từng đối tượng -

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

Nhưng theo cách này, tập tin cấu hình của tôi trở nên quá lớn (1600 hàng). Tôi nghĩ rằng có tồn tại một cách khác để thiết lập cấu hình mặc định cho mỗi thực thể và giết các thông điệp cảnh báo, nhưng tôi không biết làm thế nào để làm điều đó. Nếu có ai biết, hãy giúp đỡ. Cảm ơn nhiều.

+0

Bạn đã thấy câu hỏi này mà dường như mô tả giống nhau cảnh báo mà bạn thấy? http://stackoverflow.com/questions/19280073/hibernate-in-multi-module-maven-project-could-not-find-specific-ehcache-config – Bobulous

+0

hai giải pháp, 1/giết nhật ký (sử dụng cấu hình nhật ký) hoặc 2/xác định cấu hình ehcache cho mỗi đối tượng –

+1

Cảnh báo 'HHH020003' được đề cập [ở đây] (https://hahamo.wordpress.com/2014/12/02/ehcache-and-java-ee-6/) và bạn có thể thử giải pháp được đề cập (được đặt trong persistence.xml ''). – vanOekel

Trả lời

6

Đây là mã Hibernate EHCache cache Region mà các bản ghi thông điệp cảnh báo:

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); 
    } 

} 

Như bạn thấy, bạn có hai lựa chọn:

  1. Bạn có thể khai báo các khu vực bộ nhớ cache trong ehcache.xml tập tin.
  2. Bạn đặt mức độ ghi của org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory 'lỗi:

    Đối Log4j2:

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

Một tùy chọn sẽ là tạo đối tượng cơ sở CacheObject và định cấu hình đó làm đối tượng bộ nhớ cache của bạn.

Không phải là giải pháp sạch nhất nhưng sẽ loại bỏ các cảnh báo mà không cần thêm một số lượng lớn cấu hình.

Do cảnh báo chỉ là vậy, cảnh báo cá nhân tôi sẽ chỉ định cấu hình để không hiển thị.

+0

ý tưởng hay, nhưng đáng tiếc là tôi đang ở nhà bây giờ. Trong điều kiện tôi sẽ thử nghiệm nó, hy vọng nó sẽ hoạt động. – degr

+0

Không có người đàn ông, điều này không hoạt động. – degr

Các vấn đề liên quan