You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2009/07/02 19:08:50 UTC
svn commit: r790684 -
/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
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
+ * @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
+ */
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: svn commit: r790684 - /tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
Posted by Filip Hanik - Dev Lists <de...@hanik.com>.
On 07/02/2009 05:10 PM, sebb wrote:
> On 02/07/2009, fhanik@apache.org<fh...@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?
>
it returns a chocolate chip cookie for patch submissions
>
>> + * @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-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: dev-help@tomcat.apache.org
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>
>
Re: svn commit: r790684 - /tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
Posted by sebb <se...@gmail.com>.
On 02/07/2009, fhanik@apache.org <fh...@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-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org