如何在事务中持久化多个持久化上下文中的对象?

时间:2013-07-01 17:57:50

标签: java jpa jta

我正在使用2个不同的数据库(DB2和SQLSERVER)。我在persistence.xml中定义了两个持久性单元。我有一个无状态的ejb,其中我注入了两个持久化上下文。

我有一个方法需要从数据库A中读取某些记录,在那里写一些数据,如果一切正常,可以写一些东西到数据库B.我得到了这个例外:

  

com.ibm.ws.Transaction.IllegalResourceIn2PCTransactionException:非法尝试登记多个1PC XAResources

我很确定我不能按照我想要的方式去做,但我不知道应该使用什么策略。不同的ejbs中不同的persistenceContext?我很迷失在这里,欢迎任何想法。提前谢谢!

1 个答案:

答案 0 :(得分:1)

您需要像Atomikos这样的事务管理器来管理2个不同数据库源之间的事务。 This post向您展示了如何使用JPA,Hibernate和Spring配置它,但我确信您可以根据您的环境进行调整。