hibernate ehcache配置问题:从null配置时出错。初始原因为空

时间:2017-10-28 10:56:37

标签: java hibernate ehcache

我正在尝试使用hibernate版本3在我们的产品中实现二级缓存。

但是,当我尝试访问我的应用程序时,出现以下错误:

  

[HibernateSessionFactory]:

     

java.lang.NullPointerException at   net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(ConfigurationFactory.java:102)   [wrapped] net.sf.ehcache.CacheException:从null配置时出错。   初始原因为空

     

在   net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(ConfigurationFactory.java:105)

     

在   net.sf.ehcache.hibernate.HibernateUtil.loadAndCorrectConfiguration(HibernateUtil.java:51)

     

在   net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory.start(SingletonEhCacheRegionFactory.java:76)

     

[wrapped] org.hibernate.cache.CacheException:   net.sf.ehcache.CacheException:从null配置时出错。初始   原因是空的

     

在   net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory.start(SingletonEhCacheRegionFactory.java:82)

     

在   org.hibernate.impl.SessionFactoryImpl。(SessionFactoryImpl.java:238)

     

在   org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872)

hibernate.cfg.xml中:

<hibernate-configuration>
    <session-factory>
<property name="net.sf.ehcache.configurationResourceName">ehcache.xml</property>
        <property name="current_session_context_class">thread</property>
        <property name="hibernate.cache.use_query_cache">true</property>
        <property name="hibernate.cache.use_second_level_cache">true</property>
        <property name="hibernate.cache.use_structured_entries">true</property>
        <property name="hibernate.cache.generate_statistics">true</property>
        <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
        <property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory</property>
...
...

</session-factory>
</hibernate-configuration>

ehcache.xml中

<ehcache>

<defaultCache maxElementsInMemory="100" eternal="false"
        timeToIdleSeconds="500" timeToLiveSeconds="1000" />

    <cache name="Audit" maxElementsInMemory="100"
        eternal="false" timeToIdleSeconds="500" timeToLiveSeconds="1000" />  
</ehcache>

我正在使用以下jar来实现缓存:

  • ehcache-core-2.6.10.jar
  • hibernate-3.6.6.jar
  • 冬眠验证器-4.2.0.Final.jar

请指导我,哪里出错了。为什么它将文件显示为null。两个配置文件都在同一个文件夹中。

3 个答案:

答案 0 :(得分:0)

似乎找不到ehcache,xml文件。你可以试试/ehcache.xml吗?

答案 1 :(得分:0)

经过3天的连续尝试后,我发现了这个问题。根据互联网上的帖子,我发现它只从类路径读取配置。

虽然我的两个配置文件位于同一位置,但它们位于 classpath:config / 位置。所以改变我的配置按照以下方式为我工作:

<property name="net.sf.ehcache.configurationResourceName">config/ehcache.xml</property>

答案 2 :(得分:0)

对我而言,它取代了以下一行:

<property name="net.sf.ehcache.configurationResourceName">ehcache.xml</property>

<property name="net.sf.ehcache.configurationResourceName">META-INF/config/ehcache.xml</property>

虽然两个文件都在同一个文件夹中,但它无法识别该文件。所以,META-INF就是这样做的。