Package com.impossibl.postgres.jdbc.xa
Class PGXAConnection
- java.lang.Object
-
- com.impossibl.postgres.jdbc.PGPooledConnection
-
- com.impossibl.postgres.jdbc.xa.PGXAConnection
-
- All Implemented Interfaces:
PooledConnection
,XAConnection
,XAResource
public class PGXAConnection extends PGPooledConnection implements XAConnection, XAResource
The PostgreSQL implementation ofXAConnection
andXAResource
. This implementation doesn't support transaction interleaving (see JTA specification, section 3.4.4) and suspend/resume. Two-phase commit requires PostgreSQL server version 8.1 or higher.
-
-
Field Summary
-
Fields inherited from interface javax.transaction.xa.XAResource
TMENDRSCAN, TMFAIL, TMJOIN, TMNOFLAGS, TMONEPHASE, TMRESUME, TMSTARTRSCAN, TMSUCCESS, TMSUSPEND, XA_OK, XA_RDONLY
-
-
Constructor Summary
Constructors Constructor Description PGXAConnection(PGDirectConnection conn)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
commit(Xid xid, boolean onePhase)
void
end(Xid xid, int flags)
Preconditions: 1.void
forget(Xid xid)
Does nothing, since we don't do heuristics,Connection
getConnection()
int
getTransactionTimeout()
We don't do transaction timeouts.XAResource
getXAResource()
boolean
isSameRM(XAResource xares)
int
prepare(Xid xid)
Preconditions: 1.Xid[]
recover(int flag)
Preconditions: 1.void
rollback(Xid xid)
Preconditions: 1.boolean
setTransactionTimeout(int seconds)
We don't do transaction timeouts.void
start(Xid xid, int flags)
Preconditions: 1.-
Methods inherited from class com.impossibl.postgres.jdbc.PGPooledConnection
addConnectionEventListener, addStatementEventListener, close, createConnectionEvent, createStatementEvent, fireConnectionError, getConnectionHandle, removeConnectionEventListener, removeStatementEventListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface javax.sql.PooledConnection
addConnectionEventListener, addStatementEventListener, close, removeConnectionEventListener, removeStatementEventListener
-
-
-
-
Constructor Detail
-
PGXAConnection
public PGXAConnection(PGDirectConnection conn) throws SQLException
- Throws:
SQLException
-
-
Method Detail
-
getConnection
public Connection getConnection() throws SQLException
- Specified by:
getConnection
in interfacePooledConnection
- Overrides:
getConnection
in classPGPooledConnection
- Throws:
SQLException
-
getXAResource
public XAResource getXAResource()
- Specified by:
getXAResource
in interfaceXAConnection
-
start
public void start(Xid xid, int flags) throws XAException
Preconditions: 1. flags must be one of TMNOFLAGS, TMRESUME or TMJOIN 2. xid != null 3. connection must not be associated with a transaction 4. the TM hasn't seen the xid before Implementation deficiency preconditions: 1. TMRESUME not supported. 2. if flags is TMJOIN, we must be in ended state, and xid must be the current transaction 3. unless flags is TMJOIN, previous transaction using the connection must be committed or prepared or rolled back Postconditions: 1. Connection is associated with the transaction- Specified by:
start
in interfaceXAResource
- Throws:
XAException
-
end
public void end(Xid xid, int flags) throws XAException
Preconditions: 1. Flags is one of TMSUCCESS, TMFAIL, TMSUSPEND 2. xid != null 3. Connection is associated with transaction xid Implementation deficiency preconditions: 1. Flags is not TMSUSPEND Postconditions: 1. connection is disassociated from the transaction.- Specified by:
end
in interfaceXAResource
- Throws:
XAException
-
prepare
public int prepare(Xid xid) throws XAException
Preconditions: 1. xid != null 2. xid is in ended state Implementation deficiency preconditions: 1. xid was associated with this connection Postconditions: 1. Transaction is prepared- Specified by:
prepare
in interfaceXAResource
- Throws:
XAException
-
recover
public Xid[] recover(int flag) throws XAException
Preconditions: 1. flag must be one of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS or TMSTARTTRSCAN | TMENDRSCAN 2. if flag isn't TMSTARTRSCAN or TMSTARTRSCAN | TMENDRSCAN, a recovery scan must be in progress Postconditions: 1. list of prepared xids is returned- Specified by:
recover
in interfaceXAResource
- Throws:
XAException
-
rollback
public void rollback(Xid xid) throws XAException
Preconditions: 1. xid is known to the RM or it's in prepared state Implementation deficiency preconditions: 1. xid must be associated with this connection if it's not in prepared state. Postconditions: 1. Transaction is rolled back and disassociated from connection- Specified by:
rollback
in interfaceXAResource
- Throws:
XAException
-
commit
public void commit(Xid xid, boolean onePhase) throws XAException
- Specified by:
commit
in interfaceXAResource
- Throws:
XAException
-
isSameRM
public boolean isSameRM(XAResource xares) throws XAException
- Specified by:
isSameRM
in interfaceXAResource
- Throws:
XAException
-
forget
public void forget(Xid xid) throws XAException
Does nothing, since we don't do heuristics,- Specified by:
forget
in interfaceXAResource
- Throws:
XAException
-
getTransactionTimeout
public int getTransactionTimeout()
We don't do transaction timeouts. Just returns 0.- Specified by:
getTransactionTimeout
in interfaceXAResource
-
setTransactionTimeout
public boolean setTransactionTimeout(int seconds)
We don't do transaction timeouts. Returns false.- Specified by:
setTransactionTimeout
in interfaceXAResource
-
-