Webshere to tomcat migration:HibernateException:无法实例化RegionFactory [org.hibernate.cache.ehcache.EhCacheRegionFactory]

时间:2017-05-30 11:19:48

标签: java hibernate tomcat8

在将现有特定于webhere的项目迁移到tomcat时,我收到错误could not instantiate RegionFactory [org.hibernate.cache.ehcache.EhCacheRegionFactory]。我已将WebSphereUowTransactionManager更改为org.springframework.transaction.jta.JtaTransactionManager,因为它支持tomcat。但仍面临区域工厂的另一个问题

我正在将我的应用程序从webshpere迁移到tomcat,并且在使用web WAR文件运行tomcat服务器时出现以下错误。请帮我解决这个问题。我不确定从webshere迁移到tomcat时我必须使用哪个hibernate属性。 我目前在持久性xml文件中使用下面的属性

    <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>

我在hibernate jar文件下面使用

        ehcache-core-2.6.6
        hibernate-core-3.6.10.Final
        hibernate-jpa-2.0-api-1.0.1.Final

错误:

            org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'XXXX' defined in class path resource [config/framework/applicationContext-XX.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.ehcache.EhCacheRegionFactory]
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
                at .......
            Caused by: org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.ehcache.EhCacheRegionFactory]
                at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:423)
                at org.hibernate.cfg.AnnotationBinder.determineCacheConcurrencyStrategy(AnnotationBinder.java:1073)
                at org.hibernate.cfg.AnnotationBinder.buildCacheMock(AnnotationBinder.java:1043)
                at org.hibernate.cfg.AnnotationBinder.determineCacheSettings(AnnotationBinder.java:997)
                at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:579)
                at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:4035)
                at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3989)
                at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1398)
                at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1375)
                at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1519)
                at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
                at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1100)
                at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:689)
                at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73)
                at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
                at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
                ... 25 more
            Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.ehcache.EhCacheRegionFactory
                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
                at java.lang.Class.forName0(Native Method)
                at java.lang.Class.forName(Class.java:264)
                at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:192)
                at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:409)
                ... 42 more`enter code here`

1 个答案:

答案 0 :(得分:0)

根本原因是java.lang.ClassNotFoundException:org.hibernate.cache.ehcache.EhCacheRegionFactory

所以看起来你错过了类路径中的hibernate-ehcache.jar

如果您使用maven作为依赖关系管理工具,请将以下依赖项添加到您的项目中:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
    <version>3.6.10.Final</version>
</dependency>