2014-12-17 7 views
7

Stavo cercando di aggiornare la mia versione Spring e Hibernate. Stavo usando Hibernate 3 e ora ho aggiornato a ibernare 4.3.6. Dopo l'aggiornamento, sto riscontrando un problema strano nell'implementazione di ehcache.Impossibile risolvere il nome [org.hibernate.cache.ehcache.EhCacheRegionFactory] come strategia [org.hibernate.cache.spi.RegionFactory]

Come ho aggiornato a hibernate 4, ho aggiunto una voce come:

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

E ora io sono sempre l'eccezione come:

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 

Le librerie utilizzate sono:

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 

Ho provato tutti i modi possibili ma questo non risolve questo problema.

+0

Si sta configurando Hibernate usando la primavera? In tal caso, assicurarsi che le versioni siano compatibili ie., Spring vs Hibernate versioni – Zeus

risposta

1

utilizzo a seguito della dipendenza:

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

In Hibernate 4, se si desidera utilizzare EHCache, è necessario aggiungere una dipendenza specifica: hibernate-EHCache

Ma incorpora EHCache 2.4.3 Così è necessario escludere la dipendenza da Ehcache incorporata.

<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> 

Per Sospensione-EHCache dalla versione 5.1.0.Final che utilizza EHCache 2.10.1 stesso esclusione appare leggermente differente (ehcache anziché ehcache-core)

<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> 

e quindi a seconda della versione di EHCache, è necessario aggiungere o EHCache EHCache-core

Fino a 2.6.x:

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

per 2.7 e sopra

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

e 3.0 e

<dependency> 
    <groupId>org.ehcache</groupId> 
    <artifactId>ehcache</artifactId> 
    <version>3.0.0</version> 
</dependency> 
+0

L'uso di Ehcache 3.0 e versioni successive con la versione Hibernate-ehcache attualmente disponibile (5.2.10.Final) non è probabilmente possibile (ci saranno errori). È possibile utilizzare solo Ehcache 2.x.x con esso. Ma è per ora. In futuro probabilmente cambierà con la nuova versione di Hibernate-ehcache. – luke