Class ClientPooledConnection

java.lang.Object
org.apache.derby.client.ClientPooledConnection
All Implemented Interfaces:
PooledConnection
Direct Known Subclasses:
ClientXAConnection

public class ClientPooledConnection extends Object implements PooledConnection
A physical connection to a data source, to be used for creating logical connections to the same data source.
  • Field Details

    • newPC_

      private boolean newPC_
      Tells if this pooled connection is newly created.
    • listeners_

      private ArrayList<ConnectionEventListener> listeners_
      List of ConnectionEventListeners. Never null.
    • eventIterators

      private int eventIterators
      The number of iterators going through the list of connection event listeners at the current time. Only one thread may be iterating over the list at any time (because of synchronization), but a single thread may have multiple iterators if for instance an event listener performs database calls that trigger a new event.
    • physicalConnection_

      ClientConnection physicalConnection_
    • netXAPhysicalConnection_

      NetXAConnection netXAPhysicalConnection_
    • statementCache

      private final JDBCStatementCache statementCache
      The statement cache for the underlying physical connection.

      This will be null if statement caching is disabled (default).

    • logicalConnection_

      private LogicalConnection logicalConnection_
      The logical connection using the physical connection.
    • logWriter_

      protected LogWriter logWriter_
    • rmId_

      protected int rmId_
      Resource manager identifier.
    • statementEventListeners

      private final CopyOnWriteArrayList<StatementEventListener> statementEventListeners
      List of statement event listeners. The list is copied on each write, ensuring that it can be safely iterated over even if other threads or the listeners fired in the same thread add or remove listeners.
  • Constructor Details

    • ClientPooledConnection

      public ClientPooledConnection(BasicClientDataSource40 ds, LogWriter logWriter, String user, String password) throws SQLException
      Constructor for non-XA pooled connections.

      Using standard Java APIs, a CPDS is passed in. Arguments for user/password overrides anything on the data source.

      Parameters:
      ds - data source creating this pooled connection
      logWriter - destination for log messages
      user - user name
      password - user password
      Throws:
      SQLException - if creating the pooled connection fails due problems in the database, or problems communicating with the database
    • ClientPooledConnection

      public ClientPooledConnection(BasicClientDataSource40 ds, LogWriter logWriter, String user, String password, int rmId) throws SQLException
      Constructor for XA pooled connections only.

      Using standard Java APIs, a CPDS is passed in. Arguments for user/password overrides anything on the data source.

      Parameters:
      ds - data source creating this pooled connection
      logWriter - destination for log messages
      user - user name
      password - user password
      rmId - resource manager id
      Throws:
      SQLException - if creating the pooled connection fails due problems in the database, or problems communicating with the database
  • Method Details

    • isStatementPoolingEnabled

      public boolean isStatementPoolingEnabled()
      Tells is statement pooling is enabled or not.
      Returns:
      true if enabled, false if disabled.
    • finalize

      protected void finalize() throws Throwable
      Overrides:
      finalize in class Object
      Throws:
      Throwable
    • close

      public void close() throws SQLException
      Closes the physical connection to the data source and frees all associated resources.
      Specified by:
      close in interface PooledConnection
      Throws:
      SQLException - if closing the connection causes an error. Note that this connection can still be considered closed even if an error occurs.
    • getConnection

      public Connection getConnection() throws SQLException
      Creates a logical connection.

      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.

      Specified by:
      getConnection in interface PooledConnection
      Throws:
      SQLException - if creating a new logical connection fails
    • createLogicalConnection

      private void createLogicalConnection() throws SqlException
      Creates a new logical connection by performing all the required steps to be able to reuse the physical connection.

      Throws:
      SqlException - if there is no physical connection, or if any error occurs when recycling the physical connection or closing/craeting the logical connection
    • addConnectionEventListener

      public void addConnectionEventListener(ConnectionEventListener listener)
      Specified by:
      addConnectionEventListener in interface PooledConnection
    • removeConnectionEventListener

      public void removeConnectionEventListener(ConnectionEventListener listener)
      Specified by:
      removeConnectionEventListener in interface PooledConnection
    • recycleConnection

      public void recycleConnection()
      Inform listeners that the logical connection has been closed and that the physical connection is ready for reuse.

      Not public, but needs to be visible to am.LogicalConnection

    • informListeners

      public void informListeners(SqlException exception)
      Inform listeners that an error has occured on the connection, if the error severity is high enough.

      Not public, but needs to be visible to am.LogicalConnection

      Parameters:
      exception - the exception that occurred on the connection
    • fireConnectionEventListeners

      private void fireConnectionEventListeners(SqlException exception)
      Fire all the ConnectionEventListeners registered. Callers must synchronize on this to prevent others from modifying the list of listeners.
      Parameters:
      exception - the exception that caused the event, or null if it is a close event
    • nullLogicalConnection

      public void nullLogicalConnection()
      Used by LogicalConnection.close in some circumstances when it disassociates itself from the pooled connection.
    • addStatementEventListener

      public void addStatementEventListener(StatementEventListener listener)
      Registers a StatementEventListener with this PooledConnection object. Components that wish to be informed of events associated with the PreparedStatement object created by this PooledConnection like the close or error occurred event can register a StatementEventListener with this PooledConnection object.
      Specified by:
      addStatementEventListener in interface PooledConnection
      Parameters:
      listener - A component that implements the StatementEventListener interface and wants to be notified of Statement closed or or Statement error occurred events
    • removeStatementEventListener

      public void removeStatementEventListener(StatementEventListener listener)
      Removes the specified previously registered listener object from the list of components that would be informed of events with a PreparedStatement object.
      Specified by:
      removeStatementEventListener in interface PooledConnection
      Parameters:
      listener - The previously registered event listener that needs to be removed from the list of components
    • onStatementClose

      public void onStatementClose(PreparedStatement statement)
      Raise the statementClosed event for all the listeners when the corresponding events occurs.
      Parameters:
      statement - The PreparedStatement that was closed
    • onStatementErrorOccurred

      public void onStatementErrorOccurred(PreparedStatement statement, SQLException sqle)
      Raise the statementErrorOccurred event for all the listeners when the corresponding events occurs.
      Parameters:
      statement - The PreparedStatement on which error occurred
      sqle - The SQLException associated with the error that caused the invalidation of the PreparedStatements