tp
Interface TM

All Superinterfaces:
Remote
All Known Implementing Classes:
MyTM

public interface TM
extends Remote

Transaction Manager Interface The default set of APIs except register(String) is exposed to WC. Please define extra APIs as necessary to implement two-phase commit.


Method Summary
 void abort(Transaction xid)
          abort transaction
 void commit(Transaction xid)
          commit transaction
 boolean enlist(Transaction xid, String enlistingRM)
          enlist the RM as a member of this transaction
 void register(String rm)
          A RM of which name is rm register itself so that later TM could coordinate for two-phase commit.
 Transaction start()
          start a new transaction
 

Method Detail

start

Transaction start()
                  throws RemoteException
start a new transaction

Returns:
newly generated unique transaction context
Throws:
RemoteException
See Also:
WC.start()

commit

void commit(Transaction xid)
            throws InvalidTransactionException,
                   TransactionAbortedException,
                   RemoteException
commit transaction

Parameters:
xid - transaction identifier
Throws:
InvalidTransactionException
TransactionAbortedException
RemoteException
See Also:
WC.commit(Transaction)

abort

void abort(Transaction xid)
           throws RemoteException
abort transaction

Parameters:
xid - transaction identifier
Throws:
RemoteException
See Also:
WC.abort(Transaction)

enlist

boolean enlist(Transaction xid,
               String enlistingRM)
               throws TransactionAbortedException,
                      InvalidTransactionException,
                      RemoteException
enlist the RM as a member of this transaction

Parameters:
xid - transaction identifier
enlistingRM - RM to add to transaction identified by xid
Returns:
true when enlisted. false otherwise.
Throws:
TransactionAbortedException
InvalidTransactionException
RemoteException
See Also:
RM.getName()

register

void register(String rm)
              throws RemoteException
A RM of which name is rm register itself so that later TM could coordinate for two-phase commit. On invocation, the TM contact registry to setup RPC (RMI for Java).

Parameters:
rm - name of newly started resource manager
Throws:
RemoteException
See Also:
RM.getName()