ChCache 报 java.lang.NullPointerException

项目的工作流耗时非常大,我们根据对后台日志的分析以及代码审查发现流程模块在频繁的查询数据库的一些配置表,所以我们决定将一部分配置表进行缓存处理。我们采用EhCache技术来处理,据说它可以实现分布式而且配置简单。

我将ehcache-core-1.7.0.jar导入到项目 。chcache.xml(错误的)的配置如下
<?xml version="1.0" encoding="GB2312"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">  
  
	    <cache name="a" maxElementsInMemory="1000" eternal="true"
	        timeToIdleSeconds="3600" timeToLiveSeconds="3600" overflowToDisk="false" /> 
            
            
</ehcache>  


运行   CacheManager manager =   CacheManager.getInstance(); 后台直接就报


Exception in thread "main" java.lang.NullPointerException
	at net.sf.ehcache.CacheManager.init(CacheManager.java:281)
	at net.sf.ehcache.CacheManager.<init>(CacheManager.java:248)
	at net.sf.ehcache.CacheManager.create(CacheManager.java:501)
	at net.sf.ehcache.CacheManager.getInstance(CacheManager.java:522)
	at Test.main(Test.java:13)


后来经过多方面查找信息发现chcache.xml 至少要配置两个cache 属性 ,一个是defaultcache,另外一个是指定名称的cache。ehcache.xml 代码如下:


<?xml version="1.0" encoding="GB2312"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">  
  
  
	    <defaultCache maxElementsInMemory="1000" eternal="true"
	        timeToIdleSeconds="3600" timeToLiveSeconds="3600" overflowToDisk="true" />
	    <cache name="a" maxElementsInMemory="1000" eternal="true"
	        timeToIdleSeconds="3600" timeToLiveSeconds="3600" overflowToDisk="false" /> 
            
            
</ehcache>  




ok 问题解决。。。

猜你喜欢

转载自crackajack-zg.iteye.com/blog/2022748
今日推荐