Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.slide.common
Class AbstractService

    java.lang.Object
      org.apache.slide.common.AbstractServiceBase
          org.apache.slide.common.AbstractService

All Implemented Interfaces:
  Service, javax.transaction.xa.XAResource

public abstract class AbstractService
extends AbstractServiceBase
implements Service

Slide Service abstract implementation with support for multiple simultaneous transaction context.

Version:
  $Revision: 1.9 $

Field Summary
`protected java.util.Hashtable` | `currentContexts` Current transaction context.
`static int` | `TX_IDLE`
`static int` | `TX_PREPARED`
`static int` | `TX_SUSPENDED`

Fields inherited from class org.apache.slide.common.AbstractServiceBase
`LOG_CHANNEL, namespace, scope`

Fields inherited from interface javax.transaction.xa.XAResource
`TMENDRSCAN, TMFAIL, TMJOIN, TMNOFLAGS, TMONEPHASE, TMRESUME, TMSTARTRSCAN, TMSUCCESS, TMSUSPEND, XA_OK, XA_RDONLY`

Constructor Summary
`AbstractService()`

Method Summary
`void` | `commit(javax.transaction.xa.Xid xid, boolean onePhase)` Commit the global transaction specified by xid.
`void` | `end(javax.transaction.xa.Xid xid, int flags)` Ends the work performed on behalf of a transaction branch.
`void` | `forget(javax.transaction.xa.Xid xid)` Tell the resource manager to forget about a heuristically completed transaction branch.
`int` | `getTransactionTimeout()` Obtain the current transaction timeout value set for this XAResource instance.
`boolean` | `isSameRM(javax.transaction.xa.XAResource xares)` This method is called to determine if the resource manager instance represented by the target object is the same as the resouce manager instance represented by the parameter xares.
`int` | `prepare(javax.transaction.xa.Xid xid)` Ask the resource manager to prepare for a transaction commit of the transaction specified in xid.
`javax.transaction.xa.Xid[]` | `recover(int flag)` Obtain a list of prepared transaction branches from a resource manager.
`void` | `rollback(javax.transaction.xa.Xid xid)` Inform the resource manager to roll back work done on behalf of a transaction branch.
`boolean` | `setTransactionTimeout(int seconds)` Set the current transaction timeout value for this XAResource instance.
`void` | `start(javax.transaction.xa.Xid xid, int flags)` Start work on behalf of a transaction branch specified in xid If TMJOIN is specified, the start is for joining a transaction previously seen by the resource manager.

Methods inherited from class org.apache.slide.common.AbstractServiceBase
`cacheResults, connect, connect, connectIfNeeded, connectIfNeeded, disconnect, getLogger, initialize, isConnected, reset, setNamespace, setParameters, setScope`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.apache.slide.common.Service
`cacheResults, connect, connect, connectIfNeeded, connectIfNeeded, disconnect, getLogger, initialize, isConnected, reset, setNamespace, setParameters, setScope`

Field Detail

### TX_IDLE

    public static final int TX_IDLE

See Also:
  Constant Field Values

### TX_PREPARED

    public static final int TX_PREPARED

See Also:
  Constant Field Values

### TX_SUSPENDED

    public static final int TX_SUSPENDED

See Also:
  Constant Field Values

### currentContexts

    protected java.util.Hashtable currentContexts

  Current transaction context.

Constructor Detail

### AbstractService

    public AbstractService()

Method Detail

### commit

    public void commit(javax.transaction.xa.Xid xid,
                       boolean onePhase)
                throws javax.transaction.xa.XAException

  Commit the global transaction specified by xid.

  Specified by:
    `commit` in interface `javax.transaction.xa.XAResource`
  Parameters:
    `xid` - A global transaction identifier
    `onePhase` - If true, the resource manager should use a one-phase commit protocol to commit the work done on behalf of xid.
  Throws:
    `javax.transaction.xa.XAException` - An error has occurred. Possible XAExceptions are XA_HEURHAZ, XA_HEURCOM, XA_HEURRB, XA_HEURMIX, XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO. If the resource manager did not commit the transaction and the paramether onePhase is set to true, the resource manager may throw one of the XA_RB* exceptions. Upon return, the resource manager has rolled back the branch's work and has released all held resources.

### end

    public void end(javax.transaction.xa.Xid xid,
                    int flags)
             throws javax.transaction.xa.XAException

  Ends the work performed on behalf of a transaction branch. The resource manager disassociates the XA resource from the transaction branch specified and let the transaction be completed. If TMSUSPEND is specified in flags, the transaction branch is temporarily suspended in incomplete state. The transaction context is in suspened state and must be resumed via start with TMRESUME specified. If TMFAIL is specified, the portion of work has failed. The resource manager may mark the transaction as rollback-only. If TMSUCCESS is specified, the portion of work has completed successfully.

  Specified by:
    `end` in interface `javax.transaction.xa.XAResource`
  Parameters:
    `xid` - A global transaction identifier that is the same as what was used previously in the start method.
    `flags` - One of TMSUCCESS, TMFAIL, or TMSUSPEND
  Throws:
    `javax.transaction.xa.XAException` - An error has occurred. Possible XAException values are XAER_RMERR, XAER_RMFAILED, XAER_NOTA, XAER_INVAL, XAER_PROTO, or XA_RB*.

### forget

    public void forget(javax.transaction.xa.Xid xid)
                throws javax.transaction.xa.XAException

  Tell the resource manager to forget about a heuristically completed transaction branch.

  Specified by:
    `forget` in interface `javax.transaction.xa.XAResource`
  Parameters:
    `xid` - A global transaction identifier
  Throws:
    `javax.transaction.xa.XAException` - An error has occurred. Possible exception values are XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO.

### getTransactionTimeout

    public int getTransactionTimeout()
                              throws javax.transaction.xa.XAException

  Obtain the current transaction timeout value set for this XAResource instance. If XAResource.setTransactionTimeout was not use prior to invoking this method, the return value is the default timeout set for the resource manager; otherwise, the value used in the previous setTransactionTimeout call is returned.

  Specified by:
    `getTransactionTimeout` in interface `javax.transaction.xa.XAResource`
  Returns:
    the transaction timeout value in seconds.
  Throws:
    `javax.transaction.xa.XAException` - An error has occurred. Possible exception values are XAER_RMERR, XAER_RMFAIL.

### isSameRM

    public boolean isSameRM(javax.transaction.xa.XAResource xares)
                     throws javax.transaction.xa.XAException

  This method is called to determine if the resource manager instance represented by the target object is the same as the resouce manager instance represented by the parameter xares.

  Specified by:
    `isSameRM` in interface `javax.transaction.xa.XAResource`
  Parameters:
    `xares` - An XAResource object whose resource manager instance is to be compared with the resource manager instance of the target object.
  Returns:
    true if it's the same RM instance; otherwise false.
  Throws:
    `javax.transaction.xa.XAException` - An error has occurred. Possible exception values are XAER_RMERR, XAER_RMFAIL.

### prepare

    public int prepare(javax.transaction.xa.Xid xid)
                throws javax.transaction.xa.XAException

  Ask the resource manager to prepare for a transaction commit of the transaction specified in xid.

  Specified by:
    `prepare` in interface `javax.transaction.xa.XAResource`
  Parameters:
    `xid` - A global transaction identifier
  Returns:
    A value indicating the resource manager's vote on the outcome of the transaction. The possible values are: XA_RDONLY or XA_OK. If the resource manager wants to roll back the transaction, it should do so by raising an appropriate XAException in the prepare method.
  Throws:
    `javax.transaction.xa.XAException` - An error has occurred. Possible exception values are: XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO.

### recover

    public javax.transaction.xa.Xid[] recover(int flag)
                                       throws javax.transaction.xa.XAException

  Obtain a list of prepared transaction branches from a resource manager. The transaction manager calls this method during recovery to obtain the list of transaction branches that are currently in prepared or heuristically completed states.

  Specified by:
    `recover` in interface `javax.transaction.xa.XAResource`
  Parameters:
    `flag` - One of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS. TMNOFLAGS must be used when no other flags are set in flags.
  Returns:
    The resource manager returns zero or more XIDs for the transaction branches that are currently in a prepared or heuristically completed state. If an error occurs during the operation, the resource manager should throw the appropriate XAException.
  Throws:
    `javax.transaction.xa.XAException` - An error has occurred. Possible values are XAER_RMERR, XAER_RMFAIL, XAER_INVAL, and XAER_PROTO.

### rollback

    public void rollback(javax.transaction.xa.Xid xid)
                  throws javax.transaction.xa.XAException

  Inform the resource manager to roll back work done on behalf of a transaction branch.

  Specified by:
    `rollback` in interface `javax.transaction.xa.XAResource`
  Parameters:
    `xid` - A global transaction identifier
  Throws:
    `javax.transaction.xa.XAException` - An error has occurred

### setTransactionTimeout

    public boolean setTransactionTimeout(int seconds)
                                  throws javax.transaction.xa.XAException

  Set the current transaction timeout value for this XAResource instance.

  Specified by:
    `setTransactionTimeout` in interface `javax.transaction.xa.XAResource`
  Parameters:
    `seconds` - the transaction timeout value in seconds.
  Returns:
    true if transaction timeout value is set successfully; otherwise false.
  Throws:
    `javax.transaction.xa.XAException` - An error has occurred. Possible exception values are XAER_RMERR, XAER_RMFAIL, or XAER_INVAL.

### start

    public void start(javax.transaction.xa.Xid xid,
                      int flags)
               throws javax.transaction.xa.XAException

  Start work on behalf of a transaction branch specified in xid If TMJOIN is specified, the start is for joining a transaction previously seen by the resource manager. If TMRESUME is specified, the start is to resume a suspended transaction specified in the parameter xid. If neither TMJOIN nor TMRESUME is specified and the transaction specified by xid has previously been seen by the resource manager, the resource manager throws the XAException exception with XAER_DUPID error code.

  Specified by:
    `start` in interface `javax.transaction.xa.XAResource`
  Parameters:
    `xid` - A global transaction identifier to be associated with the resource
    `flags` - One of TMNOFLAGS, TMJOIN, or TMRESUME
  Throws:
    `javax.transaction.xa.XAException` - An error has occurred. Possible exceptions are XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_DUPID, XAER_OUTSIDE, XAER_NOTA, XAER_INVAL, or XAER_PROTO.

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD