From: <one...@us...> - 2003-01-03 22:47:33
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/connection In directory sc8-pr-cvs1:/tmp/cvs-serv27930/src/net/sf/hibernate/connection Modified Files: DriverManagerConnectionProvider.java Log Message: added some logging to JDBC pools Index: DriverManagerConnectionProvider.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/connection/DriverManagerConnectionProvider.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** DriverManagerConnectionProvider.java 1 Jan 2003 13:54:10 -0000 1.1.1.1 --- DriverManagerConnectionProvider.java 3 Jan 2003 22:47:24 -0000 1.2 *************** *** 2,17 **** package net.sf.hibernate.connection; ! import java.sql.*; import java.util.Iterator; import java.util.Properties; - import java.util.Stack; - - import org.apache.commons.logging.Log; - import org.apache.commons.logging.LogFactory; ! import net.sf.hibernate.*; import net.sf.hibernate.util.JDBCExceptionReporter; import net.sf.hibernate.util.PropertiesHelper; /** * A connection provider that uses <tt>java.sql.DriverManager</tt>. This provider --- 2,20 ---- package net.sf.hibernate.connection; ! import java.sql.Connection; ! import java.sql.DriverManager; ! import java.sql.SQLException; ! import java.util.ArrayList; import java.util.Iterator; import java.util.Properties; ! import net.sf.hibernate.Environment; ! import net.sf.hibernate.HibernateException; import net.sf.hibernate.util.JDBCExceptionReporter; import net.sf.hibernate.util.PropertiesHelper; + import org.apache.commons.logging.Log; + import org.apache.commons.logging.LogFactory; + /** * A connection provider that uses <tt>java.sql.DriverManager</tt>. This provider *************** *** 24,29 **** private Properties connectionProps; private Integer isolation; ! private final Stack cache = new Stack(); private int poolSize; private static final Log log = LogFactory.getLog(DriverManagerConnectionProvider.class); --- 27,33 ---- private Properties connectionProps; private Integer isolation; ! private final ArrayList pool = new ArrayList(); private int poolSize; + private int checkedOut = 0; private static final Log log = LogFactory.getLog(DriverManagerConnectionProvider.class); *************** *** 35,39 **** poolSize = PropertiesHelper.getInt(Environment.POOL_SIZE, props, 20); //default pool size 20 log.info("Hibernate connection pool size: " + poolSize); ! isolation = PropertiesHelper.getInteger(Environment.ISOLATION, props); if (isolation!=null) --- 39,43 ---- poolSize = PropertiesHelper.getInt(Environment.POOL_SIZE, props, 20); //default pool size 20 log.info("Hibernate connection pool size: " + poolSize); ! isolation = PropertiesHelper.getInteger(Environment.ISOLATION, props); if (isolation!=null) *************** *** 41,45 **** if (driverClass==null) { ! log.warn("No JDBC Driver class was specified by property " + Environment.DRIVER); } else { --- 45,49 ---- if (driverClass==null) { ! log.warn("no JDBC Driver class was specified by property " + Environment.DRIVER); } else { *************** *** 63,80 **** connectionProps = ConnectionProviderFactory.getJdbcConnectionProperties(props); ! log.info( "Using driver: " + driverClass + " at URL: " + url ); ! log.info("Connection properties: " + connectionProps); } public Connection getConnection() throws SQLException { ! synchronized (cache) { ! if ( !cache.isEmpty() ) { ! log.trace("Using cached JDBC connection"); ! return (Connection) cache.pop(); } } ! log.debug("Opening new JDBC connection"); Connection conn; try { --- 67,91 ---- connectionProps = ConnectionProviderFactory.getJdbcConnectionProperties(props); ! log.info( "using driver: " + driverClass + " at URL: " + url ); ! log.info("connection properties: " + connectionProps); } public Connection getConnection() throws SQLException { ! ! if ( log.isTraceEnabled() ) log.trace( "total checked-out connections: " + checkedOut ); ! ! synchronized (pool) { ! if ( !pool.isEmpty() ) { ! int last = pool.size() - 1; ! if ( log.isTraceEnabled() ) { ! log.trace("using pooled JDBC connection, pool size: " + last); ! checkedOut++; ! } ! return (Connection) pool.remove(last); } } ! log.debug("opening new JDBC connection"); Connection conn; try { *************** *** 87,91 **** throw sqle; } ! if ( log.isDebugEnabled() ) log.debug( "Created connection to: " + url + ", Isolation Level: " + conn.getTransactionIsolation() ); return conn; } --- 98,107 ---- throw sqle; } ! ! if ( log.isDebugEnabled() ) { ! log.debug( "created connection to: " + url + ", Isolation Level: " + conn.getTransactionIsolation() ); ! } ! if ( log.isTraceEnabled() ) checkedOut++; ! return conn; } *************** *** 93,105 **** public void closeConnection(Connection conn) throws SQLException { ! synchronized (cache) { ! if ( cache.size() < poolSize ) { ! log.trace("returning connection to pool"); ! cache.push(conn); return; } } ! log.debug("Closing JDBC connection"); try { --- 109,124 ---- public void closeConnection(Connection conn) throws SQLException { ! if ( log.isDebugEnabled() ) checkedOut--; ! ! synchronized (pool) { ! int currentSize = pool.size(); ! if ( currentSize < poolSize ) { ! if ( log.isTraceEnabled() ) log.trace("returning connection to pool, pool size: " + (currentSize + 1) ); ! pool.add(conn); return; } } ! log.debug("closing JDBC connection"); try { *************** *** 118,124 **** protected void finalize() { ! log.info("Cleaning up dereferenced connection pool: " + url); ! Iterator iter = cache.iterator(); while ( iter.hasNext() ) { try { --- 137,143 ---- protected void finalize() { ! log.info("cleaning up dereferenced connection pool: " + url); ! Iterator iter = pool.iterator(); while ( iter.hasNext() ) { try { |