在将现有特定于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`
答案 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>