Package org.postgresql.xa
Class PGXAConnection
java.lang.Object
org.postgresql.ds.PGPooledConnection
org.postgresql.xa.PGXAConnection
- All Implemented Interfaces:
PooledConnection
,XAConnection
,XAResource
The PostgreSQL implementation of XAResource
.
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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
void
Preconditions:void
Does nothing, since we don't do heuristics.XAConnection interface.int
We don't do transaction timeouts.boolean
isSameRM
(XAResource xares) int
Prepares transaction.Xid[]
recover
(int flag) Recovers transaction.void
Preconditions:boolean
setTransactionTimeout
(int seconds) We don't do transaction timeouts.void
Preconditions:Methods inherited from class org.postgresql.ds.PGPooledConnection
addConnectionEventListener, addStatementEventListener, close, createConnectionEvent, 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 Details
-
PGXAConnection
- Throws:
SQLException
-
-
Method Details
-
getConnection
XAConnection interface.- Specified by:
getConnection
in interfacePooledConnection
- Overrides:
getConnection
in classPGPooledConnection
- Throws:
SQLException
-
getXAResource
- Specified by:
getXAResource
in interfaceXAConnection
-
start
Preconditions:
- Flags must be one of TMNOFLAGS, TMRESUME or TMJOIN
- xid != null
- Connection must not be associated with a transaction
- The TM hasn't seen the xid before
Implementation deficiency preconditions:
- TMRESUME not supported.
- If flags is TMJOIN, we must be in ended state, and xid must be the current transaction
- Unless flags is TMJOIN, previous transaction using the connection must be committed or prepared or rolled back
Postconditions:
- Connection is associated with the transaction
- Specified by:
start
in interfaceXAResource
- Throws:
XAException
-
end
Preconditions:
- Flags is one of TMSUCCESS, TMFAIL, TMSUSPEND
- xid != null
- Connection is associated with transaction xid
Implementation deficiency preconditions:
- Flags is not TMSUSPEND
Postconditions:
- Connection is disassociated from the transaction.
- Specified by:
end
in interfaceXAResource
- Throws:
XAException
-
prepare
Prepares transaction. Preconditions:
- xid != null
- xid is in ended state
Implementation deficiency preconditions:
- xid was associated with this connection
Postconditions:
- Transaction is prepared
- Specified by:
prepare
in interfaceXAResource
- Throws:
XAException
-
recover
Recovers transaction. Preconditions:
- flag must be one of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS or TMSTARTTRSCAN | TMENDRSCAN
- If flag isn't TMSTARTRSCAN or TMSTARTRSCAN | TMENDRSCAN, a recovery scan must be in progress
Postconditions:
- list of prepared xids is returned
- Specified by:
recover
in interfaceXAResource
- Throws:
XAException
-
rollback
Preconditions:
- xid is known to the RM or it's in prepared state
Implementation deficiency preconditions:
- xid must be associated with this connection if it's not in prepared state.
Postconditions:
- Transaction is rolled back and disassociated from connection
- Specified by:
rollback
in interfaceXAResource
- Throws:
XAException
-
commit
- Specified by:
commit
in interfaceXAResource
- Throws:
XAException
-
isSameRM
- Specified by:
isSameRM
in interfaceXAResource
- Throws:
XAException
-
forget
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
-