public class PGXAConnection extends PGPooledConnection implements javax.sql.XAConnection, javax.transaction.xa.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.
| Modifier and Type | Class and Description |
|---|---|
private class |
PGXAConnection.ConnectionHandler |
private static class |
PGXAConnection.State |
| Modifier and Type | Field and Description |
|---|---|
private boolean |
committedOrRolledBack |
private BaseConnection |
conn
Underlying physical database connection.
|
private javax.transaction.xa.Xid |
currentXid |
private boolean |
localAutoCommitMode |
private static java.util.logging.Logger |
LOGGER |
private javax.transaction.xa.Xid |
preparedXid |
private PGXAConnection.State |
state |
| Constructor and Description |
|---|
PGXAConnection(BaseConnection conn) |
| Modifier and Type | Method and Description |
|---|---|
void |
commit(javax.transaction.xa.Xid xid,
boolean onePhase) |
private void |
commitOnePhase(javax.transaction.xa.Xid xid)
Preconditions:
|
private void |
commitPrepared(javax.transaction.xa.Xid xid)
Commits prepared transaction.
|
private void |
debug(java.lang.String s) |
void |
end(javax.transaction.xa.Xid xid,
int flags)
Preconditions:
|
void |
forget(javax.transaction.xa.Xid xid)
Does nothing, since we don't do heuristics.
|
java.sql.Connection |
getConnection()
XAConnection interface.
|
int |
getTransactionTimeout()
We don't do transaction timeouts.
|
javax.transaction.xa.XAResource |
getXAResource() |
private boolean |
isPostgreSQLIntegrityConstraintViolation(java.sql.SQLException sqlException) |
boolean |
isSameRM(javax.transaction.xa.XAResource xares) |
private int |
mapSQLStateToXAErrorCode(java.sql.SQLException sqlException) |
int |
prepare(javax.transaction.xa.Xid xid)
Prepares transaction.
|
javax.transaction.xa.Xid[] |
recover(int flag)
Recovers transaction.
|
void |
rollback(javax.transaction.xa.Xid xid)
Preconditions:
|
boolean |
setTransactionTimeout(int seconds)
We don't do transaction timeouts.
|
void |
start(javax.transaction.xa.Xid xid,
int flags)
Preconditions:
|
addConnectionEventListener, addStatementEventListener, close, createConnectionEvent, removeConnectionEventListener, removeStatementEventListenerprivate static final java.util.logging.Logger LOGGER
private final BaseConnection conn
private javax.transaction.xa.Xid currentXid
private PGXAConnection.State state
private javax.transaction.xa.Xid preparedXid
private boolean committedOrRolledBack
private boolean localAutoCommitMode
public PGXAConnection(BaseConnection conn) throws java.sql.SQLException
java.sql.SQLExceptionprivate void debug(java.lang.String s)
public java.sql.Connection getConnection()
throws java.sql.SQLException
getConnection in interface javax.sql.PooledConnectiongetConnection in class PGPooledConnectionjava.sql.SQLExceptionpublic javax.transaction.xa.XAResource getXAResource()
getXAResource in interface javax.sql.XAConnectionpublic void start(javax.transaction.xa.Xid xid,
int flags)
throws javax.transaction.xa.XAException
Preconditions:
Implementation deficiency preconditions:
Postconditions:
start in interface javax.transaction.xa.XAResourcejavax.transaction.xa.XAExceptionpublic void end(javax.transaction.xa.Xid xid,
int flags)
throws javax.transaction.xa.XAException
Preconditions:
Implementation deficiency preconditions:
Postconditions:
end in interface javax.transaction.xa.XAResourcejavax.transaction.xa.XAExceptionpublic int prepare(javax.transaction.xa.Xid xid)
throws javax.transaction.xa.XAException
Prepares transaction. Preconditions:
Implementation deficiency preconditions:
Postconditions:
prepare in interface javax.transaction.xa.XAResourcejavax.transaction.xa.XAExceptionpublic javax.transaction.xa.Xid[] recover(int flag)
throws javax.transaction.xa.XAException
Recovers transaction. Preconditions:
Postconditions:
recover in interface javax.transaction.xa.XAResourcejavax.transaction.xa.XAExceptionpublic void rollback(javax.transaction.xa.Xid xid)
throws javax.transaction.xa.XAException
Preconditions:
Implementation deficiency preconditions:
Postconditions:
rollback in interface javax.transaction.xa.XAResourcejavax.transaction.xa.XAExceptionpublic void commit(javax.transaction.xa.Xid xid,
boolean onePhase)
throws javax.transaction.xa.XAException
commit in interface javax.transaction.xa.XAResourcejavax.transaction.xa.XAExceptionprivate void commitOnePhase(javax.transaction.xa.Xid xid)
throws javax.transaction.xa.XAException
Preconditions:
Implementation deficiency preconditions:
Postconditions:
javax.transaction.xa.XAExceptionprivate void commitPrepared(javax.transaction.xa.Xid xid)
throws javax.transaction.xa.XAException
Commits prepared transaction. Preconditions:
Implementation deficiency preconditions:
Postconditions:
javax.transaction.xa.XAExceptionpublic boolean isSameRM(javax.transaction.xa.XAResource xares)
throws javax.transaction.xa.XAException
isSameRM in interface javax.transaction.xa.XAResourcejavax.transaction.xa.XAExceptionpublic void forget(javax.transaction.xa.Xid xid)
throws javax.transaction.xa.XAException
forget in interface javax.transaction.xa.XAResourcejavax.transaction.xa.XAExceptionpublic int getTransactionTimeout()
getTransactionTimeout in interface javax.transaction.xa.XAResourcepublic boolean setTransactionTimeout(int seconds)
setTransactionTimeout in interface javax.transaction.xa.XAResourceprivate int mapSQLStateToXAErrorCode(java.sql.SQLException sqlException)
private boolean isPostgreSQLIntegrityConstraintViolation(java.sql.SQLException sqlException)