package org.postgresql.jdbc2.optional; import javax.sql.ConnectionPoolDataSource; import javax.sql.PooledConnection; import java.sql.SQLException; import java.io.Serializable; /** * PostgreSQL implementation of ConnectionPoolDataSource. The app server or * middleware vendor should provide a DataSource implementation that takes advantage * of this ConnectionPoolDataSource. If not, you can use the PostgreSQL implementation * known as PoolingDataSource, but that should only be used if your server or middleware * vendor does not provide their own. Why? The server may want to reuse the same * Connection across all EJBs requesting a Connection within the same Transaction, or * provide other similar advanced features. * *
In any case, in order to use this ConnectionPoolDataSource, you must set the property * databaseName. The settings for serverName, portNumber, user, and password are * optional. Note: these properties are declared in the superclass.
* *This implementation supports JDK 1.3 and higher.
* * @author Aaron Mulder (ammulder@chariotsolutions.com) * @version $Revision: 1.2 $ */ public class ConnectionPool extends BaseDataSource implements Serializable, ConnectionPoolDataSource { private boolean defaultAutoCommit = false; /** * Gets a description of this DataSource. */ public String getDescription() { return "ConnectionPoolDataSource from " + org.postgresql.Driver.getVersion(); } /** * Gets a connection which may be pooled by the app server or middleware * implementation of DataSource. * * @throws java.sql.SQLException * Occurs when the physical database connection cannot be established. */ public PooledConnection getPooledConnection() throws SQLException { return new PooledConnectionImpl(getConnection(), defaultAutoCommit); } /** * Gets a connection which may be pooled by the app server or middleware * implementation of DataSource. * * @throws java.sql.SQLException * Occurs when the physical database connection cannot be established. */ public PooledConnection getPooledConnection(String user, String password) throws SQLException { return new PooledConnectionImpl(getConnection(user, password), defaultAutoCommit); } /** * Gets whether connections supplied by this pool will have autoCommit * turned on by default. The default value is false, so that * autoCommit will be turned off by default. */ public boolean isDefaultAutoCommit() { return defaultAutoCommit; } /** * Sets whether connections supplied by this pool will have autoCommit * turned on by default. The default value is false, so that * autoCommit will be turned off by default. */ public void setDefaultAutoCommit(boolean defaultAutoCommit) { this.defaultAutoCommit = defaultAutoCommit; } }