2012-08-16 12 views
5

Estoy implementando una aplicación Hibernate (v 4.1.5.SP1, validator 4.3.0.Final) (a Archivo Jar) ejecutándose en MySQL 5.5 db a JBoss 4.2.3.GA (no puede cambiar esto). Recibo el error "org.hibernate.cache.NoCachingEnabledException: la memoria caché de segundo nivel no está habilitada para el uso" cuando se ejecuta la aplicación, pero parece que configuré todo correctamente. Estoy usando estas dependencias Maven ...Problemas para configurar la memoria caché de Hibernate - org.hibernate.cache.NoCachingEnabledException: la memoria caché de segundo nivel no está habilitada para el uso

  <!-- Hibernate dependencies --> 
      <dependency> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-validator</artifactId> 
        <version>${hibernate.validator.version}</version> 
      </dependency> 
      <dependency> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-entitymanager</artifactId> 
        <version>${hibernate.version}</version> 
      </dependency> 
      <dependency> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-ehcache</artifactId> 
        <version>${hibernate.version}</version> 
      </dependency> 

El error es extraño porque tengo la caché configurado en mi archivo hibernate.cfg.xml ...

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
     <session-factory> 
       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
       <property name="hibernate.connection.datasource">java:/MySqlDS</property> 
       <property name="hibernate.connection.pool_size">10</property> 
       <property name="show_sql">true</property> 
       <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 

       <!-- Enable Hibernate's automatic session context management --> 
     <property name="current_session_context_class">thread</property> 

     <!-- Caching --> 
     <property name="hibernate.cache.use_second_level_cache">true</property> 
       <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property> 

       <mapping class="org.mainco.subco.orgsclient.model.Organization" /> 
       <mapping class="org.mainco.subco.orgsclient.model.Community" /> 
       <mapping class="org.mainco.subco.orgsclient.model.Domain" /> 
       <mapping class="org.mainco.subco.orgsclient.model.State" /> 
       <mapping class="org.mainco.subco.orgsclient.model.Country" /> 

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

esto está incluido en mi archivo META-INF/persistence.xml, que está por debajo ...

<persistence> 
     <persistence-unit name="orgsclientunit" transaction-type="JTA"> 
       <provider>org.hibernate.ejb.HibernatePersistence</provider> 
       <jta-data-source>java:/MySqlDS</jta-data-source> 
       <properties> 
         <property name="hibernate.ejb.cfgfile" value="hibernate.cfg.xml" /> 
         <property name="hibernate.validator.apply_to_ddl">false</property> 
         <property name="hibernate.validator.autoregister_listeners">false</property> 
         <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/> 
       </properties> 
     </persistence-unit> 
</persistence> 

Para anular los cargadores de clases de JBoss, que incluyen el archivo de META-INF/jboss.xml ...

<jboss> 
     <class-loading java2ClassLoadingCompliance="false"> 
       <!-- setup classLoader repository. java2ParentDelegation to always have 
         package libs override server libs for this application --> 
       <loader-repository> 
         org.mainco.subco.orgs:loader=orgsclient 
         <loader-repository-config> 
           java2ParentDelegation=false 
         </loader-repository-config> 
       </loader-repository> 
     </class-loading> 
</jboss> 

Aquí está el seguimiento completo de la pila. ¿Cuál es la causa de esto?

2012-08-16 11:01:37,195 ERROR [org.mainco.subco.orgsclient.service.OrganizationServiceImpl] org.hibernate.HibernateException: Could not instantiate cache implementation^M 
javax.persistence.PersistenceException: org.hibernate.HibernateException: Could not instantiate cache implementation^M 
     at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:720)^M 
     at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)^M 
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)^M 
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)^M 
     at org.mainco.subco.orgsclient.service.AbstractTransactionService.startOperation(AbstractTransactionService.java:27)^M 
     at org.mainco.subco.orgsclient.service.OrganizationServiceImpl.saveOrganization(OrganizationServiceImpl.java:87)^M 
     at org.mainco.subco.orgsclient.service.OrganizationServiceImpl.getEODBOrganizations(OrganizationServiceImpl.java:221)^M 
     at org.mainco.subco.orgsclient.service.OrganizationServiceImpl.saveOrgsFromWebService(OrganizationServiceImpl.java:183)^M 
     at org.mainco.subco.orgsclient.quartz.UpdateOrgsJob.execute(UpdateOrgsJob.java:55)^M 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)^M 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)^M 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)^M 
     at java.lang.reflect.Method.invoke(Method.java:597)^M 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)^M 
     at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)^M 
     at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)^M 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)^M 
     at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)^M 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)^M 
     at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)^M 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)^M 
     at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)^M 
     at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:195)^M 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)^M 
     at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)^M 
     at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)^M 
     at org.jboss.ejb3.mdb.MessagingContainer.localInvoke(MessagingContainer.java:249)^M 
     at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.delivery(MessageInflowLocalProxy.java:268)^M 
     at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.invoke(MessageInflowLocalProxy.java:138)^M 
     at $Proxy81.execute(Unknown Source)^M 
     at org.jboss.resource.adapter.quartz.inflow.QuartzJob.execute(QuartzJob.java:57)^M 
     at org.quartz.core.JobRunShell.run(JobRunShell.java:203)^M 
     at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)^M 
Caused by: org.hibernate.HibernateException: Could not instantiate cache implementation^M 
     at org.hibernate.cache.CacheFactory.createCache(CacheFactory.java:64)^M 
     at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:214)^M 
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)^M 
     at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:713)^M 
     ... 32 more^M 
Caused by: org.hibernate.cache.NoCachingEnabledException: Second-level cache is not enabled for usage [hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache]^M 
     at org.hibernate.cache.NoCacheProvider.buildCache(NoCacheProvider.java:21)^M 
     at org.hibernate.cache.CacheFactory.createCache(CacheFactory.java:61)^M 
    ... 35 more^M 

Gracias, - de Dave

+0

es 'hibernate.cache.provider_class 'definido como' org.hibernate.cache.EhCacheProvider'? – SiB

Respuesta

3

A ver si this que encontré con google te ayuda ...

Se dice que se debe configurar como hibernate.cache.provider_classorg.hibernate.cache.EhCacheProvider

Cuestiones relacionadas