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/10 21:48:26 UTC

svn commit: r793093 - in /tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool: ConnectionPool.java PooledConnection.java

Author: fhanik
Date: Fri Jul 10 19:48:26 2009
New Revision: 793093

URL: http://svn.apache.org/viewvc?rev=793093&view=rev
Log:
javadoc

Modified:
    tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
    tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.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=793093&r1=793092&r2=793093&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 Fri Jul 10 19:48:26 2009
@@ -124,7 +124,8 @@
     //===============================================================================
 
     /**
-     * Instantiate a connection pool. This will create connections if initialSize is larger than 0
+     * Instantiate a connection pool. This will create connections if initialSize is larger than 0.
+     * The {@link PoolProperties} should not be reused for another connection pool.
      * @param prop PoolProperties - all the properties for this connection pool
      * @throws SQLException
      */
@@ -311,7 +312,12 @@
      */
     @Override
     protected void finalize() throws Throwable {
-        close(true);
+        Runnable closer = new Runnable() {
+            public void run() {
+                close(true);
+            }
+        };
+        this.cancellator.execute(closer);
     }
 
     /**
@@ -365,7 +371,7 @@
     /**
      * Initialize the connection pool - called from the constructor
      * @param properties PoolProperties - properties used to initialize the pool with
-     * @throws SQLException
+     * @throws SQLException if initialization fails
      */
     protected void init(PoolProperties properties) throws SQLException {
         poolProperties = properties;
@@ -578,6 +584,13 @@
         } //while
     }
 
+    /**
+     * Creates a JDBC connection and tries to connect to the database.
+     * @param now timestamp of when this was called
+     * @param con the previous pooled connection - argument not used
+     * @return a PooledConnection that has been connected
+     * @throws SQLException
+     */
     protected PooledConnection createConnection(long now, PooledConnection con) throws SQLException {
         //no connections where available we'll create one
         boolean error = false;
@@ -621,6 +634,13 @@
         return null;
     }
 
+    /**
+     * Validates and configures a previously idle connection
+     * @param now - timestamp  
+     * @param con - the connection to validate and configure
+     * @return con
+     * @throws SQLException if a validation error happens
+     */
     protected PooledConnection borrowConnection(long now, PooledConnection con) throws SQLException {
         //we have a connection, lets set it up
         
@@ -687,6 +707,12 @@
         }
     }
 
+    /**
+     * Determines if a connection should be closed upon return to the pool.
+     * @param con - the connection
+     * @param action - the validation action that should be performed
+     * @return true if the connection should be closed
+     */
     protected boolean shouldClose(PooledConnection con, int action) {
         if (con.isDiscarded()) return true;
         if (isClosed()) return true;
@@ -700,7 +726,10 @@
     
     /**
      * Returns a connection to the pool
-     * @param con PooledConnection
+     * If the pool is closed, the connection will be released
+     * If the connection is not part of the busy queue, it will be released.
+     * If {@link PoolProperties#testOnReturn} is set to true it will be validated
+     * @param con PooledConnection to be returned to the pool
      */
     protected void returnConnection(PooledConnection con) {
         if (isClosed()) {
@@ -743,6 +772,11 @@
         } //end if
     } //checkIn
 
+    /**
+     * Determines if a connection should be abandoned based on 
+     * {@link PoolProperties#abandonWhenPercentageFull} setting.
+     * @return true if the connection should be abandoned
+     */
     protected boolean shouldAbandon() {
         if (poolProperties.getAbandonWhenPercentageFull()==0) return true;
         float used = (float)busy.size();
@@ -751,6 +785,9 @@
         return (used/max*100f)>=perc;
     }
     
+    /**
+     * Iterates through all the busy connections and checks for connections that have timed out
+     */
     public void checkAbandoned() {
         try {
             if (busy.size()==0) return;
@@ -787,6 +824,10 @@
         }
     }
 
+    /**
+     * Iterates through the idle connections and resizes the idle pool based on parameters
+     * {@link PoolProperties#maxIdle}, {@link PoolProperties#minIdle}, {@link PoolProperties#minEvictableIdleTimeMillis}
+     */
     public void checkIdle() {
         try {
             if (idle.size()==0) return;
@@ -822,6 +863,9 @@
 
     }
 
+    /**
+     * Forces a validation of all idle connections if {@link PoolProperties#testWhileIdle} is set.
+     */
     public void testAllIdle() {
         try {
             if (idle.size()==0) return;
@@ -849,13 +893,22 @@
 
     }
 
-
+    /**
+     * Creates a stack trace representing the existing thread's current state.
+     * @return a string object representing the current state.
+     * TODO investigate if we simply should store {@link java.lang.Thread#getStackTrace()} elements
+     */
     protected static String getThreadDump() {
         Exception x = new Exception();
         x.fillInStackTrace();
         return getStackTrace(x);
     }
 
+    /**
+     * Convert an exception into a String
+     * @param x - the throwable
+     * @return a string representing the stack trace
+     */
     public static String getStackTrace(Throwable x) {
         if (x == null) {
             return null;
@@ -869,19 +922,34 @@
     }
 
 
-    protected PooledConnection create() throws java.lang.Exception {
+    /**
+     * Create a new pooled connection object. Not connected nor validated.
+     * @return a pooled connection object
+     */
+    protected PooledConnection create() {
         PooledConnection con = new PooledConnection(getPoolProperties(), this);
         return con;
     }
 
+    /**
+     * Hook to perform final actions on a pooled connection object once it has been disconnected and will be discarded
+     * @param con
+     */
     protected void finalize(PooledConnection con) {
         
     }
     
+    /**
+     * Return the object that is potentially registered in JMX for notifications
+     * @return the object implementing the {@link org.apache.tomcat.jdbc.pool.jmx.ConnectionPoolMBean} interface 
+     */
     public org.apache.tomcat.jdbc.pool.jmx.ConnectionPool getJmxPool() {
         return jmxPool;
     }
 
+    /**
+     * Create MBean object that can be registered.
+     */
     protected void createMBean() {
         try {
             jmxPool = new org.apache.tomcat.jdbc.pool.jmx.ConnectionPool(this);
@@ -910,6 +978,9 @@
             this.pcFuture = pcf;
         }
         
+        /**
+         * {@inheritDoc}
+         */
         public boolean cancel(boolean mayInterruptIfRunning) {
             if ((!cancelled.get()) && cancelled.compareAndSet(false, true)) {
                 //cancel by retrieving the connection and returning it to the pool
@@ -918,6 +989,9 @@
             return true;
         }
 
+        /**
+         * {@inheritDoc}
+         */
         public Connection get() throws InterruptedException, ExecutionException {
             try {
                 return get(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
@@ -926,6 +1000,9 @@
             }
         }
 
+        /**
+         * {@inheritDoc}
+         */
         public Connection get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
             PooledConnection pc = pcFuture.get(timeout,unit);
             if (pc!=null) {
@@ -950,14 +1027,23 @@
             }
         }
 
+        /**
+         * {@inheritDoc}
+         */
         public boolean isCancelled() {
             return pcFuture.isCancelled() || cancelled.get();
         }
 
+        /**
+         * {@inheritDoc}
+         */
         public boolean isDone() {
             return pcFuture.isDone();
         }
         
+        /**
+         * run method to be executed when cancelled by an executor
+         */
         public void run() {
             try {
                 Connection con = get(); //complete this future
@@ -974,7 +1060,7 @@
     protected class PoolCleaner extends Thread {
         protected ConnectionPool pool;
         protected long sleepTime;
-        protected boolean run = true;
+        protected volatile boolean run = true;
         PoolCleaner(String name, ConnectionPool pool, long sleepTime) {
             super(name);
             this.setDaemon(true);

Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java?rev=793093&r1=793092&r2=793093&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java (original)
+++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java Fri Jul 10 19:48:26 2009
@@ -215,6 +215,10 @@
 //             
 //============================================================================
 
+    /**
+     * Returns abandon timeout in milliseconds
+     * @return abandon timeout in milliseconds
+     */
     public long getAbandonTimeout() {
         if (poolProperties.getRemoveAbandonedTimeout() <= 0) {
             return Long.MAX_VALUE;



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org