Package org.postgresql.ds
Class PGPooledConnection
- java.lang.Object
-
- org.postgresql.ds.PGPooledConnection
-
- All Implemented Interfaces:
javax.sql.PooledConnection
- Direct Known Subclasses:
PGXAConnection
public class PGPooledConnection extends java.lang.Object implements javax.sql.PooledConnectionPostgreSQL implementation of the PooledConnection interface. This shouldn't be used directly, as the pooling client should just interact with the ConnectionPool instead.- See Also:
PGConnectionPoolDataSource
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classPGPooledConnection.ConnectionHandlerInstead of declaring a class implementing Connection, which would have to be updated for every JDK rev, use a dynamic proxy to handle all calls through the Connection interface.private classPGPooledConnection.StatementHandlerInstead of declaring classes implementing Statement, PreparedStatement, and CallableStatement, which would have to be updated for every JDK rev, use a dynamic proxy to handle all calls through the Statement interfaces.
-
Field Summary
Fields Modifier and Type Field Description private booleanautoCommitprivate java.sql.Connectionconprivate static java.lang.String[]fatalClassesprivate booleanisXAprivate PGPooledConnection.ConnectionHandlerlastprivate java.util.List<javax.sql.ConnectionEventListener>listeners
-
Constructor Summary
Constructors Constructor Description PGPooledConnection(java.sql.Connection con, boolean autoCommit)PGPooledConnection(java.sql.Connection con, boolean autoCommit, boolean isXA)Creates a new PooledConnection representing the specified physical connection.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddConnectionEventListener(javax.sql.ConnectionEventListener connectionEventListener)Adds a listener for close or fatal error events on the connection handed out to a client.voidaddStatementEventListener(javax.sql.StatementEventListener listener)voidclose()Closes the physical database connection represented by this PooledConnection.protected javax.sql.ConnectionEventcreateConnectionEvent(java.sql.SQLException e)(package private) voidfireConnectionClosed()Used to fire a connection closed event to all listeners.private voidfireConnectionError(java.sql.SQLException e)Fires a connection error event, but only if we think the exception is fatal.(package private) voidfireConnectionFatalError(java.sql.SQLException e)Used to fire a connection error event to all listeners.java.sql.ConnectiongetConnection()Gets a handle for a client to use.private static booleanisFatalState(java.lang.String state)voidremoveConnectionEventListener(javax.sql.ConnectionEventListener connectionEventListener)Removes a listener for close or fatal error events on the connection handed out to a client.voidremoveStatementEventListener(javax.sql.StatementEventListener listener)
-
-
-
Field Detail
-
listeners
private final java.util.List<javax.sql.ConnectionEventListener> listeners
-
con
private java.sql.Connection con
-
last
private PGPooledConnection.ConnectionHandler last
-
autoCommit
private final boolean autoCommit
-
isXA
private final boolean isXA
-
fatalClasses
private static final java.lang.String[] fatalClasses
-
-
Constructor Detail
-
PGPooledConnection
public PGPooledConnection(java.sql.Connection con, boolean autoCommit, boolean isXA)Creates a new PooledConnection representing the specified physical connection.- Parameters:
con- connectionautoCommit- whether to autocommitisXA- whether connection is a XA connection
-
PGPooledConnection
public PGPooledConnection(java.sql.Connection con, boolean autoCommit)
-
-
Method Detail
-
addConnectionEventListener
public void addConnectionEventListener(javax.sql.ConnectionEventListener connectionEventListener)
Adds a listener for close or fatal error events on the connection handed out to a client.- Specified by:
addConnectionEventListenerin interfacejavax.sql.PooledConnection
-
removeConnectionEventListener
public void removeConnectionEventListener(javax.sql.ConnectionEventListener connectionEventListener)
Removes a listener for close or fatal error events on the connection handed out to a client.- Specified by:
removeConnectionEventListenerin interfacejavax.sql.PooledConnection
-
close
public void close() throws java.sql.SQLExceptionCloses the physical database connection represented by this PooledConnection. If any client has a connection based on this PooledConnection, it is forcibly closed as well.- Specified by:
closein interfacejavax.sql.PooledConnection- Throws:
java.sql.SQLException
-
getConnection
public java.sql.Connection getConnection() throws java.sql.SQLExceptionGets a handle for a client to use. This is a wrapper around the physical connection, so the client can call close and it will just return the connection to the pool without really closing the pgysical connection.According to the JDBC 2.0 Optional Package spec (6.2.3), only one client may have an active handle to the connection at a time, so if there is a previous handle active when this is called, the previous one is forcibly closed and its work rolled back.
- Specified by:
getConnectionin interfacejavax.sql.PooledConnection- Throws:
java.sql.SQLException
-
fireConnectionClosed
void fireConnectionClosed()
Used to fire a connection closed event to all listeners.
-
fireConnectionFatalError
void fireConnectionFatalError(java.sql.SQLException e)
Used to fire a connection error event to all listeners.
-
createConnectionEvent
protected javax.sql.ConnectionEvent createConnectionEvent(java.sql.SQLException e)
-
isFatalState
private static boolean isFatalState(java.lang.String state)
-
fireConnectionError
private void fireConnectionError(java.sql.SQLException e)
Fires a connection error event, but only if we think the exception is fatal.- Parameters:
e- the SQLException to consider
-
removeStatementEventListener
public void removeStatementEventListener(javax.sql.StatementEventListener listener)
- Specified by:
removeStatementEventListenerin interfacejavax.sql.PooledConnection
-
addStatementEventListener
public void addStatementEventListener(javax.sql.StatementEventListener listener)
- Specified by:
addStatementEventListenerin interfacejavax.sql.PooledConnection
-
-