== TransactionConstants .TransactionConstants [cols="2,1,6", options="header"] |=============== |Name|Value|Description |ABORTED|0| The participant is not prepared. Transaction should be aborted. |PREPARED|1| The participant is prepared to commit the transaction, provided all other participants down the list return PREPARED too. |RETRY|2| The transaction will be retried after a short period of time defined by the +retry-timeout+ TransactionManager property (which defaults to 5 seconds). This can be used in situations where a transient error has been detected (such as a link down situation or a transient database issue). |PAUSE|4 a| The transaction will be paused and will be resumed in the following situations: a) Some external thread calls +resume+ in the transaction's Context (provided the Context implements the +Pausable+ interface) b) A timeout specified by the Context's Pausable interface occurs c) A default timeout specified by the TransactionManager's +pause-timeout+ property (which defaults to five minutes) |NO_JOIN|0x40| This modifier is a hint to the TransactionManager to let it know that it is not required to call this participant's +commit+ or +abort+ methods once the committing or aborting phase of the transaction is reached. |READONLY|0x80| This modifier is a hint to the TransactionManager to let it know that this participant has not modified any persistent information in the context, so saving a snapshot of the context is not required. |FAIL|0xC0| Handy constant equals to `ABORTED \| READONLY \| NO_JOIN` |=============== [NOTE] ====== Despite the fact that a participant may indicate that it doesn't want to JOIN a given transaction (by using the +NO_JOIN+ run-time modifier), under certain recovery situations the TransactionManager may still call its +commit+ or +abort+ method, so the participant developer should be prepared to receive a +commit+ or +abort+ call for an unknown transaction. The code should check the +long id+ and / or +Serializable context+ in order to figure out what to do. That said, most participants returning +NO_JOIN+ actually have empty +commit()+ and +abort()+ callbacks. ======