2012-03-19 56 views
0

我正在使用WebSphere 8的可嵌入EJB容器爲JUnit4爲我的EJB編寫一些單元測試。我在MyEclipse中有一個簡單的Java項目,我參考了EJB項目。 EJB項目使用Hibernate 3.5進行持久化,而hibernate.cfg.xml中的數據源JNDI是jdbc/connectionname,它是在可嵌入容器的屬性中定義的。帶有Hibernate的WebSphere可嵌入EJB容器引發java.lang.ClassNotFoundException:com.ibm.websphere.jtaextensions.SynchronizationCallback

可嵌入容器啓動成功,可以成功找到EJB並且還可以成功找到數據源。然而,在一個EJB方法的任何第一個方法調用的跟隨着異常thown:

org.hibernate.HibernateException: java.lang.ClassNotFoundException: com.ibm.websphere.jtaextensions.SynchronizationCallback 
at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$TransactionManagerAdapter.<init>(WebSphereExtendedJTATransactionLookup.java:108) 
at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$TransactionManagerAdapter.<init>(WebSphereExtendedJTATransactionLookup.java:88) 
at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup.getTransactionManager(WebSphereExtendedJTATransactionLookup.java:70) 
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:367) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341) 
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) 

任何意見,將不勝感激。

回答

1

WebSphere Application Server中的可嵌入EJB容器不支持ExtendedJTATransaction,但它確實支持java:comp/TransactionSynchronizationRegistry。我對Hibernate並不熟悉,但它似乎應該更新爲在可用時使用TransactionSynchronizationRegistry。

相關問題