public class ClientPooledConnection
extends java.lang.Object
implements javax.sql.PooledConnection
Modifier and Type | Field and Description |
---|---|
private int |
eventIterators
The number of iterators going through the list of connection event
listeners at the current time.
|
private java.util.ArrayList<javax.sql.ConnectionEventListener> |
listeners_
List of
ConnectionEventListener s. |
private LogicalConnection |
logicalConnection_
The logical connection using the physical connection.
|
protected LogWriter |
logWriter_ |
(package private) NetXAConnection |
netXAPhysicalConnection_ |
private boolean |
newPC_
Tells if this pooled connection is newly created.
|
(package private) ClientConnection |
physicalConnection_ |
protected int |
rmId_
Resource manager identifier.
|
private JDBCStatementCache |
statementCache
The statement cache for the underlying physical connection.
|
private java.util.concurrent.CopyOnWriteArrayList<javax.sql.StatementEventListener> |
statementEventListeners
List of statement event listeners.
|
Constructor and Description |
---|
ClientPooledConnection(BasicClientDataSource40 ds,
LogWriter logWriter,
java.lang.String user,
java.lang.String password)
Constructor for non-XA pooled connections.
|
ClientPooledConnection(BasicClientDataSource40 ds,
LogWriter logWriter,
java.lang.String user,
java.lang.String password,
int rmId)
Constructor for XA pooled connections only.
|
Modifier and Type | Method and Description |
---|---|
void |
addConnectionEventListener(javax.sql.ConnectionEventListener listener) |
void |
addStatementEventListener(javax.sql.StatementEventListener listener)
Registers a StatementEventListener with this PooledConnection object.
|
void |
close()
Closes the physical connection to the data source and frees all
associated resources.
|
private void |
createLogicalConnection()
Creates a new logical connection by performing all the required steps to
be able to reuse the physical connection.
|
protected void |
finalize() |
private void |
fireConnectionEventListeners(SqlException exception)
Fire all the
ConnectionEventListener s registered. |
java.sql.Connection |
getConnection()
Creates a logical connection.
|
void |
informListeners(SqlException exception)
Inform listeners that an error has occured on the connection, if the
error severity is high enough.
|
boolean |
isStatementPoolingEnabled()
Tells is statement pooling is enabled or not.
|
void |
nullLogicalConnection()
Used by
LogicalConnection.close in some circumstances when
it disassociates itself from the pooled connection. |
void |
onStatementClose(java.sql.PreparedStatement statement)
Raise the statementClosed event for all the listeners when the
corresponding events occurs.
|
void |
onStatementErrorOccurred(java.sql.PreparedStatement statement,
java.sql.SQLException sqle)
Raise the statementErrorOccurred event for all the listeners when the
corresponding events occurs.
|
void |
recycleConnection()
Inform listeners that the logical connection has been closed and that the
physical connection is ready for reuse.
|
void |
removeConnectionEventListener(javax.sql.ConnectionEventListener listener) |
void |
removeStatementEventListener(javax.sql.StatementEventListener listener)
Removes the specified previously registered listener object from the list
of components that would be informed of events with a PreparedStatement
object.
|
private boolean newPC_
private java.util.ArrayList<javax.sql.ConnectionEventListener> listeners_
ConnectionEventListener
s. Never null
.private int eventIterators
ClientConnection physicalConnection_
NetXAConnection netXAPhysicalConnection_
private final JDBCStatementCache statementCache
This will be null
if statement caching is disabled (default).
private LogicalConnection logicalConnection_
protected LogWriter logWriter_
protected int rmId_
private final java.util.concurrent.CopyOnWriteArrayList<javax.sql.StatementEventListener> statementEventListeners
public ClientPooledConnection(BasicClientDataSource40 ds, LogWriter logWriter, java.lang.String user, java.lang.String password) throws java.sql.SQLException
Using standard Java APIs, a CPDS is passed in. Arguments for user/password overrides anything on the data source.
ds
- data source creating this pooled connectionlogWriter
- destination for log messagesuser
- user namepassword
- user passwordjava.sql.SQLException
- if creating the pooled connection fails due problems
in the database, or problems communicating with the databasepublic ClientPooledConnection(BasicClientDataSource40 ds, LogWriter logWriter, java.lang.String user, java.lang.String password, int rmId) throws java.sql.SQLException
Using standard Java APIs, a CPDS is passed in. Arguments for user/password overrides anything on the data source.
ds
- data source creating this pooled connectionlogWriter
- destination for log messagesuser
- user namepassword
- user passwordrmId
- resource manager idjava.sql.SQLException
- if creating the pooled connection fails due problems
in the database, or problems communicating with the databasepublic boolean isStatementPoolingEnabled()
true
if enabled, false
if disabled.protected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable
public void close() throws java.sql.SQLException
close
in interface javax.sql.PooledConnection
java.sql.SQLException
- if closing the connection causes an error. Note that
this connection can still be considered closed even if an error
occurs.public java.sql.Connection getConnection() throws java.sql.SQLException
This is the standard API for getting a logical connection handle for a pooled connection. No "resettable" properties are passed, so user, password, and all other properties may not change.
getConnection
in interface javax.sql.PooledConnection
java.sql.SQLException
- if creating a new logical connection failsprivate void createLogicalConnection() throws SqlException
SqlException
- if there is no physical connection, or if any error
occurs when recycling the physical connection or closing/craeting
the logical connectionpublic void addConnectionEventListener(javax.sql.ConnectionEventListener listener)
addConnectionEventListener
in interface javax.sql.PooledConnection
public void removeConnectionEventListener(javax.sql.ConnectionEventListener listener)
removeConnectionEventListener
in interface javax.sql.PooledConnection
public void recycleConnection()
Not public, but needs to be visible to am.LogicalConnection
public void informListeners(SqlException exception)
Not public, but needs to be visible to am.LogicalConnection
exception
- the exception that occurred on the connectionprivate void fireConnectionEventListeners(SqlException exception)
ConnectionEventListener
s registered. Callers must
synchronize on this
to prevent others from modifying the list of
listeners.exception
- the exception that caused the event, or null
if
it is a close eventpublic void nullLogicalConnection()
LogicalConnection.close
in some circumstances when
it disassociates itself from the pooled connection.public void addStatementEventListener(javax.sql.StatementEventListener listener)
addStatementEventListener
in interface javax.sql.PooledConnection
listener
- A component that implements the StatementEventListener
interface and wants to be notified of Statement closed or or Statement
error occurred eventspublic void removeStatementEventListener(javax.sql.StatementEventListener listener)
removeStatementEventListener
in interface javax.sql.PooledConnection
listener
- The previously registered event listener that needs to be
removed from the list of componentspublic void onStatementClose(java.sql.PreparedStatement statement)
statement
- The PreparedStatement that was closedpublic void onStatementErrorOccurred(java.sql.PreparedStatement statement, java.sql.SQLException sqle)
statement
- The PreparedStatement on which error occurredsqle
- The SQLException associated with the error that caused the
invalidation of the PreparedStatementsApache Derby V10.13 Internals - Copyright © 2004,2016 The Apache Software Foundation. All Rights Reserved.