title: Transaction timeout with TransactionAttributeType.NOT_SUPPORTED
body: <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>