【问题标题】:WebSphere embeddable EJB container with Hibernate throws java.lang.ClassNotFoundException: com.ibm.websphere.jtaextensions.SynchronizationCallback带有 Hibernate 的 WebSphere 可嵌入 EJB 容器抛出 java.lang.ClassNotFoundException: com.ibm.websphere.jtaextensions.SynchronizationCallback
【发布时间】:2012-03-19 14:45:46
【问题描述】:

我正在使用 WebSphere 8 的可嵌入 EJB 容器为我的带有 JUnit4 的 EJB 编写一些单元测试。我在 MyEclipse 中有一个简单的 java 项目,我在其中引用了 EJB 项目。 EJB 项目使用 Hibernate 3.5 进行持久化,hibernate.cfg.xml 中的数据源 JNDI 是 jdbc/connectionname,它在可嵌入容器的属性中定义。

embeddable container 启动成功,EJB 可以找到成功,datasource 也可以找到成功。但是,在 EJB 方法的任何第一个方法调用中,都会抛出以下异常:

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)

任何建议将不胜感激。

【问题讨论】:

    标签: hibernate jakarta-ee websphere junit4 ejb-3.1


    【解决方案1】:

    WebSphere Application Server 中的可嵌入 EJB 容器不支持 ExtendedJTATransaction,但它支持 java:comp/TransactionSynchronizationRegistry。我不熟悉 Hibernate,但似乎应该更新它以在可用时使用 TransactionSynchronizationRegistry。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多