diff --git a/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java b/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java
index 90391cf09e..01f71dfe6e 100644
--- a/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java
+++ b/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java
@@ -17,6 +17,13 @@ import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.util.ReflectionUtils;
/**
+ * 监控相关的对外数据暴露
+ *
+ *
+ * 1. 为了支持jndi数据源本类内部调用druid相关对象均需要反射调用,返回值也应该是Object,List
+ *
* @author sandzhang
*/
public class DruidStatManagerFacade {
@@ -27,9 +34,10 @@ public class DruidStatManagerFacade {
protected final ReentrantLock lock = new ReentrantLock(true);
- private DruidDataSourceStatManager druidDataSourceStatManager;
- private JdbcStatManager jdbcStatManager;
+ private Object druidDataSourceStatManager;
+ private Object jdbcStatManager;
+ // TODO shoud be Object
private Set datasourceInstances;
private DruidStatManagerFacade() {
@@ -72,19 +80,19 @@ public class DruidStatManagerFacade {
}
- public Set getDruidDataSourceInstances() {
+ private Set getDruidDataSourceInstances() {
init();
return datasourceInstances;
}
public void resetDataSourceStat() {
init();
- druidDataSourceStatManager.reset();
+ ReflectionUtils.callObjectMethod(druidDataSourceStatManager, "reset");
}
public void resetSqlStat() {
init();
- jdbcStatManager.reset();
+ ReflectionUtils.callObjectMethod(jdbcStatManager, "reset");
}
public void resetAll() {
@@ -93,8 +101,7 @@ public class DruidStatManagerFacade {
resetDataSourceStat();
}
- public JdbcSqlStat getSqlStatById(Integer id) {
- init();
+ private JdbcSqlStat getSqlStatById(Integer id) {
for (DruidDataSource ds : getDruidDataSourceInstances()) {
JdbcSqlStat sqlStat = ds.getDataSourceStat().getSqlStat(id);
@@ -104,6 +111,7 @@ public class DruidStatManagerFacade {
}
public Map getDataSourceStatData(Integer id) {
+ init();
if (id == null) {
return null;
}
@@ -111,8 +119,7 @@ public class DruidStatManagerFacade {
return datasource == null ? null : dataSourceToMapData(datasource);
}
- public DruidDataSource getDruidDataSourceById(Integer identity) {
- init();
+ private DruidDataSource getDruidDataSourceById(Integer identity) {
if (identity == null) {
return null;
@@ -127,6 +134,7 @@ public class DruidStatManagerFacade {
}
public List