org.apache.derby.jdbc
Class XATransactionState

java.lang.Object
  extended by org.apache.derby.iapi.services.context.ContextImpl
      extended by org.apache.derby.jdbc.XATransactionState
All Implemented Interfaces:
Context

final class XATransactionState
extends ContextImpl


Nested Class Summary
private  class XATransactionState.CancelXATransactionTask
          The implementation of TimerTask to cancel a global transaction.
 
Field Summary
private  EmbedXAResource associatedResource
           
(package private)  int associationState
          Association state of the transaction.
(package private)  EmbedConnection conn
           
(package private)  EmbedXAResource creatingResource
           
(package private)  boolean isPrepared
          has this transaction been prepared.
(package private)  boolean performTimeoutRollback
          Indicates whether this transaction is supposed to be rolled back by timeout.
(package private)  int rollbackOnlyCode
           
(package private)  java.util.HashMap suspendedList
          When an XAResource suspends a transaction (end(TMSUSPEND)) it must be resumed using the same XAConnection.
(package private) static int T0_NOT_ASSOCIATED
           
(package private) static int T1_ASSOCIATED
           
(package private) static int TC_COMPLETED
           
(package private)  XATransactionState.CancelXATransactionTask timeoutTask
          A timer task scheduled for the time when the transaction will timeout.
(package private) static int TRO_DEADLOCK
          Rollback-only due to deadlock
(package private) static int TRO_FAIL
          Rollback-only due to end(TMFAIL)
(package private) static int TRO_TIMEOUT
          Rollback-only due to timeout
(package private)  XAXactId xid
           
 
Constructor Summary
XATransactionState(ContextManager cm, EmbedConnection conn, EmbedXAResource resource, XAXactId xid)
           
 
Method Summary
(package private)  void cancel(java.lang.String messageId)
          This function is called from the timer task when the transaction times out.
 void cleanupOnError(java.lang.Throwable t)
          Contexts will be passed errors that are caught by the outer system when they are serious enough to require corrective action.
(package private)  boolean end(EmbedXAResource resource, int flags, boolean endingCurrentXid)
           
(package private)  void scheduleTimeoutTask(long timeoutMillis)
          Schedule a timeout task wich will rollback the global transaction after the specified time will elapse.
(package private)  void start(EmbedXAResource resource, int flags)
           
(package private)  void xa_commit(boolean onePhase)
          Commit the global transaction and cancel the timeout task.
(package private)  void xa_finalize()
          This method cancels timeoutTask and assigns 'performTimeoutRollback = false'.
(package private)  int xa_prepare()
          Prepare the global transaction for commit.
(package private)  void xa_rollback()
          Rollback the global transaction and cancel the timeout task.
 
Methods inherited from class org.apache.derby.iapi.services.context.ContextImpl
appendErrorInfo, getContextManager, getIdName, isLastHandler, popMe, pushMe
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TRO_TIMEOUT

static final int TRO_TIMEOUT
Rollback-only due to timeout

See Also:
Constant Field Values

TRO_DEADLOCK

static final int TRO_DEADLOCK
Rollback-only due to deadlock

See Also:
Constant Field Values

TRO_FAIL

static final int TRO_FAIL
Rollback-only due to end(TMFAIL)

See Also:
Constant Field Values

T0_NOT_ASSOCIATED

static final int T0_NOT_ASSOCIATED
See Also:
Constant Field Values

T1_ASSOCIATED

static final int T1_ASSOCIATED
See Also:
Constant Field Values

TC_COMPLETED

static final int TC_COMPLETED
See Also:
Constant Field Values

conn

final EmbedConnection conn

creatingResource

final EmbedXAResource creatingResource

associatedResource

private EmbedXAResource associatedResource

xid

final XAXactId xid

suspendedList

java.util.HashMap suspendedList
When an XAResource suspends a transaction (end(TMSUSPEND)) it must be resumed using the same XAConnection. This has been the traditional Cloudscape/Derby behaviour, though there does not seem to be a specific reference to this behaviour in the JTA spec. Note that while the transaction is suspended by this XAResource, another XAResource may join the transaction and suspend it after the join.


associationState

int associationState
Association state of the transaction.


rollbackOnlyCode

int rollbackOnlyCode

isPrepared

boolean isPrepared
has this transaction been prepared.


performTimeoutRollback

boolean performTimeoutRollback
Indicates whether this transaction is supposed to be rolled back by timeout.


timeoutTask

XATransactionState.CancelXATransactionTask timeoutTask
A timer task scheduled for the time when the transaction will timeout.

Constructor Detail

XATransactionState

XATransactionState(ContextManager cm,
                   EmbedConnection conn,
                   EmbedXAResource resource,
                   XAXactId xid)
Method Detail

cleanupOnError

public void cleanupOnError(java.lang.Throwable t)
Description copied from interface: Context
Contexts will be passed errors that are caught by the outer system when they are serious enough to require corrective action. They will be told what the error is, so that they can react appropriately. Most of the time, the contexts will react by either doing nothing or by removing themselves from the context manager. If there are no other references to the context, removing itself from the manager equates to freeing it.
On an exception that is session severity or greater the Context must push itself off the stack. This is to ensure that after a session has been closed there are no Contexts on the stack that potentially hold references to objects, thus delaying their garbage collection.

Contexts must release all their resources before removing themselves from their context manager.

The context manager will "unwind" the contexts during cleanup in the reverse order they were placed on its global stack.

If error is an instance of StandardException then an implementation of this method may throw a new exception if and only if the new exception is an instance of StandardException that is more severe than the original error or the new exception is a not an instance of StandardException (e.g java.lang.NullPointerException).


start

void start(EmbedXAResource resource,
           int flags)
     throws javax.transaction.xa.XAException
Throws:
javax.transaction.xa.XAException

end

boolean end(EmbedXAResource resource,
            int flags,
            boolean endingCurrentXid)
      throws javax.transaction.xa.XAException
Throws:
javax.transaction.xa.XAException

scheduleTimeoutTask

void scheduleTimeoutTask(long timeoutMillis)
Schedule a timeout task wich will rollback the global transaction after the specified time will elapse.

Parameters:
timeoutMillis - The number of milliseconds to be elapsed before the transaction will be rolled back.

xa_rollback

void xa_rollback()
           throws java.sql.SQLException
Rollback the global transaction and cancel the timeout task.

Throws:
java.sql.SQLException

xa_commit

void xa_commit(boolean onePhase)
         throws java.sql.SQLException
Commit the global transaction and cancel the timeout task.

Parameters:
onePhase - Indicates whether to use one phase commit protocol. Otherwise two phase commit protocol will be used.
Throws:
java.sql.SQLException

xa_prepare

int xa_prepare()
         throws java.sql.SQLException
Prepare the global transaction for commit.

Throws:
java.sql.SQLException

xa_finalize

void xa_finalize()
This method cancels timeoutTask and assigns 'performTimeoutRollback = false'.


cancel

void cancel(java.lang.String messageId)
      throws javax.transaction.xa.XAException
This function is called from the timer task when the transaction times out.

Throws:
javax.transaction.xa.XAException
See Also:
XATransactionState.CancelXATransactionTask

Built on Thu 2012-03-29 21:53:33+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.