即使在超时后也完成EJB3的工作

时间:2014-02-18 06:59:51

标签: java java-ee transactions weblogic ejb-3.0

我正在为订单系统设计webservices。当我收到订单时,它会在表格中添加大约10000个实体。它可以更多。但正如我所理解的那样,这项工作不会在交易时间内完成,并且会超时并且所有工作都将成为角色。但我希望服务能够在交易时间结束后完成它的工作。我怎么能做到这一点?我们在WebLogic 11g中使用EJB3和jdk 1.6.25。

3 个答案:

答案 0 :(得分:1)

您可以设置交易超时:服务 - > JTA,设置Timeout Seconds参数值。默认情况下,此值为30秒。

如果您的交易时间很长,则可能是您更改了自己的应用架构。您可以插入没有事务的行(但是您可能会丢失数据一致性)或使用每次事务的一部分数据进行更新。

对于没有事务的插入行,您可以将@TranscactionAttribute与TransactionAttributeType.NOT_SUPPORTED一起使用。

答案 1 :(得分:0)

在长时间运行的进程中尝试使用带有MDB的JMS。

答案 2 :(得分:0)

如果一致性不是问题并且在其他地方检查过,那么您应该更新ttransaction范围之外的数据库记录。所以在快速的地方保存需要去db的东西。让实际的数据库插入稍后在非事务处理会话中发生。