Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Transactions 不支持TransactionAttribute类型为的事务超时_Transactions_Ejb_Weblogic - Fatal编程技术网

Transactions 不支持TransactionAttribute类型为的事务超时

Transactions 不支持TransactionAttribute类型为的事务超时,transactions,ejb,weblogic,Transactions,Ejb,Weblogic,我有一个J2EE应用程序(weblogic,oracle),它通过internet发送大数据。但它会遇到事务超时问题。因此,我按照以下方式重构了应用程序: 计时器具有容器管理的事务,但回调没有受支持的标志 @Stateless(mappedName = "TransferTimer", name = "TransferTimer") public class TransferTimer implements ITransferTimerLocal { @Timeout @Tra

我有一个J2EE应用程序(weblogic,oracle),它通过internet发送大数据。但它会遇到事务超时问题。因此,我按照以下方式重构了应用程序:

计时器具有容器管理的事务,但回调没有受支持的标志

@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的全局设置。