Author: rmannibucau
Date: Mon Jul 23 23:34:37 2012
New Revision: 1364839

URL: http://svn.apache.org/viewvc?rev=1364839&view=rev
Log:
tomcat jmx usage for ds pool

Modified:
    
openejb/branches/openejb-pool/tomee/tomee-dbcp/src/main/java/org/apache/tomee/dbcp/TomEEDataSourceCreator.java
    
openejb/branches/openejb-pool/tomee/tomee-dbcp/src/test/java/org/apache/tomee/dbcp/TomcatPoolTest.java

Modified: 
openejb/branches/openejb-pool/tomee/tomee-dbcp/src/main/java/org/apache/tomee/dbcp/TomEEDataSourceCreator.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-pool/tomee/tomee-dbcp/src/main/java/org/apache/tomee/dbcp/TomEEDataSourceCreator.java?rev=1364839&r1=1364838&r2=1364839&view=diff
==============================================================================
--- 
openejb/branches/openejb-pool/tomee/tomee-dbcp/src/main/java/org/apache/tomee/dbcp/TomEEDataSourceCreator.java
 (original)
+++ 
openejb/branches/openejb-pool/tomee/tomee-dbcp/src/main/java/org/apache/tomee/dbcp/TomEEDataSourceCreator.java
 Mon Jul 23 23:34:37 2012
@@ -1,10 +1,13 @@
 package org.apache.tomee.dbcp;
 
+import org.apache.openejb.monitoring.LocalMBeanServer;
 import org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator;
 import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
 import org.apache.tomcat.jdbc.pool.DataSourceFactory;
 
+import javax.management.ObjectName;
 import javax.sql.DataSource;
+import java.util.Hashtable;
 import java.util.Map;
 import java.util.Properties;
 
@@ -33,17 +36,34 @@ public class TomEEDataSourceCreator exte
                 }
             }
         }
-        return new 
org.apache.tomcat.jdbc.pool.DataSource(DataSourceFactory.parsePoolProperties(converted));
+        final org.apache.tomcat.jdbc.pool.DataSource ds = new 
org.apache.tomcat.jdbc.pool.DataSource(DataSourceFactory.parsePoolProperties(converted));
+        try { // just to force the pool to be created
+            ds.getConnection().close();
+        } catch (Throwable ignored) {
+            // no-op
+        }
+        try {
+            ds.preRegister(LocalMBeanServer.get(), new ObjectName("openejb", 
"name", name));
+        } catch (Exception ignored) {
+            // ignored
+        }
+        return ds;
     }
 
     @Override
     public boolean hasCreated(final Object object) {
-        return object instanceof org.apache.tomcat.jdbc.pool.DataSource;
+        return object instanceof org.apache.tomcat.jdbc.pool.DataSource || 
object instanceof TomcatDbcpDataSource;
     }
 
     @Override
     public void destroy(final Object object) throws Throwable {
-        ((org.apache.tomcat.jdbc.pool.DataSource) object).close(true);
+        if (object instanceof TomcatDbcpDataSource) {
+            ((TomcatDbcpDataSource) object).close();
+        } else {
+            org.apache.tomcat.jdbc.pool.DataSource ds = 
(org.apache.tomcat.jdbc.pool.DataSource) object;
+            ds.close(true);
+            ds.postDeregister();
+        }
     }
 
     private static class PropertiesReader extends DataSourceFactory {

Modified: 
openejb/branches/openejb-pool/tomee/tomee-dbcp/src/test/java/org/apache/tomee/dbcp/TomcatPoolTest.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-pool/tomee/tomee-dbcp/src/test/java/org/apache/tomee/dbcp/TomcatPoolTest.java?rev=1364839&r1=1364838&r2=1364839&view=diff
==============================================================================
--- 
openejb/branches/openejb-pool/tomee/tomee-dbcp/src/test/java/org/apache/tomee/dbcp/TomcatPoolTest.java
 (original)
+++ 
openejb/branches/openejb-pool/tomee/tomee-dbcp/src/test/java/org/apache/tomee/dbcp/TomcatPoolTest.java
 Mon Jul 23 23:34:37 2012
@@ -28,6 +28,7 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.Map;
 import java.util.Properties;
+import java.util.concurrent.CountDownLatch;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -143,6 +144,11 @@ public class TomcatPoolTest {
     public void commit() throws SQLException {
         persistManager.save();
         assertTrue(exists(1));
+        try {
+            new CountDownLatch(1).await();
+        } catch (InterruptedException e) {
+            e.printStackTrace();  //To change body of catch statement use File 
| Settings | File Templates.
+        }
     }
 
     @Test


Reply via email to