我有一个带有 JMS 和 JPA 的 Java SE(!) 场景,我可能需要分布式事务以及“常规”JDBC 事务。我必须监听一个发送服务请求的队列,在接收时保留日志,处理请求并在处理请求后更新日志。仅当请求已成功处理时,才应确认该消息。
第一个想法是只使用 JTA(由 Bitronix 提供)。但是我面临两个问题:
- 如果无法处理请求,则不会保留任何日志
- 如果无法更新日志,则不会处理请求(不太可能但可能)
所以另一个想法是使用常规的 JDBC 事务来创建和更新日志。只有请求事务的实体管理器会加入用户事务,而用于创建和更新日志的实体管理器会直接提交。
是否可以在单个持久性单元上“混合”JTA 和 JPA?或者我们是否已经有了这些 JMS 和 JDBC 事务的模式?