All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.sql.PooledConnection Maven / Gradle / Ivy

/*
 * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package javax.sql;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * An object that provides hooks for connection pool management.
 * A PooledConnection object
 * represents a physical connection to a data source.  The connection
 * can be recycled rather than being closed when an application is
 * finished with it, thus reducing the number of connections that
 * need to be made.
 * 

* An application programmer does not use the PooledConnection * interface directly; rather, it is used by a middle tier infrastructure * that manages the pooling of connections. *

* When an application calls the method DataSource.getConnection, * it gets back a Connection object. If connection pooling is * being done, that Connection object is actually a handle to * a PooledConnection object, which is a physical connection. *

* The connection pool manager, typically the application server, maintains * a pool of PooledConnection objects. If there is a * PooledConnection object available in the pool, the * connection pool manager returns a Connection object that * is a handle to that physical connection. * If no PooledConnection object is available, the * connection pool manager calls the ConnectionPoolDataSource * method getPoolConnection to create a new physical connection. The * JDBC driver implementing ConnectionPoolDataSource creates a * new PooledConnection object and returns a handle to it. *

* When an application closes a connection, it calls the Connection * method close. When connection pooling is being done, * the connection pool manager is notified because it has registered itself as * a ConnectionEventListener object using the * ConnectionPool method addConnectionEventListener. * The connection pool manager deactivates the handle to * the PooledConnection object and returns the * PooledConnection object to the pool of connections so that * it can be used again. Thus, when an application closes its connection, * the underlying physical connection is recycled rather than being closed. *

* The physical connection is not closed until the connection pool manager * calls the PooledConnection method close. * This method is generally called to have an orderly shutdown of the server or * if a fatal error has made the connection unusable. * *

* A connection pool manager is often also a statement pool manager, maintining * a pool of PreparedStatement objects. * When an application closes a prepared statement, it calls the * PreparedStatement * method close. When Statement pooling is being done, * the pool manager is notified because it has registered itself as * a StatementEventListener object using the * ConnectionPool method addStatementEventListener. * Thus, when an application closes its PreparedStatement, * the underlying prepared statement is recycled rather than being closed. *

* * @since 1.4 */ public interface PooledConnection { /** * Creates and returns a Connection object that is a handle * for the physical connection that * this PooledConnection object represents. * The connection pool manager calls this method when an application has * called the method DataSource.getConnection and there are * no PooledConnection objects available. See the * {@link PooledConnection interface description} for more information. * * @return a Connection object that is a handle to * this PooledConnection object * @exception SQLException if a database access error occurs * @exception SQLFeatureNotSupportedException if the JDBC driver does not support * this method * @since 1.4 */ Connection getConnection() throws SQLException; /** * Closes the physical connection that this PooledConnection * object represents. An application never calls this method directly; * it is called by the connection pool module, or manager. *

* See the {@link PooledConnection interface description} for more * information. * * @exception SQLException if a database access error occurs * @exception SQLFeatureNotSupportedException if the JDBC driver does not support * this method * @since 1.4 */ void close() throws SQLException; /** * Registers the given event listener so that it will be notified * when an event occurs on this PooledConnection object. * * @param listener a component, usually the connection pool manager, * that has implemented the * ConnectionEventListener interface and wants to be * notified when the connection is closed or has an error * @see #removeConnectionEventListener */ void addConnectionEventListener(ConnectionEventListener listener); /** * Removes the given event listener from the list of components that * will be notified when an event occurs on this * PooledConnection object. * * @param listener a component, usually the connection pool manager, * that has implemented the * ConnectionEventListener interface and * been registered with this PooledConnection object as * a listener * @see #addConnectionEventListener */ void removeConnectionEventListener(ConnectionEventListener listener); /** * Registers a StatementEventListener with this PooledConnection object. Components that * wish to be notified when PreparedStatements created by the * connection are closed or are detected to be invalid may use this method * to register a StatementEventListener with this PooledConnection object. *

* @param listener an component which implements the StatementEventListener * interface that is to be registered with this PooledConnection object *

* @since 1.6 */ public void addStatementEventListener(StatementEventListener listener); /** * Removes the specified StatementEventListener from the list of * components that will be notified when the driver detects that a * PreparedStatement has been closed or is invalid. *

* @param listener the component which implements the * StatementEventListener interface that was previously * registered with this PooledConnection object *

* @since 1.6 */ public void removeStatementEventListener(StatementEventListener listener); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy