web-dev-qa-db-ja.com

名前[org.hibernate.cache.ehcache.EhCacheRegionFactory]を戦略[org.hibernate.cache.spi.RegionFactory]として解決できません

SpringとHibernateのバージョンをアップグレードしようとしていました。 hibernate 3を使用していましたが、hibernate 4.3.6にアップグレードしました。アップグレード後、ehcacheの実装で奇妙な問題が発生します。

Hibernate 4にアップグレードしたので、次のように1つのエントリを追加しました。

<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory </prop>

そして今、私は例外を受け取ります:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/config/persistence.xml]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.cache.spi.RegionFactory]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.Java:1566)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.Java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.Java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.Java:302)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.Java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.Java:298)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.Java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.Java:1127)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.Java:1051)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.Java:949)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.Java:603)
    ... 124 more
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.cache.spi.RegionFactory]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.Java:261)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.Java:225)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.Java:206)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.Java:295)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.Java:2444)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.Java:2440)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSettings(LocalSessionFactoryBuilder.Java:343)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.Java:1857)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.Java:1930)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.Java:372)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.Java:454)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.Java:439)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.Java:1625)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.Java:1562)
    ... 134 more
Caused by: org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.ehcache.EhCacheRegionFactory]
    at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.Java:101)
    at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.Java:46)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.Java:105)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.Java:251)
    ... 147 more
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.cache.ehcache.EhCacheRegionFactory] as strategy [org.hibernate.cache.spi.RegionFactory]
    at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.Java:128)
    at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.Java:87)
    ... 150 more

使用されるライブラリは次のとおりです。

antlr.jar
aopalliance.jar
asm-3.3.jar
aspectj-1.7.0.jar
aspectjweaver-1.5.4.jar
backport-util-concurrent-1.1_01.jar
c3p0.jar
cglib-2.2.2.jar
commons-beanutils-1.7.0.jar
commons-codec-1.6.jar
commons-collections-3.2.1.jar
commons-dbcp-1.3.jar
commons-lang3-3.1.jar
commons-logging-1.1.1.jar
commons-pool-1.6.jar
dom4j-1.6.1.jar
ehcache-1.5.0.jar
gson-2.3.1.jar
hibernate-commons-annotations-4.0.5.Final.jar
hibernate-core-4.3.6.Final.jar
hibernate-core-4.3.7.Final.jar
hibernate-ehcache-4.3.7.Final.jar
hibernate-entitymanager-4.3.7.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
hibernate-validator-5.1.3.Final.jar
jakarta-oro.jar
jboss-logging-3.2.0.Final.jar
jdom.jar
jsr107cache-1.0.jar
log4j-1.2.17.jar
ojdbc14.jar
poi-3.6-20091214.jar
samlutility.jar
sitemesh-2.4.2.jar
slf4j-api-1.6.1.jar
slf4j-api-1.7.7.jar
slf4j-log4j12-1.6.1.jar
spring-aop-4.1.3.RELEASE.jar
spring-beans-4.1.3.RELEASE.jar
spring-context-4.1.3.RELEASE.jar
spring-context-support-4.1.3.RELEASE.jar
spring-core-4.1.3.RELEASE.jar
spring-expression-4.1.3.RELEASE.jar
spring-jdbc-4.1.3.RELEASE.jar
spring-jms-4.1.3.RELEASE.jar
spring-orm-4.1.3.RELEASE.jar
spring-security-config-3.2.5.RELEASE.jar
spring-security-core-3.2.5.RELEASE.jar
spring-security-taglibs-3.2.5.RELEASE.jar
spring-security-web-3.2.5.RELEASE.jar
spring-tx-4.1.3.RELEASE.jar
spring-web-4.1.3.RELEASE.jar
spring-webmvc-4.1.3.RELEASE.jar
validation-api-1.1.0.Final.jar
xmlsec-1.4.5.jar

私はすべての可能な方法を試しましたが、これはこの問題を解決していません。

14
santu

Hibernate 4では、Ehcacheを使用する場合、特定の依存関係を追加する必要があります:hibernate-ehcache

ただし、Ehcache 2.4.3が組み込まれているため、組み込まれたEhcache依存関係を除外する必要があります。

<dependency>
 <groupId>org.hibernate</groupId>
 <artifactId>hibernate-ehcache</artifactId>
 <version>4.1.9.Final</version>
 <exclusions>
     <exclusion>
         <groupId>net.sf.ehcache</groupId>
         <artifactId>ehcache-core</artifactId>
     </exclusion>
 </exclusions>
</dependency>

Ehcache 2.10.1を使用するバージョン5.1.0.FinalのHibernate-ehcacheの場合、同じ除外は少し異なります(ehcache-coreではなくehcache

<dependency>
 <groupId>org.hibernate</groupId>
 <artifactId>hibernate-ehcache</artifactId>
 <version>5.1.0.Final</version>
 <exclusions>
     <exclusion>
         <groupId>net.sf.ehcache</groupId>
         <artifactId>ehcache</artifactId>
     </exclusion>
 </exclusions>
</dependency>

そして、ehcacheのバージョンに応じて、ehcacheまたはehcache-coreを追加する必要があります

2.6.xまで:

<dependency>
 <groupId>net.sf.ehcache</groupId>
 <artifactId>ehcache-core</artifactId>
 <version>2.5.7</version>
</dependency>

2.7以降

<dependency>
 <groupId>net.sf.ehcache</groupId>
 <artifactId>ehcache</artifactId>
 <version>2.7.0  or above</version>
</dependency>

および3.0以降の場合

<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>3.0.0</version>
</dependency>
7
praveen

次の依存関係を使用:​​

     <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>4.3.7.Final</version>
    </dependency>
4
Hridesh