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