2012-08-16 6 views
5

Ich stelle eine Hibernate-Anwendung (v 4.1.5.SP1, Validator 4.3.0.Final) bereit (a Jar-Datei) läuft auf einer MySQL 5.5 db zu JBoss 4.2.3.GA (kann das nicht ändern). Ich bekomme den Fehler "org.hibernate.cache.NoCachingEnabledException: Second-Level-Cache ist nicht für die Verwendung aktiviert" beim Ausführen der App, aber es scheint, ich habe alles korrekt konfiguriert. Ich bin diese Maven Abhängigkeiten mit ...Problem beim Konfigurieren des Ruhezustandscaches - org.hibernate.cache.NoCachingEnabledException: Der Cache der zweiten Ebene ist nicht für die Verwendung aktiviert

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

Der Fehler ist seltsam, weil ich den Cache in meiner hibernate.cfg.xml Datei konfiguriert haben ...

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

Dies ist enthalten in meiner META-INF/persistence.xml-Datei, die unten ist ...

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

die JBoss Classloader außer Kraft zu setzen, schließe ich diese Datei bei der 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> 

Hier ist die komplette Stack-Trace. Was ist die Ursache dafür?

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 

Danke, - Dave

+0

Ist 'hibernate.cache.provider_class konfigurieren sollte 'definiert als' org.hibernate.cache.EhCacheProvider'? – SiB

Antwort

3

Sehen Sie, wenn this, die ich mit Googeln gefunden Sie hilft ...

Es sagt Ihnen hibernate.cache.provider_class als org.hibernate.cache.EhCacheProvider