now also closing connection pool
authorErik Brakkee <erik@brakkee.org>
Tue, 4 May 2010 17:03:15 +0000 (17:03 +0000)
committerErik Brakkee <erik@brakkee.org>
Tue, 4 May 2010 17:03:15 +0000 (17:03 +0000)
test/enterprise/src/main/java/org/wamblee/support/persistence/AbstractDatabase.java

index 0fc871f1d4b9a6a2700a1fc22aee5580b8408fa2..2e8f8d8335e0070530bd9c042f8e699181429a97 100644 (file)
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 package org.wamblee.support.persistence;
 
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
 import javax.sql.DataSource;
 
 import org.apache.commons.dbcp.ConnectionFactory;
@@ -24,10 +27,16 @@ import org.apache.commons.dbcp.PoolingDataSource;
 import org.apache.commons.pool.impl.GenericObjectPool;
 
 public abstract class AbstractDatabase implements Database {
+
+    private static final Logger LOGGER = Logger
+        .getLogger(AbstractDatabase.class.getName());
+
     private static final int CONNECTION_POOL_SIZE = 16;
 
     private DataSource itsDataSource;
 
+    private GenericObjectPool connectionPool;
+
     private boolean started;
 
     protected AbstractDatabase() {
@@ -42,7 +51,7 @@ public abstract class AbstractDatabase implements Database {
      * This method must be called from the start method.
      */
     protected final void createDataSource() {
-        GenericObjectPool connectionPool = new GenericObjectPool(null);
+        connectionPool = new GenericObjectPool(null);
         connectionPool.setMaxActive(CONNECTION_POOL_SIZE);
         ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
             getJdbcUrl(), getUsername(), getPassword());
@@ -54,7 +63,7 @@ public abstract class AbstractDatabase implements Database {
         ingoredVariable(poolableConnectionFactory);
         itsDataSource = new PoolingDataSource(connectionPool);
     }
-    
+
     private static void ingoredVariable(PoolableConnectionFactory aFactory) {
         // Empty
     }
@@ -75,6 +84,12 @@ public abstract class AbstractDatabase implements Database {
             return; // nothing to do.
         }
         started = false;
+        try {
+            connectionPool.close();
+            connectionPool.close();
+        } catch (Exception e) {
+            LOGGER.log(Level.WARNING, "Could not close pool", e);
+        }
         doStop();
     }