Transactions 不支持TransactionAttribute类型为的事务超时
我有一个J2EE应用程序(weblogic,oracle),它通过internet发送大数据。但它会遇到事务超时问题。因此,我按照以下方式重构了应用程序: 计时器具有容器管理的事务,但回调没有受支持的标志Transactions 不支持TransactionAttribute类型为的事务超时,transactions,ejb,weblogic,Transactions,Ejb,Weblogic,我有一个J2EE应用程序(weblogic,oracle),它通过internet发送大数据。但它会遇到事务超时问题。因此,我按照以下方式重构了应用程序: 计时器具有容器管理的事务,但回调没有受支持的标志 @Stateless(mappedName = "TransferTimer", name = "TransferTimer") public class TransferTimer implements ITransferTimerLocal { @Timeout @Tra
@Stateless(mappedName = "TransferTimer", name = "TransferTimer")
public class TransferTimer implements ITransferTimerLocal {
@Timeout
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public void timeoutCallback(final Timer timer) {
vo = transferController.prepareTransfer();
if (vo != null) {
transferController.sendData(vo);
transferController.finishTransfer(vo);
}
..
新bean是通过bean管理的事务引入的。长时间运行的方法根本不处理事务和数据库:
@Stateless
@TransactionManagement(value= TransactionManagementType.BEAN)
public class TransferController implements TransferControllerLocal {
public TransferVO prepareTransfer() {
TransferVO vo = null;
try {
userTransaction.begin();
..
// no transactions must be there - it may take too much time
public void sendData(TransferVO vo) {
client.sendFile(vo.getOrder(), vo.getArchive());
}
尽管TransactionTimeout异常会在client.sendFile()成功完成时引发
Caused by: weblogic.transaction.internal.TimedOutException: Transaction timed out after 61 seconds
BEA1-263D00276AD109CA0CA4
at weblogic.transaction.internal.ServerTransactionImpl.wakeUp(ServerTransactionImpl.java:1788)
at weblogic.transaction.internal.ServerTransactionManagerImpl.processTimedOutTransactions(ServerTransactionManagerImpl.java:1676)
at weblogic.transaction.internal.TransactionManagerImpl.wakeUp(TransactionManagerImpl.java:1988)
at weblogic.transaction.internal.ServerTransactionManagerImpl.wakeUp(ServerTransactionManagerImpl.java:1586)
at weblogic.transaction.internal.WLSTimer.timerExpired(WLSTimer.java:35)
我不明白。为什么会失败 有人能帮我吗?我的问题是如何避免J2EE容器在计时器中创建事务。您解决了这个问题吗?它是否与其他TransactionAttribute类型有相同的问题?weblogic中默认的JTA事务超时为30秒,您可以尝试使用管理控制台来增加该超时。这是我们使用的难看的解决方法。不幸的副作用是,它是一个影响其他bean的全局设置。