Note that there are some explanatory texts on larger screens.

plurals
  1. POTransaction timeout with TransactionAttributeType.NOT_SUPPORTED
    text
    copied!<p>I have a J2EE application (weblogic, oracle) that sends large data over internet. But it suffers of transaction timeout. So I refactored the application following way:</p> <p>Timer has container managed transactions, but callback has NOT_SUPPORTED flag.</p> <pre><code>@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); } .. </code></pre> <p>New bean was introduced with bean managed transactions. The long running method does not deal with transactions and database at all:</p> <pre><code>@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()); } </code></pre> <p>Though TransactionTimeout exception is thrown, when client.sendFile() successfuly finishes.</p> <pre><code>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) </code></pre> <p>I do not understand it. Why does it fail? </p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload