2015-04-29 5 views
7

ich diese Ehcache XML-Konfiguration haben:Wie die Ehcache Warn-Nachrichten zu entfernen, wenn Hibernate

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

Und auch, ich habe einige Pakete mit Einheiten (etwa 150). Wenn ich meine Anwendung auf Tomcatbediener bereitstellen, gibt es eine Menge Warn-Meldungen in Log:

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.

I Konfiguration für jede Entität schreiben kann -

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

Aber auf diese Weise meine Konfigurationsdatei zu werden groß (1600 Reihen). Ich denke, es gibt eine andere Möglichkeit, die Standardkonfiguration für jede Entität festzulegen und Warnmeldungen zu löschen, aber ich weiß nicht, wie ich das machen soll. Wenn jemand weiß, bitte helfen Sie. Danke vielmals.

+0

Haben Sie diese Frage gesehen, die zur Beschreibung derselben erscheint Warnung, dass Sie sehen? http://stackoverflow.com/questions/19280073/hibernate-in-multi-module-maven-project-could-not-find-specific-ehcache-config – Bobulous

+0

zwei Lösungen, 1/kill das Protokoll (mit Log Config) oder 2/definieren Sie eine Ehcache-Konfiguration für jede Entität –

+1

Warnung 'HHH020003' ist [hier] erwähnt (https://hahamo.wordpress.com/2014/12/02/ehcache-and-java-ee-6/) und Sie könnten versuchen, die Lösung erwähnt (set in persistence.xml ''). – vanOekel

Antwort

6

Dies ist der Hibernate EHCache Cache Region-Code, der die Warnmeldung protokolliert:

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

} 

Wie Sie sehen können, haben Sie zwei Möglichkeiten:

  1. Sie entweder die Cache-Region in der ehcache.xml erklären Datei.
  2. Sie legen die Protokollebene 'org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory' auf ERROR:

    Für Log4j2:

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

Eine Option wäre, eine CacheObject-Basis-Entität zu erstellen und diese als Ihr Cache-Objekt zu konfigurieren.

Nicht die sauberste Lösung, aber würde die Warnungen entfernen, ohne eine große Menge an Konfig hinzuzufügen.

Da die Warnung nur ist, eine Warnung persönlich würde ich es nur konfigurieren, um nicht zu zeigen.

+0

gute Idee, aber leider bin ich jetzt zu Hause. Morgen werde ich es testen, hoffe, es wird funktionieren. – degr

+0

Kein Mann, das ist keine Arbeit. – degr

Verwandte Themen