|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.sun.sgs.impl.service.transaction.TransactionImpl
final class TransactionImpl
Provides an implementation of Transaction.
Note that this implementation does not check that each joining
TransactionParticipant has a unique value for getTypeName.
Nor is this check done for TransactionListeners. If two
participants or listeners have the same type name then their
profiling data will be aggregated and reported as a single result.
| Constructor Summary | |
|---|---|
TransactionImpl(long tid,
long timeout,
boolean usePrepareAndCommitOpt,
ProfileCollectorHandle collectorHandle)
Creates an instance with the specified transaction ID, timeout, prepare and commit optimization flag, and collectorHandle. |
|
| Method Summary | |
|---|---|
void |
abort(Throwable cause)
Aborts the transaction, specifying the cause. |
void |
checkTimeout()
Checks if this Transaction has timed out, throwing a
TransactionTimeoutException if it has. |
(package private) void |
commit()
Commits this transaction |
boolean |
equals(Object object)
Returns true if the argument is an instance of the same
class with the same transaction ID. |
Throwable |
getAbortCause()
Returns the cause supplied in the first call to abort on
this transaction, or null if abort has not been called. |
long |
getCreationTime()
Returns the time at which this Transaction was created. |
byte[] |
getId()
Returns the unique identifier for this Transaction. |
long |
getTimeout()
Returns the length of time in milliseconds that this Transaction is allowed to run before it should timeout. |
int |
hashCode()
Returns a hash code value for this object. |
boolean |
isAborted()
Returns information about whether abort has been called
on this transaction. |
void |
join(TransactionParticipant participant)
Tells the Transaction that the given
TransactionParticipant is participating in the
transaction. |
void |
registerListener(TransactionListener listener)
Registers a listener that will be notified just before this transaction is prepared, and after it commits or aborts. |
String |
toString()
Returns a string representation of this instance. |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
TransactionImpl(long tid,
long timeout,
boolean usePrepareAndCommitOpt,
ProfileCollectorHandle collectorHandle)
| Method Detail |
|---|
public byte[] getId()
Transaction. If
two Transactions have the same identifier then they
represent the same transaction. This will always return a unique
copy of the identifier.
getId in interface Transactionpublic long getCreationTime()
Transaction was created.
This is a value in milliseconds measured from 1/1/1970. This is
typically used for determining whether a Transaction
has run too long, or how it should be re-scheduled, but in
practice may be used as a participant sees fit.
getCreationTime in interface Transactionpublic long getTimeout()
Transaction is allowed to run before it should timeout.
getTimeout in interface Transactionpublic void checkTimeout()
Transaction has timed out, throwing a
TransactionTimeoutException if it has.
checkTimeout in interface Transactionpublic void join(TransactionParticipant participant)
Transaction that the given
TransactionParticipant is participating in the
transaction. A TransactionParticipant is allowed to
join a Transaction more than once, but will only
be registered as a single participant.
If the transaction has been aborted, then the exception thrown will have
as its cause the value provided in the first call to abort, if any. If the cause implements ExceptionRetryStatus,
then the exception thrown will, too, and its shouldRetry method will return the
value returned by calling that method on the cause. If no cause was
supplied, then the exception will either not implement ExceptionRetryStatus or its shouldRetry method will return
false.
join in interface Transactionparticipant - the TransactionParticipant joining
the transactionpublic void abort(Throwable cause)
abort by throwing an exception that details why the
transaction was aborted. If the exception could be caught by application
code, then the exception thrown should be a TransactionAbortedException, created by wrapping the original cause if
needed. Throwing an exception is needed not only to communicate the
cause of the abort and whether to retry the exception, but also because
the application code associated with this transaction will continue to
execute normally unless an exception is raised. Supplying the cause to
this method allows future calls to the transaction to include the cause
to explain why the transaction is no longer active.
If the transaction has been aborted, then the exception thrown will have
as its cause the value provided in the first call to abort, if any. If the cause implements ExceptionRetryStatus,
then the exception thrown will, too, and its shouldRetry method will return the
value returned by calling that method on the cause.
abort in interface Transactioncause - the exception that caused the abortpublic boolean isAborted()
abort has been called
on this transaction.
isAborted in interface Transactiontrue if abort has been called on this
transaction, else falsepublic Throwable getAbortCause()
abort on
this transaction, or null if abort has not been called.
getAbortCause in interface Transactionnullpublic void registerListener(TransactionListener listener)
The listener's beforeCompletion method will be called after the main work of the
transaction is complete, just before the transaction is prepared. The
transaction will still be considered active at the time of the call,
although calls should not be made to independent Services. If
the call to beforeCompletion throws an exception, then this
transaction will be aborted, and the exception will be treated as if it
were thrown by the main body of the transaction. The listener's
beforeCompletion method will not be called if this transaction
is aborted before it reaches the preparation stage, including if an
earlier call to beforeCompletion on another listener throws an
exception or aborts this transaction.
The listener's afterCompletion method will be called after this transaction is
committed or aborted.
Any number of listeners can be registered for this transaction by making multiple calls to this method. If multiple listeners are registered, the order in which the listeners are called is unspecified.
registerListener in interface Transactionlistener - the listenerpublic String toString()
toString in class Objectpublic boolean equals(Object object)
true if the argument is an instance of the same
class with the same transaction ID.
equals in class Objecttrue if the argument equals this instance,
otherwise falsepublic int hashCode()
hashCode in class Object
void commit()
throws Exception
TransactionNotActiveException - if the transaction has been
aborted
TransactionAbortedException - if a call to prepare on a transaction
participant or to beforeCompletion on a transaction listener aborts the
transaction but does not throw an exception
IllegalStateException - if prepare has been called on any
transaction participant and abort has
not been called on the transaction, or if called from a thread
that is not the thread that created this transaction
Exception - any exception thrown when calling prepare on
a participant or beforeCompletion on a listenerTransactionHandle.commit
|
RedDwarf, Version 0.10.1 2010-03-14 10:56:12 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||