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 58092c3728..86f1771770 100644 --- a/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java +++ b/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java @@ -149,7 +149,6 @@ public class StatViewServlet extends HttpServlet { content.append("Fields"); content.append("" + visitor.getColumns() + ""); content.append(""); - content.append(""); content.append("Coditions"); content.append("" + visitor.getConditions() + ""); @@ -159,18 +158,22 @@ public class StatViewServlet extends HttpServlet { content.append("Relationships"); content.append("" + visitor.getRelationships() + ""); content.append(""); + + content.append(""); + content.append("OrderByColumns"); + content.append("" + visitor.getOrderByColumns() + ""); + content.append(""); + content.append(""); content.append("
"); content.append("

API:

"); content.append("

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

"); content.append("
"); } @@ -293,6 +296,19 @@ public class StatViewServlet extends HttpServlet { json.put("URL", dataSource.getUrl()); json.put("UserName", dataSource.getUsername()); + json.put("FilterClassNames", dataSource.getFilterClassNames()); + + json.put("WaitThreadCount", dataSource.getWaitThreadCount()); + json.put("NotEmptyWaitCount", dataSource.getNotEmptyWaitCount()); + json.put("NotEmptyWaitMillis", dataSource.getNotEmptyWaitMillis()); + + json.put("PoolingCount", dataSource.getPoolingCount()); + json.put("PoolingPeak", dataSource.getPoolingPeak()); + json.put("PoolingPeakTime", dataSource.getPoolingPeakTime()); + + json.put("ActiveCount", dataSource.getActiveCount()); + json.put("ActivePeak", dataSource.getActivePeak()); + json.put("ActivePeakTime", dataSource.getActivePeakTime()); json.put("InitialSize", dataSource.getInitialSize()); json.put("MinIdle", dataSource.getMinIdle()); @@ -312,6 +328,9 @@ public class StatViewServlet extends HttpServlet { 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; } diff --git a/src/main/resources/support/http/resources/js.js b/src/main/resources/support/http/resources/js.js index 46fba90e4a..62a33f0da5 100644 --- a/src/main/resources/support/http/resources/js.js +++ b/src/main/resources/support/http/resources/js.js @@ -74,6 +74,8 @@ function ajaxResponseForBasicInfo() { } function changeInnerHtml(id, divHtml) { var divObj = document.getElementById(id); + if(!divHtml) + divHtml=''; if (divObj) { divObj.innerHTML = divHtml; } @@ -84,17 +86,38 @@ function fillDataSourceInfo(datasource) { changeInnerHtml("DS-Info-URL" + datasource.Identity, datasource.URL); 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); + + 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); @@ -113,21 +136,43 @@ function ajaxResponseForDataSourceInfo() { 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 += '';
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缓存未命中次数