mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
jmx support
git-svn-id: http://code.alibabatech.com/svn/druid/trunk@231 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
@@ -34,7 +34,9 @@ import com.alibaba.druid.proxy.config.DruidFilterConfigLoader;
|
||||
import com.alibaba.druid.proxy.jdbc.DataSourceProxy;
|
||||
import com.alibaba.druid.proxy.jdbc.DataSourceProxyConfig;
|
||||
import com.alibaba.druid.proxy.jdbc.DataSourceProxyImpl;
|
||||
import com.alibaba.druid.stat.JdbcStatManager;
|
||||
import com.alibaba.druid.util.DruidLoaderUtils;
|
||||
import com.alibaba.druid.util.JMXUtils;
|
||||
import com.alibaba.druid.util.JdbcUtils;
|
||||
|
||||
/**
|
||||
@@ -52,6 +54,7 @@ public class DruidDriver implements Driver, DruidDriverMBean {
|
||||
public final static String DRIVER_PREFIX = "driver=";
|
||||
public final static String PASSWORD_CALLBACK_PREFIX = "passwordCallback=";
|
||||
public final static String NAME_PREFIX = "name=";
|
||||
public final static String JMX_PREFIX = "jmx=";
|
||||
public final static String FILTERS_PREFIX = "filters=";
|
||||
|
||||
private final AtomicLong connectCounter = new AtomicLong(0);
|
||||
@@ -168,6 +171,13 @@ public class DruidDriver implements Driver, DruidDriverMBean {
|
||||
config.setName(name);
|
||||
restUrl = restUrl.substring(pos + 1);
|
||||
}
|
||||
|
||||
if (restUrl.startsWith(JMX_PREFIX)) {
|
||||
int pos = restUrl.indexOf(':', JMX_PREFIX.length());
|
||||
String jmxOption = restUrl.substring(JMX_PREFIX.length(), pos);
|
||||
config.setJmxOption(jmxOption);
|
||||
restUrl = restUrl.substring(pos + 1);
|
||||
}
|
||||
|
||||
String rawUrl = restUrl;
|
||||
config.setRawUrl(rawUrl);
|
||||
@@ -192,6 +202,10 @@ public class DruidDriver implements Driver, DruidDriverMBean {
|
||||
for (Filter filter : config.getFilters()) {
|
||||
filter.init(newDataSource);
|
||||
}
|
||||
|
||||
if (config.isJmxOption()) {
|
||||
JMXUtils.register("com.alibaba.druid:type=JdbcStat", JdbcStatManager.getInstance());
|
||||
}
|
||||
}
|
||||
|
||||
dataSource = dataSources.get(url);
|
||||
|
||||
@@ -32,6 +32,7 @@ public class DataSourceProxyConfig {
|
||||
private String url;
|
||||
private String rawDriverClassName;
|
||||
private String name;
|
||||
private boolean jmx;
|
||||
|
||||
private PasswordCallback passwordCallback;
|
||||
private NameCallback userCallback;
|
||||
@@ -40,6 +41,18 @@ public class DataSourceProxyConfig {
|
||||
public DataSourceProxyConfig(){
|
||||
}
|
||||
|
||||
public boolean isJmxOption() {
|
||||
return jmx;
|
||||
}
|
||||
|
||||
public void setJmxOption(boolean jmx) {
|
||||
this.jmx = jmx;
|
||||
}
|
||||
|
||||
public void setJmxOption(String jmx) {
|
||||
this.jmx = Boolean.parseBoolean(jmx);
|
||||
}
|
||||
|
||||
public PasswordCallback getPasswordCallback() {
|
||||
return passwordCallback;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user