From 9e2aa378a863b0776c7dfa83327c7dd9527e0e1f Mon Sep 17 00:00:00 2001 From: septer Date: Fri, 10 Aug 2012 14:46:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E5=B9=B6=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0sandzhang=E6=8F=90=E4=BA=A4=E5=90=8EStatViewServlet?= =?UTF-8?q?=E7=BC=BA=E5=A4=B1=E7=9A=84=E6=96=B9=E6=B3=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DruidDataSourceStatDefaultStrategy.java | 300 +++++++++--------- .../DruidDataSourceStatJNDIStatStrategy.java | 97 +++--- .../stat/DruidDataSourceStatStrategy.java | 23 +- .../DruidDataSourceStatStrategyContext.java | 68 ++-- .../druid/stat/DruidStatManagerFacade.java | 82 ++--- .../druid/support/http/StatViewServlet.java | 7 +- 6 files changed, 308 insertions(+), 269 deletions(-) diff --git a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatDefaultStrategy.java b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatDefaultStrategy.java index 4e692646d8..d2a107a65a 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatDefaultStrategy.java +++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatDefaultStrategy.java @@ -16,189 +16,187 @@ import com.alibaba.druid.pool.DruidDataSource; public class DruidDataSourceStatDefaultStrategy implements DruidDataSourceStatStrategy { - private Set getDruidDataSourceInstances() { - return DruidDataSourceStatManager.getDruidDataSourceInstances(); - } + private Set getDruidDataSourceInstances() { + return DruidDataSourceStatManager.getDruidDataSourceInstances(); + } - public void resetDataSourceStat() { - DruidDataSourceStatManager.getInstance().reset(); - } + public void resetDataSourceStat() { + DruidDataSourceStatManager.getInstance().reset(); + } - public void resetSqlStat() { - JdbcStatManager.getInstance().reset(); - } + public void resetSqlStat() { + JdbcStatManager.getInstance().reset(); + } - public void resetAll() { - resetSqlStat(); - resetDataSourceStat(); - } + public void resetAll() { + resetSqlStat(); + resetDataSourceStat(); + } - private JdbcSqlStat getSqlStatById(Integer id) { + public JdbcSqlStat getSqlStatById(Integer id) { + for (DruidDataSource ds : getDruidDataSourceInstances()) { + JdbcSqlStat sqlStat = ds.getDataSourceStat().getSqlStat(id); + if (sqlStat != null) return sqlStat; + } + return null; + } - for (DruidDataSource ds : getDruidDataSourceInstances()) { - JdbcSqlStat sqlStat = ds.getDataSourceStat().getSqlStat(id); - if (sqlStat != null) - return sqlStat; - } - return null; - } + public Map getDataSourceStatData(Integer id) { + if (id == null) { + return null; + } + DruidDataSource datasource = getDruidDataSourceById(id); + return datasource == null ? null : dataSourceToMapData(datasource); + } - public Map getDataSourceStatData(Integer id) { - if (id == null) { - return null; - } - DruidDataSource datasource = getDruidDataSourceById(id); - return datasource == null ? null : dataSourceToMapData(datasource); - } + public DruidDataSource getDruidDataSourceById(Integer identity) { + if (identity == null) { + return null; + } - private DruidDataSource getDruidDataSourceById(Integer identity) { + for (DruidDataSource datasource : getDruidDataSourceInstances()) { + if (System.identityHashCode(datasource) == identity) { + return datasource; + } + } + return null; + } - if (identity == null) { - return null; - } + public List> getSqlStatDataList() { + List> result = new ArrayList>(); + for (DruidDataSource datasource : getDruidDataSourceInstances()) { + for (JdbcSqlStat sqlStat : datasource.getDataSourceStat().getSqlStatMap().values()) { + if (sqlStat.getExecuteCount() == 0 && sqlStat.getRunningCount() == 0) { + continue; + } - for (DruidDataSource datasource : getDruidDataSourceInstances()) { - if (System.identityHashCode(datasource) == identity) { - return datasource; - } - } - return null; - } + result.add(getSqlStatData(sqlStat)); + } + } + return result; + } - public List> getSqlStatDataList() { - List> result = new ArrayList>(); - for (DruidDataSource datasource : getDruidDataSourceInstances()) { - for (JdbcSqlStat sqlStat : datasource.getDataSourceStat().getSqlStatMap().values()) { - if (sqlStat.getExecuteCount() == 0 && sqlStat.getRunningCount() == 0) { - continue; - } + public Map getSqlStatData(Integer id) { + if (id == null) { + return null; + } + JdbcSqlStat sqlStat = getSqlStatById(id); + return sqlStat == null ? null : getSqlStatData(sqlStat); + } - result.add(getSqlStatData(sqlStat)); - } - } - return result; - } + private Map getSqlStatData(JdbcSqlStat sqlStat) { + try { + return sqlStat.getData(); + } catch (JMException e) { + } + return null; + } - public Map getSqlStatData(Integer id) { - if (id == null) { - return null; - } - JdbcSqlStat sqlStat = getSqlStatById(id); - return sqlStat == null ? null : getSqlStatData(sqlStat); - } + public List getDataSourceStatList() { + List datasourceList = new ArrayList(); + for (DruidDataSource dataSource : getDruidDataSourceInstances()) { + datasourceList.add(dataSourceToMapData(dataSource)); + } + return datasourceList; + } - private Map getSqlStatData(JdbcSqlStat sqlStat) { - try { - return sqlStat.getData(); - } catch (JMException e) { - } - return null; - } + public Map returnJSONBasicStat() { + Map dataMap = new LinkedHashMap(); + dataMap.put("Version", VERSION.getVersionNumber()); + dataMap.put("Drivers", getDriversData()); + return dataMap; + } - public List getDataSourceStatList() { - List datasourceList = new ArrayList(); - for (DruidDataSource dataSource : getDruidDataSourceInstances()) { - datasourceList.add(dataSourceToMapData(dataSource)); - } - return datasourceList; - } + private List getDriversData() { + List drivers = new ArrayList(); + for (Enumeration e = DriverManager.getDrivers(); e.hasMoreElements();) { + Driver driver = e.nextElement(); + drivers.add(driver.getClass().getName()); + } + return drivers; + } - public Map returnJSONBasicStat() { - Map dataMap = new LinkedHashMap(); - dataMap.put("Version", VERSION.getVersionNumber()); - dataMap.put("Drivers", getDriversData()); - return dataMap; - } + public List> getPoolingConnectionInfoByDataSourceId(Integer id) { + DruidDataSource datasource = getDruidDataSourceById(id); + if (datasource == null) return null; + return datasource.getPoolingConnectionInfo(); + } - private List getDriversData() { - List drivers = new ArrayList(); - for (Enumeration e = DriverManager.getDrivers(); e.hasMoreElements();) { - Driver driver = e.nextElement(); - drivers.add(driver.getClass().getName()); - } - return drivers; - } + public List getActiveConnectionStackTraceByDataSourceId(Integer id) { + DruidDataSource datasource = getDruidDataSourceById(id); + if (datasource == null || !datasource.isRemoveAbandoned()) return null; - public List> getPoolingConnectionInfoByDataSourceId(Integer id) { - DruidDataSource datasource = getDruidDataSourceById(id); - if (datasource == null) - return null; - return datasource.getPoolingConnectionInfo(); - } + return datasource.getActiveConnectionStackTrace(); + } - public List getActiveConnectionStackTraceByDataSourceId(Integer id) { - DruidDataSource datasource = getDruidDataSourceById(id); - if (datasource == null || !datasource.isRemoveAbandoned()) - return null; + private Map dataSourceToMapData(DruidDataSource dataSource) { - return datasource.getActiveConnectionStackTrace(); - } + Map dataMap = new LinkedHashMap(); + dataMap.put("Identity", System.identityHashCode(dataSource)); + dataMap.put("Name", dataSource.getName()); + dataMap.put("DbType", dataSource.getDbType()); + dataMap.put("DriverClassName", dataSource.getDriverClassName()); - private Map dataSourceToMapData(DruidDataSource dataSource) { + dataMap.put("URL", dataSource.getUrl()); + dataMap.put("UserName", dataSource.getUsername()); + dataMap.put("FilterClassNames", dataSource.getFilterClassNames()); - Map dataMap = new LinkedHashMap(); - dataMap.put("Identity", System.identityHashCode(dataSource)); - dataMap.put("Name", dataSource.getName()); - dataMap.put("DbType", dataSource.getDbType()); - dataMap.put("DriverClassName", dataSource.getDriverClassName()); + dataMap.put("WaitThreadCount", dataSource.getWaitThreadCount()); + dataMap.put("NotEmptyWaitCount", dataSource.getNotEmptyWaitCount()); + dataMap.put("NotEmptyWaitMillis", dataSource.getNotEmptyWaitMillis()); - dataMap.put("URL", dataSource.getUrl()); - dataMap.put("UserName", dataSource.getUsername()); - dataMap.put("FilterClassNames", dataSource.getFilterClassNames()); + dataMap.put("PoolingCount", dataSource.getPoolingCount()); + dataMap.put("PoolingPeak", dataSource.getPoolingPeak()); + dataMap.put("PoolingPeakTime", + dataSource.getPoolingPeakTime() == null ? null : dataSource.getPoolingPeakTime().toString()); - dataMap.put("WaitThreadCount", dataSource.getWaitThreadCount()); - dataMap.put("NotEmptyWaitCount", dataSource.getNotEmptyWaitCount()); - dataMap.put("NotEmptyWaitMillis", dataSource.getNotEmptyWaitMillis()); + dataMap.put("ActiveCount", dataSource.getActiveCount()); + dataMap.put("ActivePeak", dataSource.getActivePeak()); + dataMap.put("ActivePeakTime", + dataSource.getActivePeakTime() == null ? null : dataSource.getActivePeakTime().toString()); - dataMap.put("PoolingCount", dataSource.getPoolingCount()); - dataMap.put("PoolingPeak", dataSource.getPoolingPeak()); - dataMap.put("PoolingPeakTime", dataSource.getPoolingPeakTime() == null ? null : dataSource.getPoolingPeakTime().toString()); + dataMap.put("InitialSize", dataSource.getInitialSize()); + dataMap.put("MinIdle", dataSource.getMinIdle()); + dataMap.put("MaxActive", dataSource.getMaxActive()); - dataMap.put("ActiveCount", dataSource.getActiveCount()); - dataMap.put("ActivePeak", dataSource.getActivePeak()); - dataMap.put("ActivePeakTime", dataSource.getActivePeakTime() == null ? null : dataSource.getActivePeakTime().toString()); + dataMap.put("QueryTimeout", dataSource.getQueryTimeout()); + dataMap.put("TransactionQueryTimeout", dataSource.getTransactionQueryTimeout()); + dataMap.put("LoginTimeout", dataSource.getLoginTimeout()); + dataMap.put("ValidConnectionCheckerClassName", dataSource.getValidConnectionCheckerClassName()); + dataMap.put("ExceptionSorterClassName", dataSource.getExceptionSorterClassName()); - dataMap.put("InitialSize", dataSource.getInitialSize()); - dataMap.put("MinIdle", dataSource.getMinIdle()); - dataMap.put("MaxActive", dataSource.getMaxActive()); + dataMap.put("TestOnBorrow", dataSource.isTestOnBorrow()); + dataMap.put("TestOnReturn", dataSource.isTestOnReturn()); + dataMap.put("TestWhileIdle", dataSource.isTestWhileIdle()); - dataMap.put("QueryTimeout", dataSource.getQueryTimeout()); - dataMap.put("TransactionQueryTimeout", dataSource.getTransactionQueryTimeout()); - dataMap.put("LoginTimeout", dataSource.getLoginTimeout()); - dataMap.put("ValidConnectionCheckerClassName", dataSource.getValidConnectionCheckerClassName()); - dataMap.put("ExceptionSorterClassName", dataSource.getExceptionSorterClassName()); + dataMap.put("DefaultAutoCommit", dataSource.isDefaultAutoCommit()); + dataMap.put("DefaultReadOnly", dataSource.isDefaultAutoCommit()); + dataMap.put("DefaultTransactionIsolation", dataSource.getDefaultTransactionIsolation()); - dataMap.put("TestOnBorrow", dataSource.isTestOnBorrow()); - dataMap.put("TestOnReturn", dataSource.isTestOnReturn()); - dataMap.put("TestWhileIdle", dataSource.isTestWhileIdle()); + dataMap.put("LogicConnectCount", dataSource.getConnectCount()); + dataMap.put("LogicCloseCount", dataSource.getCloseCount()); + dataMap.put("LogicConnectErrorCount", dataSource.getConnectErrorCount()); - dataMap.put("DefaultAutoCommit", dataSource.isDefaultAutoCommit()); - dataMap.put("DefaultReadOnly", dataSource.isDefaultAutoCommit()); - dataMap.put("DefaultTransactionIsolation", dataSource.getDefaultTransactionIsolation()); + dataMap.put("PhysicalConnectCount", dataSource.getCreateCount()); + dataMap.put("PhysicalCloseCount", dataSource.getDestroyCount()); + dataMap.put("PhysicalConnectErrorCount", dataSource.getCreateErrorCount()); - dataMap.put("LogicConnectCount", dataSource.getConnectCount()); - dataMap.put("LogicCloseCount", dataSource.getCloseCount()); - dataMap.put("LogicConnectErrorCount", dataSource.getConnectErrorCount()); + dataMap.put("ExecuteCount", dataSource.getExecuteCount()); + dataMap.put("ErrorCount", dataSource.getErrorCount()); + dataMap.put("CommitCount", dataSource.getCommitCount()); + dataMap.put("RollbackCount", dataSource.getRollbackCount()); - dataMap.put("PhysicalConnectCount", dataSource.getCreateCount()); - dataMap.put("PhysicalCloseCount", dataSource.getDestroyCount()); - dataMap.put("PhysicalConnectErrorCount", dataSource.getCreateErrorCount()); + dataMap.put("PSCacheAccessCount", dataSource.getCachedPreparedStatementAccessCount()); + dataMap.put("PSCacheHitCount", dataSource.getCachedPreparedStatementHitCount()); + dataMap.put("PSCacheMissCount", dataSource.getCachedPreparedStatementMissCount()); - dataMap.put("ExecuteCount", dataSource.getExecuteCount()); - dataMap.put("ErrorCount", dataSource.getErrorCount()); - dataMap.put("CommitCount", dataSource.getCommitCount()); - dataMap.put("RollbackCount", dataSource.getRollbackCount()); + dataMap.put("StartTransactionCount", dataSource.getStartTransactionCount()); + dataMap.put("TransactionHistogram", dataSource.getTransactionHistogramValues()); - dataMap.put("PSCacheAccessCount", dataSource.getCachedPreparedStatementAccessCount()); - dataMap.put("PSCacheHitCount", dataSource.getCachedPreparedStatementHitCount()); - dataMap.put("PSCacheMissCount", dataSource.getCachedPreparedStatementMissCount()); + dataMap.put("ConnectionHoldTimeHistogram", + dataSource.getDataSourceStat().getConnectionHoldHistogram().toArray()); + dataMap.put("RemoveAbandoned", dataSource.isRemoveAbandoned()); - dataMap.put("StartTransactionCount", dataSource.getStartTransactionCount()); - dataMap.put("TransactionHistogram", dataSource.getTransactionHistogramValues()); - - dataMap.put("ConnectionHoldTimeHistogram", dataSource.getDataSourceStat().getConnectionHoldHistogram().toArray()); - dataMap.put("RemoveAbandoned", dataSource.isRemoveAbandoned()); - - return dataMap; - } + return dataMap; + } } diff --git a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatJNDIStatStrategy.java b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatJNDIStatStrategy.java index 769c4ceee6..39337d67f5 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatJNDIStatStrategy.java +++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatJNDIStatStrategy.java @@ -3,60 +3,73 @@ package com.alibaba.druid.stat; import java.util.List; import java.util.Map; +import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; import com.alibaba.druid.util.ReflectionUtils; -public class DruidDataSourceStatJNDIStatStrategy implements DruidDataSourceStatStrategy{ - private final static Log LOG = LogFactory.getLog(DruidDataSourceStatJNDIStatStrategy.class); +public class DruidDataSourceStatJNDIStatStrategy implements DruidDataSourceStatStrategy { - private Object getStrategyB() { - try { - Class clazz = ReflectionUtils.getClassFromWebContainerOrCurrentClassLoader("com.alibaba.druid.stat.DruidDataSourceStatDefaultStrategy"); - return clazz.newInstance(); - } catch (Exception e) { - LOG.error(e.getMessage(), e); - return null; - } - } + private final static Log LOG = LogFactory.getLog(DruidDataSourceStatJNDIStatStrategy.class); - @SuppressWarnings("unchecked") - public Map getSqlStatData(Integer id) { - return (Map) ReflectionUtils.callObjectMethod(getStrategyB(), "getSqlStatData", id); - } + private Object getStatDefaultStrategy() { + try { + Class clazz = ReflectionUtils.getClassFromWebContainerOrCurrentClassLoader("com.alibaba.druid.stat.DruidDataSourceStatDefaultStrategy"); + return clazz.newInstance(); + } catch (Exception e) { + LOG.error(e.getMessage(), e); + return null; + } + } - @SuppressWarnings("unchecked") - public List> getSqlStatDataList() { - return (List>) ReflectionUtils.callObjectMethod(getStrategyB(), "getSqlStatDataList"); - } + @SuppressWarnings("unchecked") + public Map getSqlStatData(Integer id) { + return (Map) ReflectionUtils.callObjectMethod(getStatDefaultStrategy(), "getSqlStatData", id); + } - @SuppressWarnings("unchecked") - public List getActiveConnectionStackTraceByDataSourceId(Integer id) { - return (List) ReflectionUtils.callObjectMethod(getStrategyB(), "getActiveConnectionStackTraceByDataSourceId", id); - } + @SuppressWarnings("unchecked") + public List> getSqlStatDataList() { + return (List>) ReflectionUtils.callObjectMethod(getStatDefaultStrategy(), "getSqlStatDataList"); + } - @SuppressWarnings("unchecked") - public Map returnJSONBasicStat() { - return (Map) ReflectionUtils.callObjectMethod(getStrategyB(), "returnJSONBasicStat"); - } + @SuppressWarnings("unchecked") + public List getActiveConnectionStackTraceByDataSourceId(Integer id) { + return (List) ReflectionUtils.callObjectMethod(getStatDefaultStrategy(), + "getActiveConnectionStackTraceByDataSourceId", id); + } - @SuppressWarnings("unchecked") - public List getDataSourceStatList() { - return (List) ReflectionUtils.callObjectMethod(getStrategyB(), "getDataSourceStatList"); - } + @SuppressWarnings("unchecked") + public Map returnJSONBasicStat() { + return (Map) ReflectionUtils.callObjectMethod(getStatDefaultStrategy(), "returnJSONBasicStat"); + } - @SuppressWarnings("unchecked") - public Map getDataSourceStatData(Integer id) { - return (Map) ReflectionUtils.callObjectMethod(getStrategyB(), "getDataSourceStatData", id); - } + @SuppressWarnings("unchecked") + public List getDataSourceStatList() { + return (List) ReflectionUtils.callObjectMethod(getStatDefaultStrategy(), "getDataSourceStatList"); + } - @SuppressWarnings("unchecked") - public List> getPoolingConnectionInfoByDataSourceId(Integer id) { - return (List>) ReflectionUtils.callObjectMethod(getStrategyB(), "getPoolingConnectionInfoByDataSourceId", id); - } + @SuppressWarnings("unchecked") + public Map getDataSourceStatData(Integer id) { + return (Map) ReflectionUtils.callObjectMethod(getStatDefaultStrategy(), "getDataSourceStatData", id); + } - public void resetAll() { - ReflectionUtils.callObjectMethod(getStrategyB(), "resetAll"); - } + @SuppressWarnings("unchecked") + public List> getPoolingConnectionInfoByDataSourceId(Integer id) { + return (List>) ReflectionUtils.callObjectMethod(getStatDefaultStrategy(), + "getPoolingConnectionInfoByDataSourceId", + id); + } + + public void resetAll() { + ReflectionUtils.callObjectMethod(getStatDefaultStrategy(), "resetAll"); + } + + public DruidDataSource getDruidDataSourceById(Integer id) { + return (DruidDataSource) ReflectionUtils.callObjectMethod(getStatDefaultStrategy(), "getDruidDataSourceById"); + } + + public JdbcSqlStat getSqlStatById(Integer id) { + return (JdbcSqlStat) ReflectionUtils.callObjectMethod(getStatDefaultStrategy(), "getSqlStatById", id); + } } diff --git a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatStrategy.java b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatStrategy.java index aedb9279cf..6a4681a1e7 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatStrategy.java +++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatStrategy.java @@ -3,20 +3,27 @@ package com.alibaba.druid.stat; import java.util.List; import java.util.Map; +import com.alibaba.druid.pool.DruidDataSource; + public interface DruidDataSourceStatStrategy { - public Map getSqlStatData(Integer id); - public List> getSqlStatDataList(); + public Map getSqlStatData(Integer id); - public List getActiveConnectionStackTraceByDataSourceId(Integer id); + public List> getSqlStatDataList(); - public Map returnJSONBasicStat(); + public List getActiveConnectionStackTraceByDataSourceId(Integer id); - public List getDataSourceStatList(); + public Map returnJSONBasicStat(); - public Map getDataSourceStatData(Integer id); + public List getDataSourceStatList(); - public List> getPoolingConnectionInfoByDataSourceId(Integer id); + public Map getDataSourceStatData(Integer id); - public void resetAll(); + public List> getPoolingConnectionInfoByDataSourceId(Integer id); + + public void resetAll(); + + public DruidDataSource getDruidDataSourceById(Integer id); + + public JdbcSqlStat getSqlStatById(Integer id); } diff --git a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatStrategyContext.java b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatStrategyContext.java index 4c02900eb8..3ffa4ea18e 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatStrategyContext.java +++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatStrategyContext.java @@ -3,42 +3,54 @@ package com.alibaba.druid.stat; import java.util.List; import java.util.Map; +import com.alibaba.druid.pool.DruidDataSource; + public class DruidDataSourceStatStrategyContext { - private DruidDataSourceStatStrategy druidDataSourceStatStrategy; - public DruidDataSourceStatStrategyContext(DruidDataSourceStatStrategy druidDataSourceStatStrategy) { - this.druidDataSourceStatStrategy = druidDataSourceStatStrategy; - } + private DruidDataSourceStatStrategy druidDataSourceStatStrategy; - public Map getSqlStatData(Integer id) { - return druidDataSourceStatStrategy.getSqlStatData(id); - } + public DruidDataSourceStatStrategyContext(DruidDataSourceStatStrategy druidDataSourceStatStrategy){ + this.druidDataSourceStatStrategy = druidDataSourceStatStrategy; + } - public List> getSqlStatDataList() { - return druidDataSourceStatStrategy.getSqlStatDataList(); - } + public Map getSqlStatData(Integer id) { + return druidDataSourceStatStrategy.getSqlStatData(id); + } - public List getActiveConnectionStackTraceByDataSourceId(Integer id) { - return druidDataSourceStatStrategy.getActiveConnectionStackTraceByDataSourceId(id); - } + public List> getSqlStatDataList() { + return druidDataSourceStatStrategy.getSqlStatDataList(); + } - public Map returnJSONBasicStat() { - return druidDataSourceStatStrategy.returnJSONBasicStat(); - } + public List getActiveConnectionStackTraceByDataSourceId(Integer id) { + return druidDataSourceStatStrategy.getActiveConnectionStackTraceByDataSourceId(id); + } - public List getDataSourceStatList() { - return druidDataSourceStatStrategy.getDataSourceStatList(); - } + public Map returnJSONBasicStat() { + return druidDataSourceStatStrategy.returnJSONBasicStat(); + } - public Map getDataSourceStatData(Integer id) { - return druidDataSourceStatStrategy.getDataSourceStatData(id); - } + public List getDataSourceStatList() { + return druidDataSourceStatStrategy.getDataSourceStatList(); + } - public List> getPoolingConnectionInfoByDataSourceId(Integer id) { - return druidDataSourceStatStrategy.getPoolingConnectionInfoByDataSourceId(id); - } + public Map getDataSourceStatData(Integer id) { + return druidDataSourceStatStrategy.getDataSourceStatData(id); + } + + public List> getPoolingConnectionInfoByDataSourceId(Integer id) { + return druidDataSourceStatStrategy.getPoolingConnectionInfoByDataSourceId(id); + } + + public void resetAll() { + druidDataSourceStatStrategy.resetAll(); + } + + public DruidDataSource getDruidDataSourceById(Integer id) { + return druidDataSourceStatStrategy.getDruidDataSourceById(id); + } + + public JdbcSqlStat getSqlStatById(Integer id) { + return druidDataSourceStatStrategy.getSqlStatById(id); + } - public void resetAll() { - druidDataSourceStatStrategy.resetAll(); - } } diff --git a/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java b/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java index ab09a2d0e9..fef8b5f4c1 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java +++ b/src/main/java/com/alibaba/druid/stat/DruidStatManagerFacade.java @@ -3,6 +3,8 @@ package com.alibaba.druid.stat; import java.util.List; import java.util.Map; +import com.alibaba.druid.pool.DruidDataSource; + /** * 监控相关的对外数据暴露 * @@ -15,53 +17,61 @@ import java.util.Map; */ public class DruidStatManagerFacade { - private final static DruidStatManagerFacade instance = new DruidStatManagerFacade(); + private final static DruidStatManagerFacade instance = new DruidStatManagerFacade(); - private static DruidDataSourceStatStrategyContext ctx = null; + private static DruidDataSourceStatStrategyContext ctx = null; - private static DruidDataSourceStatStrategy strategy = null; + private static DruidDataSourceStatStrategy strategy = null; - static { - strategy = new DruidDataSourceStatJNDIStatStrategy(); - ctx = new DruidDataSourceStatStrategyContext(strategy); - } + static { + strategy = new DruidDataSourceStatJNDIStatStrategy(); + ctx = new DruidDataSourceStatStrategyContext(strategy); + } - private DruidStatManagerFacade() { - } + private DruidStatManagerFacade(){ + } - public static DruidStatManagerFacade getInstance() { - return instance; - } + public static DruidStatManagerFacade getInstance() { + return instance; + } - public Map getSqlStatData(Integer id) { - return ctx.getSqlStatData(id); - } + public Map getSqlStatData(Integer id) { + return ctx.getSqlStatData(id); + } - public List> getSqlStatDataList() { - return ctx.getSqlStatDataList(); - } + public List> getSqlStatDataList() { + return ctx.getSqlStatDataList(); + } - public List getActiveConnectionStackTraceByDataSourceId(Integer id) { - return ctx.getActiveConnectionStackTraceByDataSourceId(id); - } + public List getActiveConnectionStackTraceByDataSourceId(Integer id) { + return ctx.getActiveConnectionStackTraceByDataSourceId(id); + } - public Map returnJSONBasicStat() { - return ctx.returnJSONBasicStat(); - } + public Map returnJSONBasicStat() { + return ctx.returnJSONBasicStat(); + } - public List getDataSourceStatList() { - return ctx.getDataSourceStatList(); - } + public List getDataSourceStatList() { + return ctx.getDataSourceStatList(); + } - public Map getDataSourceStatData(Integer id) { - return ctx.getDataSourceStatData(id); - } + public Map getDataSourceStatData(Integer id) { + return ctx.getDataSourceStatData(id); + } - public List> getPoolingConnectionInfoByDataSourceId(Integer id) { - return ctx.getPoolingConnectionInfoByDataSourceId(id); - } + public List> getPoolingConnectionInfoByDataSourceId(Integer id) { + return ctx.getPoolingConnectionInfoByDataSourceId(id); + } - public void resetAll() { - ctx.resetAll(); - } + public void resetAll() { + ctx.resetAll(); + } + + public DruidDataSource getDruidDataSourceById(Integer id) { + return ctx.getDruidDataSourceById(id); + } + + public JdbcSqlStat getSqlStatById(Integer id) { + return ctx.getSqlStatById(id); + } } diff --git a/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java b/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java index 3780fb2ab0..90119e8075 100644 --- a/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java +++ b/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java @@ -37,7 +37,7 @@ public class StatViewServlet extends HttpServlet { private static JSONDruidStatService jsonDruidStatService = JSONDruidStatService.getInstance(); public String templatePage; - private static DateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss:SSS"); + private static DateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss:SSS"); public void init() throws ServletException { try { @@ -134,7 +134,7 @@ public class StatViewServlet extends HttpServlet { content.append("
"); content.append("

API:com.alibaba.druid.sql.SQLUtils.format(sql,DBType);

"); content.append("
"); - + if (sqlStat.getLastSlowParameters() != null && sqlStat.getLastSlowParameters().trim().length() > 0) { content.append("

LastSlow SQL View:

"); content.append(""); @@ -149,7 +149,7 @@ public class StatViewServlet extends HttpServlet { content.append("
"); content.append("
"); } - + List statementList = SQLUtils.parseStatements(sqlStat.getSql(), sqlStat.getDbType()); if (!statementList.isEmpty()) { content.append("

Parse View:

"); @@ -214,4 +214,3 @@ public class StatViewServlet extends HttpServlet { return templatePage.replaceAll("\\{title\\}", title).replaceAll("\\{content\\}", content); } } -