mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
add druid driver jmx support
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user