org.apache.derby.client.net
Class NetXAResource

java.lang.Object
  extended by org.apache.derby.client.net.NetXAResource
All Implemented Interfaces:
javax.transaction.xa.XAResource

public class NetXAResource
extends java.lang.Object
implements javax.transaction.xa.XAResource


Field Summary
static int ACTIVE_ONLY
           
(package private)  int activeXATransCount_
           
(package private)  NetXACallInfo[] callInfoArray_
           
(package private)  NetConnection conn_
           
(package private)  int connectionCount_
           
 SqlException exceptionsOnXA
           
static int INITIAL_CALLINFO_ELEMENTS
           
(package private)  java.lang.String ipaddr_
           
(package private)  NetXAConnection netXAConn_
           
static ClientXid nullXid
           
(package private)  int numXACallInfo_
           
(package private)  int port_
           
static int RECOVER_XID_ARRAY_LENGTH
           
(package private)  int rmId_
           
(package private)  java.lang.String rmIdx_
           
(package private)  java.lang.String rmIdy_
           
private  java.util.List specialRegisters_
           
private  int timeoutSeconds
          The value of the transaction timeout in seconds.
static int TMTIMEOUT
           
static int XA_NULL_XID
           
(package private)  javax.sql.XAConnection xaconn_
           
static int XAFUNC_COMMIT
           
static int XAFUNC_END
           
static int XAFUNC_FORGET
           
static int XAFUNC_NONE
           
static int XAFUNC_PREPARE
           
static int XAFUNC_RECOVER
           
static int XAFUNC_ROLLBACK
           
static int XAFUNC_START
           
static java.lang.String XAFUNCSTR_COMMIT
           
static java.lang.String XAFUNCSTR_END
           
static java.lang.String XAFUNCSTR_FORGET
           
static java.lang.String XAFUNCSTR_NONE
           
static java.lang.String XAFUNCSTR_PREPARE
           
static java.lang.String XAFUNCSTR_RECOVER
           
static java.lang.String XAFUNCSTR_ROLLBACK
           
static java.lang.String XAFUNCSTR_START
           
 
Fields inherited from interface javax.transaction.xa.XAResource
TMENDRSCAN, TMFAIL, TMJOIN, TMNOFLAGS, TMONEPHASE, TMRESUME, TMSTARTRSCAN, TMSUCCESS, TMSUSPEND, XA_OK, XA_RDONLY
 
Constructor Summary
NetXAResource(javax.sql.XAConnection xaconn, int rmId, java.lang.String userId, java.lang.String password, NetXAConnection conn)
           
 
Method Summary
 void addSpecialRegisters(java.lang.String s)
           
 void commit(javax.transaction.xa.Xid xid, boolean onePhase)
           
private  void connectionClosedFailure()
           
 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 (MANUALLY) completed transaction branch.
 java.util.List getSpecialRegisters()
           
private  int getSqlExceptionXAErrorCode(SqlException sqle)
          Get XAException.errorCode from SqlException For disconnect exception, return XAER_RMFAIL For other exceptions return XAER_RMERR For server side SQLExceptions during XA operations the errorCode has already been determined and wrapped in an XAException for return to the client.
 int getTransactionTimeout()
          Obtain the current transaction timeout value set for this XAResource instance.
private  java.lang.String getXAExceptionText(int rc)
           
private  java.lang.String getXAFuncStr(int xaFunc)
           
 boolean isSameRM(javax.transaction.xa.XAResource xares)
           
 int prepare(javax.transaction.xa.Xid xid)
          Ask the resource manager to prepare for a transaction commit of the transaction specified in xid.
private  java.lang.String processLocalHost(java.lang.String serverName)
           
 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.
private  void setXaStateForXAException(int rc)
          Reset the transaction branch association state to XA_T0_NOT_ASSOCIATED for XAER_RM* and XA_RB* Exceptions.
 void start(javax.transaction.xa.Xid xid, int flags)
          Start work on behalf of a transaction branch specified in xid
protected  void throwXAException(int rc)
           
protected  void throwXAException(int rc, boolean resetFlag)
           
protected  int xaRetValErrorAccumSQL(NetXACallInfo callInfo, int currentRC)
           
static boolean xidsEqual(javax.transaction.xa.Xid xid1, javax.transaction.xa.Xid xid2)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TMTIMEOUT

public static final int TMTIMEOUT
See Also:
Constant Field Values

ACTIVE_ONLY

public static final int ACTIVE_ONLY
See Also:
Constant Field Values

XA_NULL_XID

public static final int XA_NULL_XID
See Also:
Constant Field Values

INITIAL_CALLINFO_ELEMENTS

public static final int INITIAL_CALLINFO_ELEMENTS
See Also:
Constant Field Values

RECOVER_XID_ARRAY_LENGTH

public static final int RECOVER_XID_ARRAY_LENGTH
See Also:
Constant Field Values

nullXid

public static final ClientXid nullXid

XAFUNC_NONE

public static final int XAFUNC_NONE
See Also:
Constant Field Values

XAFUNC_COMMIT

public static final int XAFUNC_COMMIT
See Also:
Constant Field Values

XAFUNC_END

public static final int XAFUNC_END
See Also:
Constant Field Values

XAFUNC_FORGET

public static final int XAFUNC_FORGET
See Also:
Constant Field Values

XAFUNC_PREPARE

public static final int XAFUNC_PREPARE
See Also:
Constant Field Values

XAFUNC_RECOVER

public static final int XAFUNC_RECOVER
See Also:
Constant Field Values

XAFUNC_ROLLBACK

public static final int XAFUNC_ROLLBACK
See Also:
Constant Field Values

XAFUNC_START

public static final int XAFUNC_START
See Also:
Constant Field Values

XAFUNCSTR_NONE

public static final java.lang.String XAFUNCSTR_NONE
See Also:
Constant Field Values

XAFUNCSTR_COMMIT

public static final java.lang.String XAFUNCSTR_COMMIT
See Also:
Constant Field Values

XAFUNCSTR_END

public static final java.lang.String XAFUNCSTR_END
See Also:
Constant Field Values

XAFUNCSTR_FORGET

public static final java.lang.String XAFUNCSTR_FORGET
See Also:
Constant Field Values

XAFUNCSTR_PREPARE

public static final java.lang.String XAFUNCSTR_PREPARE
See Also:
Constant Field Values

XAFUNCSTR_RECOVER

public static final java.lang.String XAFUNCSTR_RECOVER
See Also:
Constant Field Values

XAFUNCSTR_ROLLBACK

public static final java.lang.String XAFUNCSTR_ROLLBACK
See Also:
Constant Field Values

XAFUNCSTR_START

public static final java.lang.String XAFUNCSTR_START
See Also:
Constant Field Values

exceptionsOnXA

public SqlException exceptionsOnXA

xaconn_

javax.sql.XAConnection xaconn_

netXAConn_

NetXAConnection netXAConn_

conn_

NetConnection conn_

rmId_

int rmId_

callInfoArray_

NetXACallInfo[] callInfoArray_

numXACallInfo_

int numXACallInfo_

connectionCount_

int connectionCount_

activeXATransCount_

int activeXATransCount_

rmIdx_

java.lang.String rmIdx_

rmIdy_

java.lang.String rmIdy_

port_

int port_

ipaddr_

java.lang.String ipaddr_

specialRegisters_

private java.util.List specialRegisters_

timeoutSeconds

private int timeoutSeconds
The value of the transaction timeout in seconds.

Constructor Detail

NetXAResource

public NetXAResource(javax.sql.XAConnection xaconn,
                     int rmId,
                     java.lang.String userId,
                     java.lang.String password,
                     NetXAConnection conn)
Method Detail

commit

public void commit(javax.transaction.xa.Xid xid,
                   boolean onePhase)
            throws javax.transaction.xa.XAException
Specified by:
commit in interface javax.transaction.xa.XAResource
Throws:
javax.transaction.xa.XAException

getSqlExceptionXAErrorCode

private int getSqlExceptionXAErrorCode(SqlException sqle)
Get XAException.errorCode from SqlException For disconnect exception, return XAER_RMFAIL For other exceptions return XAER_RMERR For server side SQLExceptions during XA operations the errorCode has already been determined and wrapped in an XAException for return to the client. see EmbedXAResource.wrapInXAException

Parameters:
sqle - SqlException to evaluate.
Returns:
XAException.XAER_RMFAIL for disconnect exception, XAException.XAER_RMERR for other exceptions.

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 dissociates 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 (MANUALLY) 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 0; 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. If the returned value is equal to Integer.MAX_VALUE it means no timeout.
Throws:
javax.transaction.xa.XAException

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 raise 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. Once set, this timeout value is effective until setTransactionTimeout is invoked again with a different value. To reset the timeout value to the default value used by the resource manager, set the value to zero. If the timeout operation is performed successfully, the method returns true; otherwise false. If a resource manager does not support transaction timeout value to be set explicitly, this method returns false.

Specified by:
setTransactionTimeout in interface javax.transaction.xa.XAResource
Parameters:
seconds - the transaction timeout value in seconds. Value of 0 means the reasource manager's default value. Value of Integer.MAX_VALUE means no timeout.
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

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.

throwXAException

protected void throwXAException(int rc)
                         throws javax.transaction.xa.XAException
Throws:
javax.transaction.xa.XAException

getXAExceptionText

private java.lang.String getXAExceptionText(int rc)

throwXAException

protected void throwXAException(int rc,
                                boolean resetFlag)
                         throws javax.transaction.xa.XAException
Throws:
javax.transaction.xa.XAException

setXaStateForXAException

private void setXaStateForXAException(int rc)
Reset the transaction branch association state to XA_T0_NOT_ASSOCIATED for XAER_RM* and XA_RB* Exceptions. All other exeptions leave the state unchanged

Parameters:
rc - // return code from XAException
Throws:
javax.transaction.xa.XAException

isSameRM

public boolean isSameRM(javax.transaction.xa.XAResource xares)
                 throws javax.transaction.xa.XAException
Specified by:
isSameRM in interface javax.transaction.xa.XAResource
Throws:
javax.transaction.xa.XAException

xidsEqual

public static boolean xidsEqual(javax.transaction.xa.Xid xid1,
                                javax.transaction.xa.Xid xid2)

getSpecialRegisters

public java.util.List getSpecialRegisters()

addSpecialRegisters

public void addSpecialRegisters(java.lang.String s)

connectionClosedFailure

private void connectionClosedFailure()
                              throws javax.transaction.xa.XAException
Throws:
javax.transaction.xa.XAException

getXAFuncStr

private java.lang.String getXAFuncStr(int xaFunc)

xaRetValErrorAccumSQL

protected int xaRetValErrorAccumSQL(NetXACallInfo callInfo,
                                    int currentRC)

processLocalHost

private java.lang.String processLocalHost(java.lang.String serverName)

Built on Thu 2011-03-10 11:54:14+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.