2012-03-19 2 views
0

Я использую вложенный EJB-контейнер WebSphere 8 для написания некоторых модульных тестов для своих EJB с помощью JUnit4. У меня есть простой Java-проект в MyEclipse, где я ссылаюсь на проект EJB. Проект EJB использует Hibernate 3.5 для сохранения, а источник данных JNDI в hibernate.cfg.xml - это имя jdbc/connectionname, которое определено в свойствах встраиваемого контейнера.Встраиваемый контейнер EJB WebSphere с Hibernate throws java.lang.ClassNotFoundException: com.ibm.websphere.jtaextensions.SynchronizationCallback

Встраиваемый контейнер запускается успешно, EJB можно найти успешно, и источник данных также найден успешно. Однако, по любому первому методу вызова метода EJB followin исключение 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

Встраиваемый контейнер EJB в WebSphere Application Server не поддерживает ExtendedJTATransaction, но поддерживает java: comp/TransactionSynchronizationRegistry. Я не знаком с Hibernate, но, похоже, он должен быть обновлен, чтобы использовать TransactionSynchronizationRegistry, когда он доступен.