我正在为订单系统设计webservices。当我收到订单时,它会在表格中添加大约10000个实体。它可以更多。但正如我所理解的那样,这项工作不会在交易时间内完成,并且会超时并且所有工作都将成为角色。但我希望服务能够在交易时间结束后完成它的工作。我怎么能做到这一点?我们在WebLogic 11g中使用EJB3和jdk 1.6.25。
答案 0 :(得分:1)
您可以设置交易超时:服务 - > JTA,设置Timeout Seconds参数值。默认情况下,此值为30秒。
如果您的交易时间很长,则可能是您更改了自己的应用架构。您可以插入没有事务的行(但是您可能会丢失数据一致性)或使用每次事务的一部分数据进行更新。
对于没有事务的插入行,您可以将@TranscactionAttribute与TransactionAttributeType.NOT_SUPPORTED一起使用。
答案 1 :(得分:0)
在长时间运行的进程中尝试使用带有MDB的JMS。
答案 2 :(得分:0)
如果一致性不是问题并且在其他地方检查过,那么您应该更新ttransaction范围之外的数据库记录。所以在快速的地方保存需要去db的东西。让实际的数据库插入稍后在非事务处理会话中发生。