2013-08-05 63 views
0

我正在嘗試在WAS 8.5中部署MDB。會話Factory正在使用ejbCreate方法進行初始化。當我嘗試部署應用程序ejb加載成功,然後關閉隊列激活並給出以下例外 - 我沒有使用任何框架或MAven構建,因此所有的jar和配置文件都已添加到類路徑中一個獨立的Java應用程序。在EJB mdb中初始化Hibernate SessionFactory?

這裏是Hibernate和JAVAEE罐子我using-

antlr-2.7.7 
c3p0-0.9.1 
commons-collections-3.2.1 
commons-logging-api-1.1.3 
dom4j-1.6.1 
hibernate-c3p0-4.1.5.Final 
hibernate-commons-annotations-4.0.1.Final 
hibernate-core-4.1.5.Final 
hibernate-entitymanager-4.1.5.Final 
hibernate-envers-4.1.5.Final 
hibernate-jpa-2.0-api-1.0.1.Final 
javassist-3.15.0GA.jar 
jboss-logging-3.1.0.GA.jar 
jboss-transaction-api_1.1_spec-1.0.0.Final 
jms-1.1 
log4j-1.2.15 
MySQL-connector-java-5.1.22 
slf4j-api-1.6.1 
javaee.jar 
javaee-api-6.0 

下面是從系統日誌異常堆棧跟蹤

EJB threw an unexpected (non-declared) exception during invocation of method "onMessage".Exception data: 
      javax.ejb.EJBException: MDB PostConstruct failure; nested exception is: 
      java.lang.Exception: See nested Throwable 
    at com.ibm.ejs.container.util.ExceptionUtil.EJBException(ExceptionUtil.java:472) 
    at com.ibm.ejs.container.MessageDrivenBeanO.initialize(MessageDrivenBeanO.java:427) 
    at com.ibm.ejs.container.BeanOFactory.create(BeanOFactory.java:147) 
    at com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1238) 
    at com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1356) 
    at com.ibm.ejs.container.activator.UncachedActivationStrategy.atActivate 
      (UncachedActivationStrategy.java:88) 
    at com.ibm.ejs.container.activator.Activator.preInvokeActivateBean(Activator.java:615) 
    at com.ibm.ejs.container.EJSContainer.preInvokeActivate(EJSContainer.java:4205) 
    at com.ibm.ejs.container.EJSContainer.preInvokeMdbActivate(EJSContainer.java:3709) 
    at com.ibm.ejs.container.MessageEndpointHandler.beforeDelivery 
      (MessageEndpointHandler.java:1449) 
    at com.ibm.ejs.container.MessageEndpointHandler.invokeMessageEndpointMethod 
      (MessageEndpointHandler.java:866) 
    at com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:832) 
    at $Proxy50.beforeDelivery(Unknown Source) 
    at com.ibm.mq.connector.inbound.AbstractWorkImpl.run(AbstractWorkImpl.java:188) 
    at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:608) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1783) 
      Caused by: java.lang.Exception: See nested Throwable 
    at com.ibm.ejs.container.util.ExceptionUtil.EJBException(ExceptionUtil.java:470) 
    ... 15 more 
      Caused by: java.lang.NoClassDefFoundError: org.hibernate.HibernateException 
    at java.lang.J9VMInternals.verifyImpl(Native Method) 
    at java.lang.J9VMInternals.verify(J9VMInternals.java:85) 
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:162) 
    at com.hps.superenrollment.ejbmodule.SuperEnrollmentRequestMDB.ejbCreate 
      (SuperEnrollmentRequestMDB.java:42) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
    at java.lang.reflect.Method.invoke(Method.java:611) 
    at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor 
      (InterceptorProxy.java:232) 
    at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed 
      (InvocationContextImpl.java:559) 
    at com.ibm.ejs.container.interceptors.InvocationContextImpl.doLifeCycle 
      (InvocationContextImpl.java:273) 
    at com.ibm.ejs.container.MessageDrivenBeanO.initialize(MessageDrivenBeanO.java:411) 

請幫助我,因爲我完全上了什麼錯誤丟失這裏 。

回答

1

NoClassDefFoundError指示某些Hibernate類不在您的類路徑中。你確定你的類路徑中有所有的依賴jar嗎?(包括運行時需要的jar)?

指示您應該使用PostConstructor方法而不是Bean類構造函數的異常表明您應該使用ejbCreate()方法。這是初始化和加載MDB依賴關係的推薦位置,因爲它是由ejb容器的單個線程調用的,並確保在執行ejbCreate()中的配置之前已完全構建MDB。它有點類似於servlet中的init方法,它也保證被servlet容器稱爲單線程。

+0

這可能是一件好事。事實上,在hibernate初始化時拋出的異常有點棘手。它們可以涉及任何類型的配置異常。如果可能的話,我會仔細檢查配置並加載最小設置和映射,以減少錯誤範圍。 – Filip

+0

菲利普,感謝您的輸入。我的hibernate.cfg.xml已經是最低限度,只有數據庫細節,userid/password和映射類。我會嘗試使用ejbCreate初始化會話工廠,並讓你知道它是如何去的! – user2634726

+0

嗨菲利普,現在,我正在使用ejbCreate初始化sessionFactory ....我得到了很多classnotfound異常的休眠。由於我沒有使用Maven構建,所以如何將Hibernate jar添加到classpath中來解決在運行時發生的Classnotfound異常,因爲jar沒有通過EAR文件導出。請建議,因爲我一直在看這個連續2天沒有決議! – user2634726

相關問題