2017-05-08 44 views
0

有一个Spring/Tomcat应用程序,我试图让ehcache作为Hibernate二级实体缓存工作。它已启用并处于活动状态。我可以在调试日志输出中看到有多少实体被缓存。问题是每隔几秒钟,缓存清空。我甚至固定缓存(只是为了看看是否能够改变行为),现在我看到这个:休眠第二级缓存不断清空

05-08-2017 16:05:21.550 [taskExecutor-12] {env=''} WARN n.s.e.Cache: Data availability impacted: 
**************************************************************************************** 
************************** removeAll called on a pinned cache ************************** 

05-08-2017 16:05:21.550 [taskExecutor-12] {env=''} WARN n.s.e.Cache: Data availability impacted: 
**************************************************************************************** 
************************** removeAll called on a pinned cache ************************** 

所以我觉得这是问题。任何想法会导致removeAll被一遍又一遍地隐式调用?

ehcache.xml中

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="ehcache.xsd" 
    updateCheck="true" 
    monitoring="autodetect" 
    maxBytesLocalHeap="24G" 
    dynamicConfig="true"> 

    <defaultCache eternal="true" maxBytesLocalHeap="1" /> <!-- not used, but required per ehcache configuration rules --> 

    <!-- cache for foo --> 
    <cache name="foo" 
      maxBytesLocalHeap="8G" 
      eternal="false" 
      memoryStoreEvictionPolicy="LRU" 
      timeToLiveSeconds="12000" 
      transactionalMode="off"> 
     <pinning store="inCache" /> 
     <persistence strategy="none" /> 
    </cache> 
</ehcache> 

的persistence.xml

 <properties> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /> 
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" /> 
      <property name="hibernate.show_sql" value="false" /> 
      <property name="hibernate.hbm2ddl.auto" value="update" /> 
      <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" /> 
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider" /> 
      <property name="hibernate.cache.use_second_level_cache" value="true" /> 
      <property name="hibernate.cache.use_query_cache" value="false" /> 
      <property name="hibernate.generate_statistics" value="true" /> 
      <property name="hibernate.cache.use_structured_entries" value="true" /> 
      <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory" /> 
     </properties> 

而且这些注释是对实体模型类:

@Cacheable 
@Cache(region = "foo", usage = CacheConcurrencyStrategy.READ_WRITE) 

回答