Hibernate version:
Hibernate 3.0rc1
Hi,
I am experiencing a problem when trying to initialise Hibernate from a class that is deployed on an application server (Sun One app server 7). My EAR contains a jar which contains my session bean, home & remote interfaces, rmi stubs and deployment descriptors. The EAR also contains the following third party jars...
hibernate3.jar
dom4j-1.4.jar
jta.jar
log4j-1.2.8.jar
cglib-full-2.0.2.jar
odmg-3.0.jar ehcache-1.1.jar
commons-collections-2.1.1.jar
commons-dbcp-1.2.1.jar
commons-lang-2.1.jar
commons-logging-1.0.4.jar
commons-pool-1.2.jar
classes12.zip
j2ee.jar
proxool-0.8.3.jar
asm-2.0.RC1.jar
asm-util-2.0.RC1.jar
asm-attrs-2.0.RC1.jar
c3p0-0.9.0-pre4.jar
(To be honest, I don't think I need a lot of them but the EAR verifier tool that comes with Sun One said that Hibernate referenced classes from j2ee.jar, proxool-0.8.3.jar, asm-2.0.RC1.jar, asm-util-2.0.RC1.jar, asm-attrs-2.0.RC1.jar, c3p0-0.9.0-pre4.jar and it wouldn't deploy until I added them to the EAR & classpath)All of the third-party jars are referenced in the manifest.mf classpath of the jar containing my session bean.
So, my EAR deploys successfully and in my client code I can get back a reference to the bean from the InitialContext lookup. A method in my seesion bean creates a utility class (DataManager) who's constructor in turn calls...
Code:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
When this is invoked, the following error is thrown and Hibernate fails to initialise.
Full stack trace of any exception that occurs:Code:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.RemoteException: Unknown exception; nested exception is:
java.lang.NoClassDefFoundError: org/apache/log4j/Layout
at com.sun.corba.se.internal.iiop.ShutdownUtilDelegate.mapSystemException(Unknown Source)
at javax.rmi.CORBA.Util.mapSystemException(Unknown Source)
at com.myapp.servicesLayer._SBApplicationMetaData_Stub.getMessage(Unknown Source)
at com.myapp.ServiceLocatorTest.main(ServiceLocatorTest.java:32)
Caused by: java.rmi.RemoteException: Unknown exception; nested exception is:
java.lang.NoClassDefFoundError: org/apache/log4j/Layout
at com.myapp.servicesLayer.SBApplicationMetaDataBean_EJBObjectImpl.getMessage(SBApplicationMetaDataBean_EJBObjectImpl.java:38)
at com.myapp.servicesLayer._SBApplicationMetaDataBean_EJBObjectImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispatchToServant(GenericPOAServerSC.java:569)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.internalDispatch(GenericPOAServerSC.java:211)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispatch(GenericPOAServerSC.java:113)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:275)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process(RequestProcessor.java:83)
at com.iplanet.ias.corba.ee.internal.iiop.ServicableWrapper.service(ServicableWrapper.java:25)
at com.iplanet.ias.util.threadpool.FastThreadPool$ThreadPoolThread.run(FastThreadPool.java:288)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Layout
at org.apache.commons.logging.impl.Log4jFactory.getInstance(Log4jFactory.java:140)
at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:253)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:375)
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:110)
at com.myapp.dataLayer.DataManager.<init>(DataManager.java:104)
at com.myapp.dataLayer.DataManager.getInstance(DataManager.java:58)
at com.myapp.servicesLayer.SBApplicationMetaDataBean.<init>(SBApplicationMetaDataBean.java:57)
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:274)
at java.lang.Class.newInstance0(Class.java:308)
at java.lang.Class.newInstance(Class.java:261)
at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:482)
at com.sun.ejb.containers.StatelessSessionContainer.access$000(StatelessSessionContainer.java:68)
at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:735)
at com.sun.ejb.containers.util.pool.NonBlockingPool.getObject(NonBlockingPool.java:176)
at com.sun.ejb.containers.StatelessSessionContainer.getContext(StatelessSessionContainer.java:458)
at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:495)
at com.myapp.servicesLayer.SBApplicationMetaDataBean_EJBObjectImpl.getMessage(SBApplicationMetaDataBean_EJBObjectImpl.java:24)
... 9 more
A NoClassDefFoundError for org/apache/log4j/Layout is thrown but this class is in the ear (log4j-1.2.8.jar) and referenced in the manifest classpath. The same problem happens if I deploy on weblogic 8.1. I have succesfully used Hibernate from a regular java application (i.e. not on an app server) and didn't have to have half the jars listed above on the classpath to do so.
ANY help on this issue would be greatly appreciated as it's proving to be a bit of a showstopper.
Regards,
John :)[/list]