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 dae760b44a..cd437ce63a 100644 --- a/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java +++ b/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java @@ -10,6 +10,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import javax.management.JMException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; @@ -83,26 +84,26 @@ public class StatViewServlet extends HttpServlet { } if (path.equals("/datasource.json")) { - returnJSONResult(request, response, RESULT_CODE_SUCCESS, getJSONDataSourceStatList()); + returnJSONResult(request, response, RESULT_CODE_SUCCESS, getDataSourceStatList()); return; } if (path.startsWith("/datasource-")) { Integer id = StringUtils.subStringToInteger(path, "datasource-", "."); - Object result = getJSONDataSourceStat(id); + Object result = getDataSourceStatData(id); returnJSONResult(request, response, result == null ? RESULT_CODE_ERROR : RESULT_CODE_SUCCESS, result); return; } if (path.equals("/sql.json")) { - returnJSONResult(request, response, RESULT_CODE_SUCCESS, getJSONSqlStat()); + returnJSONResult(request, response, RESULT_CODE_SUCCESS, getSqlStatDataList()); return; } if (path.startsWith("/sql-")) { Integer id = StringUtils.subStringToInteger(path, "sql-", "."); if (path.endsWith(".json")) { - Object result = getJSONSqlStat(id); + Object result = getSqlStatData(id); returnJSONResult(request, response, result == null ? RESULT_CODE_ERROR : RESULT_CODE_SUCCESS, result); return; } @@ -124,13 +125,13 @@ public class StatViewServlet extends HttpServlet { StringBuilder content = new StringBuilder(); - content.append("

FULL SQL

" + sqlStat.getSql() + "

"); + content.append("

FULL SQL

" + sqlStat.getSql() + "

"); content.append("

Format View:

"); content.append("
"); + content.append("
"); content.append("

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

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

API:

"); content.append("

"); - content.append("List statementList = SQLUtils.parseStatements(sqlStat.getSql(), sqlStat.getDbType())
"); + content.append("List statementList = SQLUtils.parseStatements(sqlStat.getSql(), sqlStat.getDbType())
"); content.append("SQLStatement statemen = statementList.get(0);
"); - content.append("SchemaStatVisitor visitor = SQLUtils.createSchemaStatVisitor(statementList, sqlStat.getDbType());
"); - content.append("statemen.accept(visitor);
"); - content.append("visitor.getTables() / visitor.getColumns() / visitor.getOrderByColumns() / visitor.getConditions() / visitor.getRelationships()
"); + content.append("SchemaStatVisitor visitor = SQLUtils.createSchemaStatVisitor(statementList, sqlStat.getDbType());
"); + content.append("statemen.accept(visitor);
"); + content.append("visitor.getTables() / visitor.getColumns() / visitor.getOrderByColumns() / visitor.getConditions() / visitor.getRelationships()
"); content.append("

"); - content.append("
"); + content.append("
"); } response.getWriter().print(mergeTemplatePage("Druid Sql View", content.toString())); @@ -187,7 +188,7 @@ public class StatViewServlet extends HttpServlet { DruidDataSourceStatManager.getInstance().reset(); } - private List getJSONDrivers() { + private List getDriversData() { List drivers = new ArrayList(); for (Enumeration e = DriverManager.getDrivers(); e.hasMoreElements();) { Driver driver = e.nextElement(); @@ -197,36 +198,36 @@ public class StatViewServlet extends HttpServlet { } private void returnJSONBasicStat(HttpServletRequest request, HttpServletResponse response) throws IOException { - Map json = new LinkedHashMap(); - json.put("Version", VERSION.getVersionNumber()); - json.put("Drivers", getJSONDrivers()); + Map dataMap = new LinkedHashMap(); + dataMap.put("Version", VERSION.getVersionNumber()); + dataMap.put("Drivers", getDriversData()); - returnJSONResult(request, response, RESULT_CODE_SUCCESS, json); + returnJSONResult(request, response, RESULT_CODE_SUCCESS, dataMap); } - private List getJSONDataSourceStatList() { + private List getDataSourceStatList() { List datasourceList = new ArrayList(); for (DruidDataSource dataSource : DruidDataSourceStatManager.getDruidDataSourceInstances()) { - datasourceList.add(toJSONDataSource(dataSource)); + datasourceList.add(dataSourceToMapData(dataSource)); } return datasourceList; } - private Map getJSONDataSourceStat(Integer id) { + private Map getDataSourceStatData(Integer id) { if (id == null) { return null; } DruidDataSource datasource = getDruidDataSourceById(id); - return datasource == null ? null : toJSONDataSource(datasource); + return datasource == null ? null : dataSourceToMapData(datasource); } - private Map getJSONSqlStat(Integer id) { + private Map getSqlStatData(Integer id) { if (id == null) { return null; } JdbcSqlStat sqlStat = getSqlStatById(id); - return sqlStat == null ? null : toJSONSqlStat(sqlStat); + return sqlStat == null ? null : getSqlStatData(sqlStat); } private JdbcSqlStat getSqlStatById(Integer id) { @@ -249,102 +250,83 @@ public class StatViewServlet extends HttpServlet { return null; } - private List getJSONSqlStat() { + private Map getSqlStatData(JdbcSqlStat sqlStat) { + try { + return sqlStat.getData(); + } catch (JMException e) { + } + return null; + } + + private List getSqlStatDataList() { List array = new ArrayList(); for (DruidDataSource datasource : DruidDataSourceStatManager.getDruidDataSourceInstances()) { for (JdbcSqlStat sqlStat : datasource.getDataSourceStat().getSqlStatMap().values()) { - array.add(toJSONSqlStat(sqlStat)); + array.add(getSqlStatData(sqlStat)); } } return array; } - private Map toJSONSqlStat(JdbcSqlStat sqlStat) { - Map json = new LinkedHashMap(); + private Map dataSourceToMapData(DruidDataSource dataSource) { - json.put("ID", sqlStat.getId()); - json.put("SQL", sqlStat.getSql()); - json.put("File", sqlStat.getFile()); - json.put("Name", sqlStat.getName()); + 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()); - json.put("ExecuteCount", sqlStat.getExecuteCount()); - json.put("ExecuteMillisTotal", sqlStat.getExecuteMillisTotal()); - json.put("ExecuteMillisMax", sqlStat.getExecuteMillisMax()); + dataMap.put("URL", dataSource.getUrl()); + dataMap.put("UserName", dataSource.getUsername()); + dataMap.put("FilterClassNames", dataSource.getFilterClassNames()); - json.put("InTxnCount", sqlStat.getInTransactionCount()); - json.put("ErrorCount", sqlStat.getErrorCount()); - json.put("UpdateCount", sqlStat.getUpdateCount()); - json.put("FetchRowCount", sqlStat.getFetchRowCount()); - json.put("RunningCount", sqlStat.getRunningCount()); - json.put("ConcurrentMax", sqlStat.getConcurrentMax()); + dataMap.put("WaitThreadCount", dataSource.getWaitThreadCount()); + dataMap.put("NotEmptyWaitCount", dataSource.getNotEmptyWaitCount()); + dataMap.put("NotEmptyWaitMillis", dataSource.getNotEmptyWaitMillis()); - json.put("ExecHistogram", sqlStat.getHistogram().toArray()); - json.put("FetchRowHistogram", sqlStat.getFetchRowCountHistogram().toArray()); - json.put("UpdateCountHistogram", sqlStat.getUpdateCountHistogram().toArray()); - json.put("ExecAndRsHoldHistogram", sqlStat.getExecuteAndResultHoldTimeHistogram().toArray()); + dataMap.put("PoolingCount", dataSource.getPoolingCount()); + dataMap.put("PoolingPeak", dataSource.getPoolingPeak()); + dataMap.put("PoolingPeakTime", + dataSource.getPoolingPeakTime() == null ? null : dataSource.getPoolingPeakTime().toString()); - return json; - } + dataMap.put("ActiveCount", dataSource.getActiveCount()); + dataMap.put("ActivePeak", dataSource.getActivePeak()); + dataMap.put("ActivePeakTime", + dataSource.getActivePeakTime() == null ? null : dataSource.getActivePeakTime().toString()); - private Map toJSONDataSource(DruidDataSource dataSource) { + dataMap.put("InitialSize", dataSource.getInitialSize()); + dataMap.put("MinIdle", dataSource.getMinIdle()); + dataMap.put("MaxActive", dataSource.getMaxActive()); - Map json = new LinkedHashMap(); - json.put("Identity", System.identityHashCode(dataSource)); - json.put("Name", dataSource.getName()); - json.put("DbType", dataSource.getDbType()); - json.put("DriverClassName", dataSource.getDriverClassName()); + dataMap.put("TestOnBorrow", dataSource.isTestOnBorrow()); + dataMap.put("TestWhileIdle", dataSource.isTestWhileIdle()); - json.put("URL", dataSource.getUrl()); - json.put("UserName", dataSource.getUsername()); - json.put("FilterClassNames", dataSource.getFilterClassNames()); + dataMap.put("LogicConnectCount", dataSource.getConnectCount()); + dataMap.put("LogicCloseCount", dataSource.getCloseCount()); + dataMap.put("LogicConnectErrorCount", dataSource.getConnectErrorCount()); - json.put("WaitThreadCount", dataSource.getWaitThreadCount()); - json.put("NotEmptyWaitCount", dataSource.getNotEmptyWaitCount()); - json.put("NotEmptyWaitMillis", dataSource.getNotEmptyWaitMillis()); + dataMap.put("PhysicalConnectCount", dataSource.getCreateCount()); + dataMap.put("PhysicalCloseCount", dataSource.getDestroyCount()); + dataMap.put("PhysicalConnectErrorCount", dataSource.getCreateErrorCount()); - json.put("PoolingCount", dataSource.getPoolingCount()); - json.put("PoolingPeak", dataSource.getPoolingPeak()); - json.put("PoolingPeakTime", - dataSource.getPoolingPeakTime() == null ? null : dataSource.getPoolingPeakTime().toString()); + dataMap.put("PSCacheAccessCount", dataSource.getCachedPreparedStatementAccessCount()); + dataMap.put("PSCacheHitCount", dataSource.getCachedPreparedStatementHitCount()); + dataMap.put("PSCacheMissCount", dataSource.getCachedPreparedStatementMissCount()); - json.put("ActiveCount", dataSource.getActiveCount()); - json.put("ActivePeak", dataSource.getActivePeak()); - json.put("ActivePeakTime", - dataSource.getActivePeakTime() == null ? null : dataSource.getActivePeakTime().toString()); - - json.put("InitialSize", dataSource.getInitialSize()); - json.put("MinIdle", dataSource.getMinIdle()); - json.put("MaxActive", dataSource.getMaxActive()); - - json.put("TestOnBorrow", dataSource.isTestOnBorrow()); - json.put("TestWhileIdle", dataSource.isTestWhileIdle()); - - json.put("LogicConnectCount", dataSource.getConnectCount()); - json.put("LogicCloseCount", dataSource.getCloseCount()); - json.put("LogicConnectErrorCount", dataSource.getConnectErrorCount()); - - json.put("PhysicalConnectCount", dataSource.getCreateCount()); - json.put("PhysicalCloseCount", dataSource.getDestroyCount()); - json.put("PhysicalConnectErrorCount", dataSource.getCreateErrorCount()); - - json.put("PSCacheAccessCount", dataSource.getCachedPreparedStatementAccessCount()); - json.put("PSCacheHitCount", dataSource.getCachedPreparedStatementHitCount()); - json.put("PSCacheMissCount", dataSource.getCachedPreparedStatementMissCount()); - - json.put("StartTransactionCount", dataSource.getStartTransactionCount()); - json.put("TransactionHistogramValues", dataSource.getTransactionHistogramValues()); - return json; + dataMap.put("StartTransactionCount", dataSource.getStartTransactionCount()); + dataMap.put("TransactionHistogramValues", dataSource.getTransactionHistogramValues()); + return dataMap; } private void returnJSONResult(HttpServletRequest request, HttpServletResponse response, int resultCode, Object content) throws IOException { PrintWriter out = response.getWriter(); - Map json = new LinkedHashMap(); - json.put("ResultCode", resultCode); - json.put("Content", content); + Map dataMap = new LinkedHashMap(); + dataMap.put("ResultCode", resultCode); + dataMap.put("Content", content); - out.print(JSON.toJSONString(json)); + out.print(JSON.toJSONString(dataMap)); } private void returnResourceFile(String fileName, HttpServletResponse response) throws ServletException, IOException { diff --git a/src/main/resources/support/http/resources/api.html b/src/main/resources/support/http/resources/api.html index 18018ac198..315603e33e 100644 --- a/src/main/resources/support/http/resources/api.html +++ b/src/main/resources/support/http/resources/api.html @@ -7,11 +7,11 @@ -
+
-
+

JSON API

@@ -40,7 +40,7 @@ datasource-{id}.json @@ -57,7 +57,7 @@ sql-{id}.json diff --git a/src/main/resources/support/http/resources/datasource.html b/src/main/resources/support/http/resources/datasource.html index 841f472f38..b64f986ddc 100644 --- a/src/main/resources/support/http/resources/datasource.html +++ b/src/main/resources/support/http/resources/datasource.html @@ -13,11 +13,11 @@ -
+
-
+

DataSourceStat List[View JSON API]

diff --git a/src/main/resources/support/http/resources/index.html b/src/main/resources/support/http/resources/index.html index 9cac813938..ed3fcce48f 100644 --- a/src/main/resources/support/http/resources/index.html +++ b/src/main/resources/support/http/resources/index.html @@ -12,11 +12,11 @@ -
+
-
+

Stat Index[View JSON API]

- DatasourceStat for id={id},id is DatsSourceStat.ID
+ DatasourceStat for id={id},id is DatsSourceStat.ID
Example: druid/datasource-1.json
- SqlStat for id={id} ,id is SqlStat.ID
+ SqlStat for id={id} ,id is SqlStat.ID
Example: druid/sql-1.json
diff --git a/src/main/resources/support/http/resources/js.js b/src/main/resources/support/http/resources/js.js index 8925501c4d..b4d5bd732c 100644 --- a/src/main/resources/support/http/resources/js.js +++ b/src/main/resources/support/http/resources/js.js @@ -42,40 +42,46 @@ function ajaxRequestForDataSourceInfo() { } function ajaxResponseForReset() { var html = ''; - if (xmlHttpForReset.readyState == 4) { - if (xmlHttpForReset.status == 200) { - var jsonResp = eval("(" + xmlHttpForReset.responseText + ")"); - if (jsonResp.ResultCode == 1) { - alert("already reset all stat"); - } - } + if (xmlHttpForReset.readyState != 4) { + return; } + if (xmlHttpForReset.status != 200) { + return; + } + var jsonResp = eval("(" + xmlHttpForReset.responseText + ")"); + if (jsonResp.ResultCode == 1) { + alert("already reset all stat"); + } + } function ajaxResponseForBasicInfo() { - var html = ''; - if (xmlHttpForBasicInfo.readyState == 4) { - if (xmlHttpForBasicInfo.status == 200) { - var jsonResp = eval("(" + xmlHttpForBasicInfo.responseText + ")"); - if (jsonResp.ResultCode == 1) { - document.getElementById("DruidVersion").innerHTML = jsonResp.Content.Version; + if (xmlHttpForBasicInfo.readyState != 4) { + return; + } + if (xmlHttpForBasicInfo.status != 200) { + return; + } + var jsonResp = eval("(" + xmlHttpForBasicInfo.responseText + ")"); + if (jsonResp.ResultCode != 1) { + return; + } - var driversList = jsonResp.Content.Drivers; - if (driversList) { - var driverHtml = ''; - for ( var i = 0; i < driversList.length; i++) { - var driver = driversList[i]; - driverHtml += driver + ' , '; - } - document.getElementById("DruidDrivers").innerHTML = driverHtml; - } - } + document.getElementById("DruidVersion").innerHTML = jsonResp.Content.Version; + + var driversList = jsonResp.Content.Drivers; + if (driversList) { + var driverHtml = ''; + for ( var i = 0; i < driversList.length; i++) { + var driver = driversList[i]; + driverHtml += driver + ' , '; } + document.getElementById("DruidDrivers").innerHTML = driverHtml; } } function changeInnerHtml(id, divHtml) { var divObj = document.getElementById(id); - if(divHtml==undefined) - divHtml=''; + if (divHtml == undefined) + divHtml = ''; if (divObj) { divObj.innerHTML = divHtml; } @@ -87,21 +93,21 @@ function fillDataSourceInfo(datasource) { changeInnerHtml("DS-Info-DbType" + datasource.Identity, datasource.DbType); changeInnerHtml("DS-Info-DriverClassName" + datasource.Identity, datasource.DriverClassName); changeInnerHtml("DS-Info-FilterClassNames" + datasource.Identity, datasource.FilterClassNames); - + changeInnerHtml("DS-Info-TestOnBorrow" + datasource.Identity, datasource.TestOnBorrow); changeInnerHtml("DS-Info-TestWhileIdle" + datasource.Identity, datasource.TestWhileIdle); - + changeInnerHtml("DS-Info-InitialSize" + datasource.Identity, datasource.InitialSize); changeInnerHtml("DS-Info-MinIdle" + datasource.Identity, datasource.MinIdle); changeInnerHtml("DS-Info-MaxActive" + datasource.Identity, datasource.MaxActive); - + changeInnerHtml("DS-Info-NotEmptyWaitCount" + datasource.Identity, datasource.NotEmptyWaitCount); changeInnerHtml("DS-Info-NotEmptyWaitMillis" + datasource.Identity, datasource.NotEmptyWaitMillis); changeInnerHtml("DS-Info-WaitThreadCount" + datasource.Identity, datasource.WaitThreadCount); - + changeInnerHtml("DS-Info-StartTransactionCount" + datasource.Identity, datasource.StartTransactionCount); changeInnerHtml("DS-Info-TransactionHistogramValues" + datasource.Identity, datasource.TransactionHistogramValues); - + changeInnerHtml("DS-Info-PoolingCount" + datasource.Identity, datasource.PoolingCount); changeInnerHtml("DS-Info-PoolingPeak" + datasource.Identity, datasource.PoolingPeak); changeInnerHtml("DS-Info-PoolingPeakTime" + datasource.Identity, datasource.PoolingPeakTime); @@ -109,82 +115,90 @@ function fillDataSourceInfo(datasource) { changeInnerHtml("DS-Info-ActiveCount" + datasource.Identity, datasource.ActiveCount); changeInnerHtml("DS-Info-ActivePeak" + datasource.Identity, datasource.ActivePeak); changeInnerHtml("DS-Info-ActivePeakTime" + datasource.Identity, datasource.ActivePeakTime); - + changeInnerHtml("DS-Info-LogicConnectCount" + datasource.Identity, datasource.LogicConnectCount); changeInnerHtml("DS-Info-LogicCloseCount" + datasource.Identity, datasource.LogicCloseCount); changeInnerHtml("DS-Info-LogicConnectErrorCount" + datasource.Identity, datasource.LogicConnectErrorCount); - + changeInnerHtml("DS-Info-PhysicalConnectCount" + datasource.Identity, datasource.PhysicalConnectCount); changeInnerHtml("DS-Info-PhysicalCloseCount" + datasource.Identity, datasource.PhysicalCloseCount); changeInnerHtml("DS-Info-PhysicalConnectErrorCount" + datasource.Identity, datasource.PhysicalConnectErrorCount); - + changeInnerHtml("DS-Info-PSCacheAccessCount" + datasource.Identity, datasource.PSCacheAccessCount); changeInnerHtml("DS-Info-PSCacheHitCount" + datasource.Identity, datasource.PSCacheHitCount); changeInnerHtml("DS-Info-PSCacheMissCount" + datasource.Identity, datasource.PSCacheMissCount); } +function generateDataSourceDiv(datasource) { + var listHtml = ''; + var datasourceId = datasource.Identity; + listHtml += '
'; + listHtml += '

Basic Info For [View JSON API]

'; + listHtml += '
'; + + listHtml += ''; + listHtml += ''; + listHtml += ''; + listHtml += ''; + listHtml += ''; + + listHtml += ''; + listHtml += ''; + + listHtml += ''; + listHtml += ''; + listHtml += ''; + + listHtml += ''; + listHtml += ''; + listHtml += ''; + + listHtml += ''; + listHtml += ''; + + listHtml += ''; + listHtml += ''; + listHtml += ''; + + listHtml += ''; + listHtml += ''; + listHtml += ''; + + listHtml += ''; + listHtml += ''; + listHtml += ''; + + listHtml += ''; + listHtml += ''; + listHtml += ''; + + listHtml += ''; + listHtml += ''; + listHtml += ''; + listHtml += '
UserName 用户名称
URL 数据源的JdbcURL
DbType 数据库类型
DriverClassName Jdbc驱动的名称
FilterClassNames 启用的filter的名称
TestOnBorrow 借出连接时是否做测试
TestWhileIdle 归还连接时是否做测试
InitialSize 初始连接池大小
MinIdle 连接池最小连接数
MaxActive 连接池最大连接数
NotEmptyWaitCount 等待获取连接的次数
NotEmptyWaitMillis 获取连接等待的时间总
WaitThreadCount 当前正在等待获取连接的线程数量
StartTransactionCount 启动事务次数
TransactionHistogramValues 事务的持续时间直方图
PoolingCount 连接池可用连接数
PoolingPeak 连接池可用连接数峰值
PoolingPeakTime 连接池可用连接数峰值时间
ActiveCount 当前活动连接数
ActivePeak 连接数峰值
ActivePeakTime 连接数峰值时间
LogicConnectCount 申请连接的次数
LogicCloseCount 关闭连接的次数
LogicConnectErrorCount 连接错误数
PhysicalConnectCount 创建物理连接次数
PhysicalCloseCount 物理连接关闭次数
PhysicalConnectErrorCount 建立物理连接错误数
PSCacheAccessCount PerpareStatement缓存次数
PSCacheHitCount PerpareStatement缓存命中次数
PSCacheMissCount PerpareStatement缓存未命中次数
'; + listHtml += '
'; + + document.getElementById("dataSourceStatList").innerHTML += listHtml; +} function ajaxResponseForDataSourceInfo() { - if (xmlHttpForDataSourceInfo.readyState == 4) { - if (xmlHttpForDataSourceInfo.status == 200) { - var jsonResp = eval("(" + xmlHttpForDataSourceInfo.responseText + ")"); - if (jsonResp.ResultCode == 1) { - var datasourceList = jsonResp.Content; - for ( var i = 0; i < datasourceList.length; i++) { - var datasource = datasourceList[i]; - if (!document.getElementById("dataSourceStat" + datasource.Identity)) { - var listHtml = ''; - var datasourceId = datasource.Identity; - listHtml += '
'; - listHtml += '

Basic Info For [View JSON API]

'; - listHtml += ''; - - listHtml += ''; - listHtml += ''; - listHtml += ''; - listHtml += ''; - listHtml += ''; - - listHtml += ''; - listHtml += ''; - - listHtml += ''; - listHtml += ''; - listHtml += ''; - - listHtml += ''; - listHtml += ''; - listHtml += ''; - - listHtml += ''; - listHtml += ''; - - listHtml += ''; - listHtml += ''; - listHtml += ''; - - listHtml += ''; - listHtml += ''; - listHtml += ''; - - listHtml += ''; - listHtml += ''; - listHtml += ''; - - listHtml += ''; - listHtml += ''; - listHtml += ''; - - listHtml += ''; - listHtml += ''; - listHtml += ''; - listHtml += '
UserName 用户名称
URL 数据源的JdbcURL
DbType 数据库类型
DriverClassName Jdbc驱动的名称
FilterClassNames 启用的filter的名称
TestOnBorrow 借出连接时是否做测试
TestWhileIdle 归还连接时是否做测试
InitialSize 初始连接池大小
MinIdle 连接池最小连接数
MaxActive 连接池最大连接数
NotEmptyWaitCount 等待获取连接的次数
NotEmptyWaitMillis 获取连接等待的时间总
WaitThreadCount 当前正在等待获取连接的线程数量
StartTransactionCount 启动事务次数
TransactionHistogramValues 事务的持续时间直方图
PoolingCount 连接池可用连接数
PoolingPeak 连接池可用连接数峰值
PoolingPeakTime 连接池可用连接数峰值时间
ActiveCount 当前活动连接数
ActivePeak 连接数峰值
ActivePeakTime 连接数峰值时间
LogicConnectCount 申请连接的次数
LogicCloseCount 关闭连接的次数
LogicConnectErrorCount 连接错误数
PhysicalConnectCount 创建物理连接次数
PhysicalCloseCount 物理连接关闭次数
PhysicalConnectErrorCount 建立物理连接错误数
PSCacheAccessCount PerpareStatement缓存次数
PSCacheHitCount PerpareStatement缓存命中次数
PSCacheMissCount PerpareStatement缓存未命中次数
'; - listHtml += '
'; - - document.getElementById("dataSourceStatList").innerHTML += listHtml; - } - fillDataSourceInfo(datasource); - } - } + if (xmlHttpForDataSourceInfo.readyState != 4) { + return; + } + if (xmlHttpForDataSourceInfo.status != 200) { + return; + } + var jsonResp = eval("(" + xmlHttpForDataSourceInfo.responseText + ")"); + if (jsonResp.ResultCode != 1) { + return; + } + var datasourceList = jsonResp.Content; + for ( var i = 0; i < datasourceList.length; i++) { + var datasource = datasourceList[i]; + if (document.getElementById("dataSourceStat" + datasource.Identity)) { + fillDataSourceInfo(datasource); + continue; } + generateDataSourceDiv(datasource); + fillDataSourceInfo(datasource); } } function subSqlString(sql, len) { @@ -193,45 +207,48 @@ function subSqlString(sql, len) { return sql.substr(0, len) + '...'; } function ajaxResponseForDataSourceSqlStatInfo() { - if (xmlHttpForDataSourceSqlStatInfo.readyState == 4) { - if (xmlHttpForDataSourceSqlStatInfo.status == 200) { - var jsonResp = eval("(" + xmlHttpForDataSourceSqlStatInfo.responseText + ")"); - if (jsonResp.ResultCode == 1) { - var sqlStatList = jsonResp.Content; - var sqlStatTable = document.getElementById("SqlStatTable"); - while (sqlStatTable.rows.length > 1) { - sqlStatTable.deleteRow(1); - } - for ( var i = 0; i < sqlStatList.length; i++) { - var sqlStat = sqlStatList[i]; - var newRow = sqlStatTable.insertRow(-1); - newRow.insertCell(-1).innerHTML = '' + subSqlString(sqlStat.SQL, 25) + ''; - if (sqlStat.File) - newRow.insertCell(-1).innerHTML = sqlStat.File; - else - newRow.insertCell(-1).innerHTML = ''; - if (sqlStat.Name) - newRow.insertCell(-1).innerHTML = sqlStat.Name; - else - newRow.insertCell(-1).innerHTML = ''; - newRow.insertCell(-1).innerHTML = sqlStat.ExecuteCount; - newRow.insertCell(-1).innerHTML = sqlStat.ExecuteMillisTotal; - newRow.insertCell(-1).innerHTML = sqlStat.ExecuteMillisMax; - newRow.insertCell(-1).innerHTML = sqlStat.InTxnCount; - newRow.insertCell(-1).innerHTML = sqlStat.ErrorCount; - newRow.insertCell(-1).innerHTML = sqlStat.UpdateCount; - newRow.insertCell(-1).innerHTML = sqlStat.FetchRowCount; - newRow.insertCell(-1).innerHTML = sqlStat.RunningCount; - newRow.insertCell(-1).innerHTML = sqlStat.ConcurrentMax; - var hi = newRow.insertCell(-1); - var hiHtml = ''; - hiHtml += 'ExecHistogram |'; - hiHtml += 'FetchRow | '; - hiHtml += 'UpdateCount | '; - hiHtml += 'ExecAndRsHold'; - hi.innerHTML = hiHtml; - } - } - } + if (xmlHttpForDataSourceSqlStatInfo.readyState != 4) { + return; + } + if (xmlHttpForDataSourceSqlStatInfo.status != 200) { + return; + } + var jsonResp = eval("(" + xmlHttpForDataSourceSqlStatInfo.responseText + ")"); + if (jsonResp.ResultCode != 1) { + return; + } + var sqlStatList = jsonResp.Content; + var sqlStatTable = document.getElementById("SqlStatTable"); + while (sqlStatTable.rows.length > 1) { + sqlStatTable.deleteRow(1); + } + for ( var i = 0; i < sqlStatList.length; i++) { + var sqlStat = sqlStatList[i]; + var newRow = sqlStatTable.insertRow(-1); + newRow.insertCell(-1).innerHTML = '' + subSqlString(sqlStat.SQL, 25) + ''; + if (sqlStat.File) + newRow.insertCell(-1).innerHTML = sqlStat.File; + else + newRow.insertCell(-1).innerHTML = ''; + if (sqlStat.Name) + newRow.insertCell(-1).innerHTML = sqlStat.Name; + else + newRow.insertCell(-1).innerHTML = ''; + newRow.insertCell(-1).innerHTML = sqlStat.ExecuteCount; + newRow.insertCell(-1).innerHTML = sqlStat.TotalTime; + newRow.insertCell(-1).innerHTML = sqlStat.MaxTimespan; + newRow.insertCell(-1).innerHTML = sqlStat.InTransactionCount; + newRow.insertCell(-1).innerHTML = sqlStat.ErrorCount; + newRow.insertCell(-1).innerHTML = sqlStat.EffectedRowCount; + newRow.insertCell(-1).innerHTML = sqlStat.FetchRowCount; + newRow.insertCell(-1).innerHTML = sqlStat.RunningCount; + newRow.insertCell(-1).innerHTML = sqlStat.ConcurrentMax; + var hi = newRow.insertCell(-1); + var hiHtml = ''; + hiHtml += 'ExecHistogram |'; + hiHtml += 'FetchRow | '; + hiHtml += 'UpdateCount | '; + hiHtml += 'ExecAndRsHold'; + hi.innerHTML = hiHtml; } } \ No newline at end of file diff --git a/src/main/resources/support/http/resources/sql.html b/src/main/resources/support/http/resources/sql.html index 205533a36d..3b44433133 100644 --- a/src/main/resources/support/http/resources/sql.html +++ b/src/main/resources/support/http/resources/sql.html @@ -13,11 +13,11 @@ -
+
-
+

SqlStat List[View JSON API]

diff --git a/src/main/resources/support/http/resources/template.html b/src/main/resources/support/http/resources/template.html index 24d40c4264..36d5b4ce3b 100644 --- a/src/main/resources/support/http/resources/template.html +++ b/src/main/resources/support/http/resources/template.html @@ -7,11 +7,11 @@ -
+
-
+
{content}