add druid driver jmx support

This commit is contained in:
温少
2012-03-14 12:56:56 +08:00
parent 9c80f02fdf
commit 7ae1e85e9b
2 changed files with 27 additions and 3 deletions
@@ -15,6 +15,7 @@
*/
package com.alibaba.druid.proxy;
import java.lang.management.ManagementFactory;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
@@ -30,6 +31,9 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Logger;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.logging.Log;
import com.alibaba.druid.logging.LogFactory;
@@ -63,7 +67,7 @@ public class DruidDriver implements Driver, DruidDriverMBean {
public final static String JMX_PREFIX = "jmx=";
public final static String FILTERS_PREFIX = "filters=";
private final AtomicLong connectCounter = new AtomicLong(0);
private final AtomicLong connectCount = new AtomicLong(0);
private String acceptPrefix = DEFAULT_PREFIX;
@@ -71,6 +75,8 @@ public class DruidDriver implements Driver, DruidDriverMBean {
private int minorVersion = 0;
private final static String MBEAN_NAME = "com.alibaba.druid:type=DruidDriver";
static {
registerDriver(instance);
}
@@ -79,6 +85,17 @@ public class DruidDriver implements Driver, DruidDriverMBean {
try {
DriverManager.registerDriver(driver);
try {
MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName = new ObjectName(MBEAN_NAME);
if (!mbeanServer.isRegistered(objectName)) {
mbeanServer.registerMBean(instance, objectName);
}
} catch (Exception ex) {
LOG.error("register druid-driver mbean error", ex);
}
return true;
} catch (Exception e) {
LOG.error("registerDriver error", e);
@@ -118,7 +135,7 @@ public class DruidDriver implements Driver, DruidDriverMBean {
return null;
}
connectCounter.incrementAndGet();
connectCount.incrementAndGet();
DataSourceProxyImpl dataSource = getDataSource(url, info);
@@ -268,7 +285,7 @@ public class DruidDriver implements Driver, DruidDriverMBean {
@Override
public long getConnectCount() {
return connectCounter.get();
return connectCount.get();
}
public String getAcceptPrefix() {
@@ -287,4 +304,9 @@ public class DruidDriver implements Driver, DruidDriverMBean {
public Logger getParentLogger() throws SQLFeatureNotSupportedException {
throw new SQLFeatureNotSupportedException();
}
@Override
public void resetStat() {
connectCount.set(0);
}
}
@@ -21,6 +21,8 @@ package com.alibaba.druid.proxy;
public interface DruidDriverMBean {
long getConnectCount();
void resetStat();
String getAcceptPrefix();