0

I have a problem when I try to instantiate Hibernate and connect with a MySQL database (see error message below).

Curiously enough the connection works fine using the exact same hibernate.cfg.xml file when running Junit tests but it refuses to work when run from Tomcat...

I am starting to run out of ideas.

Any clues or tip where to look?

Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.DynamicMapEntityTuplizer] at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:110) at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:135) at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.(EntityEntityModeToTuplizerMapping.java:69) at org.hibernate.tuple.entity.EntityMetamodel.(EntityMetamodel.java:323) at org.hibernate.persister.entity.AbstractEntityPersister.(AbstractEntityPersister.java:456) at org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:131) at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:84) at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:267) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341) at se.fmt.atlantism.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:16) ... 38 more Caused by: java.lang.NullPointerException at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:107) ... 47 more

Anders Hansson
  • 3,746
  • 3
  • 28
  • 27

5 Answers5

2

I'm writing this for future Googlers and reference.

I've done some more research and the root source of the problem is still not known. However the following article throw me on the right track.

http://www.howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu/

It seems like the Tomcat (version 6 at least) packages available in Ubuntu (and Debian) are not working correctly. Instead I installed Tomcat using the following guide:

http://www.ctrip.ufl.edu/tomcat6-debian-lenny-howto

While this might not be the premium choice of installation it seems necessary to get Tomcat version 6 running without problems on Ubuntu and/or Debian Lenny.

Anders Hansson
  • 3,746
  • 3
  • 28
  • 27
  • Both guides use Tomcat's startup.sh and shutdown.sh scripts to control the Tomcat instance. This is fine for development, but in production, you should use jsvc to run Tomcat with a dedicated, low privilege account. You need to build jsvc - sources ship with Tomcat in $CATALINA_HOME/bin/jsvc-src.tar.gz Tomcat5.sh in this archive provides a suitable install script - it'll need tweaking for your jvm/environment. More details here from Apache: http://tomcat.apache.org/tomcat-6.0-doc/setup.html This only applies to *nix installations - the Windows installer magically creates a jsvc service. – Alan Donnelly Apr 18 '10 at 19:07
1

In my case, this error was resolved by switching the <dependency/> order in my pom.xml. When hibernate (3.2.7.ga) comes before hibernate-annotations (3.4.0.GA) this error occurs. The other way around, it works fine. This is the case even with scope=compile.

I would guess that you need to tweak your classpath, except that (assuming you've dropped both jars in WEB-INF/lib) it should alpha-sort in the correct order. But maybe this will give someone a hint on how to move forward.

Anonymoose
  • 5,662
  • 4
  • 33
  • 41
1

In my case it was a simple mistake - the config file *.hbm.xml had a property that the mapped object didnt have! I also heard of cases of that error apearing when you misspell a get/set function - very similar to my case.

  • Thanks for your input. I don't think it's a problem with the *.hbm.xml files for a few different reasons; but I guess this problem has many roots and reasons. – Anders Hansson Mar 31 '10 at 10:50
0

This is how the Tomcat daemon process looks:

root      2605  0.0  0.0  16584   376 ?        Ss   15:39   0:00
  /usr/bin/jsvc -user tomcat6
 -cp /usr/share/java/commons-daemon.jar:/usr/share/tomcat6/bin/bootstrap.jar
 -outfile SYSLOG -errfile SYSLOG -pidfile /var/run/tomcat6.pid
 -Djava.awt.headless=true -Xmx128M
 -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed
 -Dcatalina.base=/var/lib/tomcat6 -Dcatalina.home=/usr/share/tomcat6
 -Djava.io.tmpdir=/tmp/tomcat6-temp -Djava.security.manager
 -Djava.security.policy=/var/lib/tomcat6/work/catalina.policy
 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
 -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties
 org.apache.catalina.startup.Bootstrap

This is how the Tomcat process looks when run from within Eclipse using the Sysdeo Tomcat launcher plugin:
(this one actually works)

jzaruba   2655 19.7  4.5 358304 46152 ?        Sl   15:43   0:01
 /usr/lib/jvm/java-6-sun-1.6.0.15/bin/java
 -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:37377
 -Dcatalina.home=/usr/share/tomcat6
 -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed
 -Dcatalina.base=/var/lib/tomcat6 -Djava.io.tmpdir=/var/lib/tomcat6/temp
 -Dfile.encoding=UTF-8 -classpath
 /usr/share/tomcat6/bin/bootstrap.jar:/usr/lib/jvm/java-6-sun-1.6.0.15/lib/tools.jar 
 org.apache.catalina.startup.Bootstrap start

The working one (Eclipse launched) is run using java-6-sun-1.6.0.15, I'm Windows user so I don't know how to tell which JRE is used for /usr/lib/jsvc (looking at it though), but my guess would be it is some OpenJDK... Could this be the difference?

update: jsvc probably uses the same JRE Sysdeo Tomcat launcher does

Hubert Kario
  • 21,314
  • 3
  • 24
  • 44
Jaroslav Záruba
  • 4,694
  • 5
  • 39
  • 58
0

I was facing the same problem. It went away after I downloaded "javassist.jar" and put it in the classpath: http://www.java2s.com/Code/Jar/JKL/Downloadjavassistjar.htm

ashweta
  • 1,437
  • 3
  • 17
  • 19