你可以创建自己的JTA交易吗?

时间:2011-04-22 17:05:50

标签: java jpa-2.0 eclipselink jta

我正在从webservice将大量数据加载到数据库中。我正在使用eclipslink进行持久化并在glassfish 3.0上运行应用程序。我在测试数据集上遇到问题,因为存在一些外键约束违规。我对违规行为很好,如果不完整,我不想要那些数据。然而,我的问题在于容器中抛出了异常。然后标记我的回滚事务,然后我根本没有数据。

我想继续使用JTA,但我不确定我是否可以做我想要实现的目标,那就是创建我自己的JTA事务,这样我就可以控制它何时提交等等。我不确定这是不是一个好主意,尽管我这样做可能会破坏使用JTA的一些好处。

那么有可能获得JTA交易吗?

2 个答案:

答案 0 :(得分:2)

数据库是否在会话bean的方法中工作。用以下方法注释该方法:

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)

它将获得自己的交易。外部交易将在其完成任务时暂停。

答案 1 :(得分:0)

http://wiki.eclipse.org/Using_Advanced_Unit_of_Work_API_%28ELUG%29#Integrating_the_Unit_of_Work_with_an_External_Transaction_Servicestrong文字**

阅读如何使用外部交易服务获取工作单元。显然你可以通过查询UserTransaction的容器JNDI来抢夺UserTransaction和/或启动你自己的事务