org.objectweb.jotm.core.transaction
Interface TwoPhaseCommitEvent

All Superinterfaces:
Event, TransactionalEvent
All Known Implementing Classes:
AfterOnePhaseCommitEvent, AfterPrepareEvent, BeforeOnePhaseCommitEvent, BeforePrepareEvent, OnePhaseCommitEvent, PrepareEvent

public interface TwoPhaseCommitEvent
extends TransactionalEvent

TwoPhaseCommitEvent reflects an event in a two-phase-commit transaction. Together with events defined in TransactionalEvent, the lifecycle of a transaction (and therefore the sequence of related transactional events) is as follows:

  BEFORE_COMPLETION
  if (commit() is requested) {
    if (number_of_commit_listeners = 1) {
      BEFORE_ONE_PHASE_COMMIT
      ONE_PHASE_COMMIT
      AFTER_ONE_PHASE_COMMIT
    }
    if (number_of_commit_listners > 1) {
      BEFORE_PREPARE
      PREPARE
      AFTER_PREPARE
      if (prepare_vote == VOTE_YES) {
        BEFORE_COMMIT
        COMMIT
        AFTER_COMMIT
      }
      if (prepare_vore == VOTE_NO) {
        BEFORE_ABORT
        ABORT
        AFTER_ABORT
      }
      if (prepare_vote == VOTE_READ_ONLY) {
        BEFORE_COMMIT
        COMMIT
        AFTER_COMMIT
      }
    }
  }
  if (abort() is requested) {
    BEFORE_ABORT
    ABORT
    AFTER_ABORT
  }
  AFTER_COMPLETION
Notes:
Implementations can use TYPE_TWO_PHASE_COMMIT which comprises the TYPE_PREPARE, TransactionalEvent.TYPE_COMMIT, TYPE_ONE_PHASE_COMMIT, and TransactionalEvent.TYPE_ABORT events, or TYPE_SYNCHRONIZATION which comprises the TransactionalEvent.TYPE_BEFORE_COMPLETION and TransactionalEvent.TYPE_AFTER_COMPLETION events.


Field Summary
static int TYPE_AFTER_ONE_PHASE_COMMIT
          After-one-phase-commit event.
static int TYPE_AFTER_PREPARE
          After-prepare event.
static int TYPE_BEFORE_ONE_PHASE_COMMIT
          Before-one-phase-commit event.
static int TYPE_BEFORE_PREPARE
          Before-prepare event.
static int TYPE_ONE_PHASE_COMMIT
          One-phase-commit event.
static int TYPE_PREPARE
          Prepare event.
static int TYPE_SYNCHRONIZATION
          Synchronization events.
static int TYPE_TWO_PHASE_COMMIT
          One of the two-phase-commit events.
 
Fields inherited from interface org.objectweb.jotm.core.transaction.TransactionalEvent
TYPE_ABORT, TYPE_AFTER_ABORT, TYPE_AFTER_COMMIT, TYPE_AFTER_COMPLETION, TYPE_BEFORE_ABORT, TYPE_BEFORE_COMMIT, TYPE_BEFORE_COMPLETION, TYPE_COMMIT
 
Methods inherited from interface org.objectweb.jotm.core.transaction.TransactionalEvent
getTransaction, getType
 

Field Detail

TYPE_PREPARE

public static final int TYPE_PREPARE
Prepare event.

See Also:
Constant Field Values

TYPE_BEFORE_PREPARE

public static final int TYPE_BEFORE_PREPARE
Before-prepare event.

See Also:
Constant Field Values

TYPE_AFTER_PREPARE

public static final int TYPE_AFTER_PREPARE
After-prepare event.

See Also:
Constant Field Values

TYPE_BEFORE_ONE_PHASE_COMMIT

public static final int TYPE_BEFORE_ONE_PHASE_COMMIT
Before-one-phase-commit event.

See Also:
Constant Field Values

TYPE_ONE_PHASE_COMMIT

public static final int TYPE_ONE_PHASE_COMMIT
One-phase-commit event.

See Also:
Constant Field Values

TYPE_AFTER_ONE_PHASE_COMMIT

public static final int TYPE_AFTER_ONE_PHASE_COMMIT
After-one-phase-commit event.

See Also:
Constant Field Values

TYPE_TWO_PHASE_COMMIT

public static final int TYPE_TWO_PHASE_COMMIT
One of the two-phase-commit events. This event covers the TYPE_PREPARE, TransactionalEvent.TYPE_COMMIT, TYPE_ONE_PHASE_COMMIT, and TransactionalEvent.TYPE_ABORT events.

See Also:
Constant Field Values

TYPE_SYNCHRONIZATION

public static final int TYPE_SYNCHRONIZATION
Synchronization events. This event covers the TransactionalEvent.TYPE_BEFORE_COMPLETION and TransactionalEvent.TYPE_AFTER_COMPLETION events.

See Also:
Constant Field Values