-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: could not instantiate RegionFactory
PostPosted: Tue Apr 13, 2010 3:59 pm 
Newbie

Joined: Tue Apr 13, 2010 3:35 pm
Posts: 2
Hallo,

I'm new to Hibernate and my testprogram throws this lines in the console

21:40:08,789 INFOEnvironment:564 - Hibernate 3.5.0-Final
21:40:08,798 INFOEnvironment:597 - hibernate.properties not found
21:40:08,805 INFOEnvironment:775 - Bytecode provider name : javassist
21:40:08,811 INFOEnvironment:656 - using JDK 1.4 java.sql.Timestamp handling
21:40:08,950 INFOConfiguration:1518 - configuring from resource: /hibernate.cfg.xml
21:40:08,950 INFOConfiguration:1495 - Configuration resource: /hibernate.cfg.xml
21:40:09,067 INFOConfiguration:655 - Reading mappings from resource : de/Honey.hbm.xml
21:40:09,260 INFOHbmBinder:348 - Mapping class: de.Honey -> honey
21:40:09,280 INFOConfiguration:655 - Reading mappings from resource : de/Bee.hbm.xml
21:40:09,323 INFOHbmBinder:348 - Mapping class: de.Bee -> Bee
21:40:09,416 INFOConfiguration:1633 - Configured SessionFactory: null
21:40:09,423 INFOHbmBinder:2473 - Mapping collection: de.Honey.bees -> honey
21:40:09,447 INFODriverManagerConnectionProvider:64 - Using Hibernate built-in connection pool (not for production use!)
21:40:09,447 INFODriverManagerConnectionProvider:65 - Hibernate connection pool size: 20
21:40:09,448 INFODriverManagerConnectionProvider:68 - autocommit mode: false
21:40:09,452 INFODriverManagerConnectionProvider:103 - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/hibernatetest
21:40:09,454 INFODriverManagerConnectionProvider:109 - connection properties: {user=root, password=****}
21:40:09,640 INFOSettingsFactory:117 - RDBMS: MySQL, version: 5.1.37
21:40:09,640 INFOSettingsFactory:118 - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.0.8 ( Revision: ${svn.Revision} )
21:40:09,658 INFODialect:222 - Using dialect: org.hibernate.dialect.MySQLDialect
21:40:09,662 INFOJdbcSupportLoader:79 - Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
21:40:09,663 INFOTransactionFactoryFactory:62 - Transaction strategy: org.hibernate.transaction.JDBCTransactionFactory
21:40:09,664 INFOTransactionManagerLookupFactory:80 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
21:40:09,664 INFOSettingsFactory:169 - Automatic flush during beforeCompletion(): disabled
21:40:09,664 INFOSettingsFactory:173 - Automatic session close at end of transaction: enabled
21:40:09,664 INFOSettingsFactory:180 - JDBC batch size: 15
21:40:09,664 INFOSettingsFactory:183 - JDBC batch updates for versioned data: disabled
21:40:09,665 INFOSettingsFactory:188 - Scrollable result sets: enabled
21:40:09,665 INFOSettingsFactory:196 - JDBC3 getGeneratedKeys(): enabled
21:40:09,665 INFOSettingsFactory:204 - Connection release mode: auto
21:40:09,666 INFOSettingsFactory:228 - Maximum outer join fetch depth: 2
21:40:09,666 INFOSettingsFactory:231 - Default batch fetch size: 1
21:40:09,666 INFOSettingsFactory:235 - Generate SQL with comments: disabled
21:40:09,666 INFOSettingsFactory:239 - Order SQL updates by primary key: disabled
21:40:09,666 INFOSettingsFactory:243 - Order SQL inserts for batching: disabled
21:40:09,666 INFOSettingsFactory:410 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
21:40:09,668 INFOASTQueryTranslatorFactory:47 - Using ASTQueryTranslatorFactory
21:40:09,668 INFOSettingsFactory:251 - Query language substitutions: {}
21:40:09,668 INFOSettingsFactory:256 - JPA-QL strict compliance: disabled
21:40:09,668 INFOSettingsFactory:261 - Second-level cache: enabled
21:40:09,668 INFOSettingsFactory:265 - Query cache: disabled
21:40:09,671 INFOSettingsFactory:395 - Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge
21:40:09,671 INFORegionFactoryCacheProviderBridge:61 - Cache provider: org.hibernate.cache.EhCacheProvider
Exception in thread "main" java.lang.ExceptionInInitializerError
at de.Test.createRelation(Test.java:73)
at de.Test.main(Test.java:24)
Caused by: org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge]
at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:402)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:270)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383)
at hibernate.InitSessionFactory.<clinit>(InitSessionFactory.java:30)
... 2 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:397)
... 7 more
Caused by: java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.newInstance0(Class.java:326)
at java.lang.Class.newInstance(Class.java:308)
at org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge.<init>(RegionFactoryCacheProviderBridge.java:63)
... 12 more
Caused by: java.lang.ClassNotFoundException: net.sf.ehcache.CacheException
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)
... 18 more


The following line throws the exception
Code:
Session session = InitSessionFactory.getInstance().getCurrentSession();



My Testclass
Code:
package de;

import java.util.Iterator;
import java.util.List;
import org.apache.log4j.*;
import org.hibernate.*;
import org.hibernate.transform.DistinctRootEntityResultTransformer;
import hibernate.InitSessionFactory;
import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class Test {
   
   private static Logger log = Logger.getLogger(Test.class);
   
   public static void main(String[] args) {
      try {
         //clean();
         //createHoney();
         createRelation();
         //delete();
         //update();
         //query();
         //initBees();
      } catch (RuntimeException e) {
         try {
            Session session = InitSessionFactory.getInstance().getCurrentSession();
            if(session.getTransaction().isActive())
               session.getTransaction().rollback();
         } catch (HibernateException el) {
            log.error("Fehler beim Rollback der Transaktion");
         }
         throw e;
      }
   }
   
   //Zeigt ein INSERT INTO
   private static Honey createHoney() {
      //Honig anlegen
      Honey tollerHonig = new Honey();
      tollerHonig.setName("Waldhonig");
      tollerHonig.setTaste("sehrsuess");
      
      //Session und Transaktion initialisieren & vorbereiten
      Session session = InitSessionFactory.getInstance().getCurrentSession();
      Transaction tx = session.getTransaction();
      session.save(tollerHonig);
      
      //abgeht die Post
      tx.commit();
      
      
      return tollerHonig;
   }
   
   //Zeigt update auf Datensatz
   private static void update() {
      Honey honig = createHoney();
      
      Session session = InitSessionFactory.getInstance().getCurrentSession();
      Transaction tx = session.getTransaction();
      honig.setName("ModernerMix");
      session.update(honig);
      tx.commit();
   }
   
   //Zeigt wie Beziehungen zwischen den Objekten entstehen
   private static void createRelation() {
      Session session = InitSessionFactory.getInstance().getCurrentSession();
      Transaction tx = session.beginTransaction();
      Honey honig = new Honey();
      honig.setName("OdenwaldHonig");
      honig.setTaste("Herrlich, geschmeidig im Abgang");
      session.save(honig);
      Bee biene = new Bee("Sonja");
      session.save(biene);
      
      // Beziehung auf beiden Seiten erstellen
      biene.setHoney(honig);
      honig.getBees().add(biene);
      tx.commit();
   }
   
   private static void query() {
      Session session = InitSessionFactory.getInstance().getCurrentSession();
      Transaction tx = session.beginTransaction();
      List honigListe = session.createQuery("SELECT h from Honey as h").list();
      for(Iterator iter = honigListe.iterator(); iter.hasNext();) {
         Honey element = (Honey) iter.next();
         log.debug(element);
      }
      tx.commit();
   }
}




InitSessionFactory:
Code:
package hibernate;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class InitSessionFactory {
   private static org.hibernate.SessionFactory sessionFactory;

   /**
     * Default constructor. It is private to guaranty singleton
     */
   private InitSessionFactory() {
   }

   static {

      final Configuration cfg = new Configuration();
      // final AnnotationConfiguration cfg = new AnnotationConfiguration();
      /*
         * change the cfg to a annotation configuration, if you want to use
         * Hibernate annotations as well. Annotation configuration supports both
         * XML and annotations
         */

      /*
         * configure Hibernate from hibernate.cfg.xml. This is expected to be in
         * the class path = "src folder" = "root folder of classes"
         */
      cfg.configure("/hibernate.cfg.xml");
      cfg.buildSessionFactory();
      sessionFactory = cfg.buildSessionFactory();

   }

   /**
     * Returns the single instance of the session factory
     *
     * @return
     */
   public static SessionFactory getInstance() {
      return sessionFactory;
   }
}


Honey.java
Code:
package de;

import java.io.Serializable;
import java.text.MessageFormat;
import java.util.HashSet;
import java.util.Set;

public class Honey implements Serializable {
   private int id;
   private String name;
   private String taste;
   private Set<Bee> bees = new HashSet<Bee>();
   
   public Honey() {
      
   }

   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   public String getTaste() {
      return taste;
   }

   public void setTaste(String taste) {
      this.taste = taste;
   }

   public Set<Bee> getBees() {
      return bees;
   }

   public void setBees(Set<Bee> bees) {
      this.bees = bees;
   }
   
   public String toString() {
      return MessageFormat.format("Honey: {0} {1} {2}", new Object[] {id, name, taste});
   }
   
   
}


Bee.java
Code:
package de;

import java.io.Serializable;
import java.text.MessageFormat;

public class Bee implements Serializable {
   private int id;
   private String name;
   private Honey honey;
   
   public Bee() {
      
   }
   
   public Bee(String name) {
      this.name = name;
   }

   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   public Honey getHoney() {
      return honey;
   }

   public void setHoney(Honey honey) {
      this.honey = honey;
   }
   
   public String toString() {
      return MessageFormat.format("{0}: id={1}, name={2}", new Object[] { getClass().getSimpleName(), id, name});
   }
}


hibernate.cfg.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
      "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.url">jdbc:mysql://localhost/hibernatetest</property>
         <property name="connection.username">root</property>
         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
         <property name="connection.password"></property>
       
        <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
        <property name="current_session_context_class">thread</property>
        <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
       <property name="transaction.auto_close_session">true</property>
      
       <!-- zeige alle sql statements -->
       <property name="show_sql">true</property>
      
       <!-- erstellt die tabellen in der datenbank -->
       <property name="hbm2ddl.auto">update</property>
       <mapping resource="de/Honey.hbm.xml" />
       <mapping resource="de/Bee.hbm.xml" />
    </session-factory>
</hibernate-configuration>


Bee.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="de">
  <class name="Bee" table="bee">
     <id name="id">
        <generator class="native" />
     </id>
     <property name="name" type="string"></property>
     <many-to-one name="honey"></many-to-one>
  </class>
</hibernate-mapping>


Honey.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="de">
  <class name="Honey" table="honey">
     <id name="id" column="id">
        <generator class="native" />
     </id>
     <property name="name" type="string"></property>
     <property name="taste" type="string"></property>
     <set name="bees" inverse="true">
        <key column="honey_id"></key>
        <one-to-many class="Honey" />
     </set>
  </class>
</hibernate-mapping>


Do anybody see my mistake?


Top
 Profile  
 
 Post subject: Re: could not instantiate RegionFactory
PostPosted: Wed Apr 14, 2010 4:03 am 
Regular
Regular

Joined: Thu May 07, 2009 5:56 am
Posts: 94
Location: Toulouse, France
Quote:
Caused by: java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException

You must put EhCache jar in your classpath. for instance, ehcache-1.6.1.jar

_________________
everything should be made as simple as possible, but not simpler (AE)


Top
 Profile  
 
 Post subject: Re: could not instantiate RegionFactory
PostPosted: Wed Apr 14, 2010 4:04 am 
Expert
Expert

Joined: Tue Jun 16, 2009 3:36 am
Posts: 990
Code:
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>


This is the old approach and (although it should work) its deprecated.

With Hiberante 3.5 it is best to use ehcache-core version 2.0.0 or higher and specify following instead:
Code:
<property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory"/>


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.