On 02/07/2009, fha...@apache.org <fha...@apache.org> wrote: > Author: fhanik > Date: Thu Jul 2 17:08:50 2009 > New Revision: 790684 > > URL: http://svn.apache.org/viewvc?rev=790684&view=rev > Log: > Add some doco, make shared variables volatile > > Modified: > > tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java > > Modified: > tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java > URL: > http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=790684&r1=790683&r2=790684&view=diff > > ============================================================================== > --- > tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java > (original) > +++ > tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java > Thu Jul 2 17:08:50 2009 > @@ -48,17 +48,28 @@ > */ > > public class ConnectionPool { > + /** > + * Prefix type for JMX registration > + */ > public static final String POOL_JMX_TYPE_PREFIX = "tomcat.jdbc:type="; > > - //logger > + /** > + * Logger > + */ > protected static Log log = LogFactory.getLog(ConnectionPool.class); > > > //=============================================================================== > // INSTANCE/QUICK ACCESS VARIABLE > > //=============================================================================== > + /** > + * Carries the size of the pool, instead of relying on a queue > implementation > + * that usually iterates over to get an exact count > + */ > private AtomicInteger size = new AtomicInteger(0); > + > /** > * All the information about the connection pool > + * These are the properties the pool got instantiated with > */ > private PoolProperties poolProperties; > > @@ -76,12 +87,12 @@ > /** > * The thread that is responsible for checking abandoned and idle threads > */ > - private PoolCleaner poolCleaner; > + private volatile PoolCleaner poolCleaner; > > /** > * Pool closed flag > */ > - private boolean closed = false; > + private volatile boolean closed = false; > > /** > * Since newProxyInstance performs the same operation, over and over > @@ -95,7 +106,7 @@ > private ThreadPoolExecutor cancellator = new > ThreadPoolExecutor(0,1,1000,TimeUnit.MILLISECONDS,new > LinkedBlockingQueue<Runnable>()); > > /** > - * reference to mbean > + * reference to the JMX mbean > */ > protected org.apache.tomcat.jdbc.pool.jmx.ConnectionPool jmxPool = null; > > @@ -119,6 +130,14 @@ > } > > > + /** > + * Retrieves a Connection future. If a connection is not available, one > can block using future.get() > + * until a connection has become available. > + * If a connection is not retrieved, the Future must be cancelled in > order for the connection to be returned > + * to the pool. > + * @return
What does it return? > + * @throws SQLException > + */ > public Future<Connection> getConnectionAsync() throws SQLException { > if (idle instanceof FairBlockingQueue) { > Future<PooledConnection> pcf = > ((FairBlockingQueue<PooledConnection>)idle).pollAsync(); > @@ -130,7 +149,7 @@ > > /** > * Borrows a connection from the pool > - * @return Connection - a java.sql.Connection reflection proxy, > wrapping the underlying object. > + * @return Connection - a > java.sql.Connection/javax.sql.PooledConnection reflection proxy, wrapping the > underlying object. > * @throws SQLException > */ > public Connection getConnection() throws SQLException { > @@ -180,6 +199,10 @@ > return busy.size(); > } > > + /** > + * Returns the number of idle connections > + * @return Ditto > + */ > public int getIdle() { > return idle.size(); > } > @@ -197,7 +220,11 @@ > > //=============================================================================== > > > + /** > + * configures a pooled connection as a proxy > + */ > protected Connection setupConnection(PooledConnection con) throws > SQLException { > + //fetch previous interceptor proxy > JdbcInterceptor handler = con.getHandler(); > if (handler==null) { > //build the proxy handler > @@ -252,6 +279,10 @@ > return proxyClassConstructor; > } > > + /** > + * If the connection pool gets garbage collected, lets make sure we > clean up > + * and close all the connections > + */ > @Override > protected void finalize() throws Throwable { > close(true); > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org