【发布时间】:2015-06-13 17:18:59
【问题描述】:
我正在使用 karaf 3.0.3 以及以下 Hibernate 捆绑包:
161 |活跃 | 80 | 4.2.12.决赛 |休眠核心
162 |活跃 | 80 | 4.2.12.决赛 |休眠实体管理器
172 |活跃 | 80 | 4.2.12.决赛 |休眠-osgi
虽然我可以将完全相同的组件(JPA DAO、服务层等)部署为独立的 Spring 应用程序,但通过这种设置,我无法让事务回滚工作,而且我看到回滚执行正确。
在尝试让事务与 OSGI/hibernate 一起成功工作时,有哪些陷阱?
- 是否与跨捆绑交易有关? (我的 DAO 和服务层位于不同的捆绑包中)
如果我在这里没有得到回复,我会更新更具体的信息,但首先我想看看这是否是 OSGi/hibernate/jpa 的常见问题。
在 user2007829 发表评论后编辑:
DAO 扩展了 Spring 的 JpaRepository,服务层方法使用 Spring 的 @Transactional 进行了注解。我相信在这个设置中,自动提交应该被隐式关闭,并且独立的 spring 应用程序设置按预期工作。那是错的吗?
在 OSGI 情况下,持久性单元 XML 文件应该有何不同?现在唯一的区别是在 karaf 情况下事务类型是 JTA,我有这样的声明:
<jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/my-datasource)</jta-data-source>
【问题讨论】:
标签: spring hibernate osgi karaf