java ehcache 修改系统时间后 缓存对象为空

yuanxu_zhao 发布于 2015/04/02 12:04
阅读 756
收藏 0

java ehcache 修改系统时间后 缓存对象为空,我要缓存的对象一直随着服务器的启动存在。但是修改系统时间缓存就为空

配置:

<cache name="levelOneCache" maxElementsInMemory="1000" eternal="false"
                timeToIdleSeconds="300" timeToLiveSeconds="1000" overflowToDisk="false" />

spring的配置

<!-- 引用ehCache的配置 -->      
 <bean id="defaultCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
  <property name="configLocation">
  <value>classpath:ehcache.xml</value>
  </property>
 </bean>           
 <!-- 定义ehCache的工厂,并设置所使用的Cache name -->
 <bean id="ehCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
  <property name="cacheManager">
  <ref local="defaultCacheManager"/>         
  </property>         
  <property name="cacheName">             
  <value>levelOneCache</value>         
  </property>       
 </bean>

 

 

怎么修改?

加载中
0
优雅先生
优雅先生

是不是把系统时间修改成过去的时间或者将来的时间了?如果修改成过去的时间,那么可能要再等等,如果修改成将来的时间,那么待schedule的任务就可能miss了。

原因大概是Quartz里每个待执行的任务存储的时候都会带上它下次执行的时刻,然后由Quartz Scheduler根据当前系统时间和任务下次要执行的时间调度执行或者决定是否miss。

解决方法嘛,大概有这么两种:

1、如果你用了数据库做Quartz的JobStore,那么就把Quartz表里相关数据都清掉,然后重启系统。如果JobStore用的内存,那么重启系统就OK

2、把系统时间改回来

0
优雅先生
优雅先生
怎么问题又改了?o(╯□╰)o
0
yuanxu_zhao
yuanxu_zhao

引用来自“优雅先生”的评论

是不是把系统时间修改成过去的时间或者将来的时间了?如果修改成过去的时间,那么可能要再等等,如果修改成将来的时间,那么待schedule的任务就可能miss了。

原因大概是Quartz里每个待执行的任务存储的时候都会带上它下次执行的时刻,然后由Quartz Scheduler根据当前系统时间和任务下次要执行的时间调度执行或者决定是否miss。

解决方法嘛,大概有这么两种:

1、如果你用了数据库做Quartz的JobStore,那么就把Quartz表里相关数据都清掉,然后重启系统。如果JobStore用的内存,那么重启系统就OK

2、把系统时间改回来

谢谢,你的回答,我是讲Quartz放内存中,我也试过了,只能重启服务器了。

 

当时在Quartz中对缓存的一些操作,最后发现原来设置的缓存不是永久的,所以修改了系统时间,缓存就失效了。线程是正常,只不过线程里面根据缓存的值处理。

谢谢你的回答,使我思路也更明确了。。谢谢~

返回顶部
顶部