From 94470b70636c3441db5abafad186d76c3d06279d Mon Sep 17 00:00:00 2001 From: wenshao Date: Sat, 18 Aug 2012 18:03:32 +0800 Subject: [PATCH] improve uriStatView --- .../druid/support/JSONDruidStatService.java | 13 +++++- .../druid/support/http/stat/WebAppStat.java | 12 ++++- .../support/http/stat/WebAppStatManager.java | 13 ++++++ .../support/http/stat/WebAppStatUtils.java | 16 +++++++ .../support/http/resources/js/weburi.js | 46 ++++++++++--------- .../http/resources/websession-detail.html | 5 +- 6 files changed, 78 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java b/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java index 3f8a626845..bf5d329999 100644 --- a/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java +++ b/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java @@ -100,6 +100,11 @@ public class JSONDruidStatService { if (url.startsWith("/weburi.json")) { return returnJSONResult(RESULT_CODE_SUCCESS, getWebURIStatDataList(parameters)); } + + if (url.startsWith("/weburi-") && url.indexOf(".json") > 0) { + String uri = StringUtils.subString(url, "weburi-", ".json"); + return returnJSONResult(RESULT_CODE_SUCCESS, getWebURIStatData(uri)); + } if (url.startsWith("/websession.json")) { return returnJSONResult(RESULT_CODE_SUCCESS, getWebSessionStatDataList(parameters)); @@ -107,7 +112,7 @@ public class JSONDruidStatService { if (url.startsWith("/websession-") && url.indexOf(".json") > 0) { String id = StringUtils.subString(url, "websession-", ".json"); - return returnJSONResult(RESULT_CODE_SUCCESS, getWebSessionDetail(id)); + return returnJSONResult(RESULT_CODE_SUCCESS, getWebSessionStatData(id)); } if (url.startsWith("/spring.json")) { @@ -126,8 +131,12 @@ public class JSONDruidStatService { List> array = WebAppStatManager.getInstance().getURIStatData(); return comparatorOrderBy(array, parameters); } + + private Map getWebURIStatData(String uri) { + return WebAppStatManager.getInstance().getURIStatData(uri); + } - private Map getWebSessionDetail(String sessionId) { + private Map getWebSessionStatData(String sessionId) { return WebAppStatManager.getInstance().getSessionStat(sessionId); } diff --git a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java index f009952d2b..da2859d4a8 100644 --- a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java +++ b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java @@ -147,7 +147,17 @@ public class WebAppStat { } public Map getSessionStatData(String sessionId) { - WebSessionStat uriStat = sessionStatMap.get(sessionId); + WebSessionStat sessionStat = sessionStatMap.get(sessionId); + + if (sessionStat == null) { + return null; + } + + return sessionStat.getStatData(); + } + + public Map getURIStatData(String uri) { + WebURIStat uriStat = getURIStat(uri); if (uriStat == null) { return null; diff --git a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java index f57b3b1334..a07e1b5da9 100644 --- a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java +++ b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatManager.java @@ -78,6 +78,19 @@ public class WebAppStatManager { return null; } + + public Map getURIStatData(String uri) { + Set stats = getWebAppStatSet(); + + for (Object stat : stats) { + Map statData = WebAppStatUtils.getURIStatData(stat, uri); + if (statData != null) { + return statData; + } + } + + return null; + } public void addWebAppStatSet(Object webAppStat) { getWebAppStatSet().add(webAppStat); diff --git a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatUtils.java b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatUtils.java index 3c0a0a5956..203379fad0 100644 --- a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatUtils.java +++ b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatUtils.java @@ -74,6 +74,22 @@ public class WebAppStatUtils { return null; } } + + @SuppressWarnings("unchecked") + public static Map getURIStatData(Object webStat, String uri) { + if (webStat.getClass() == WebAppStat.class) { + return ((WebAppStat) webStat).getURIStatData(uri); + } + + try { + Method method = webStat.getClass().getMethod("getURIStatData", String.class); + Object obj = method.invoke(webStat); + return (Map) obj; + } catch (Exception e) { + LOG.error("getURIStatData error", e); + return null; + } + } public static void reset(Object webStat) { if (webStat.getClass() == WebAppStat.class) { diff --git a/src/main/resources/support/http/resources/js/weburi.js b/src/main/resources/support/http/resources/js/weburi.js index f99fe7131b..8e9c070b73 100644 --- a/src/main/resources/support/http/resources/js/weburi.js +++ b/src/main/resources/support/http/resources/js/weburi.js @@ -1,4 +1,3 @@ - var xmlHttpForDataSourceSqlStatInfo; var sqlViewOrderBy = ''; @@ -75,8 +74,9 @@ function getSqlViewJsonUrl() { } function ajaxRequestForDataSourceSqlStatInfo() { - xmlHttpForDataSourceSqlStatInfo = getRequestObject(); - sendRequest(xmlHttpForDataSourceSqlStatInfo,getSqlViewJsonUrl(),ajaxResponseForDataSourceSqlStatInfo) + xmlHttpForDataSourceSqlStatInfo = getRequestObject(); + sendRequest(xmlHttpForDataSourceSqlStatInfo, getSqlViewJsonUrl(), + ajaxResponse) } function subSqlString(sql, len) { @@ -84,28 +84,32 @@ function subSqlString(sql, len) { return sql; return sql.substr(0, len) + '...'; } -function ajaxResponseForDataSourceSqlStatInfo() { - var sqlStatList = getJSONResponseContent(xmlHttpForDataSourceSqlStatInfo); - if(sqlStatList==null) return; - + +function ajaxResponse() { + var statList = getJSONResponseContent(xmlHttpForDataSourceSqlStatInfo); + if (statList == null) + return; + var sqlStatTable = document.getElementById("WebUriStatTable"); while (sqlStatTable.rows.length > 1) { sqlStatTable.deleteRow(1); } - for ( var i = 0; i < sqlStatList.length; i++) { - var sqlStat = sqlStatList[i]; + + for ( var i = 0; i < statList.length; i++) { + var stat = statList[i]; var newRow = sqlStatTable.insertRow(-1); - newRow.insertCell(-1).innerHTML = i+1; - newRow.insertCell(-1).innerHTML = subSqlString(sqlStat.URI, 64); - newRow.insertCell(-1).innerHTML = sqlStat.RequestCount; - newRow.insertCell(-1).innerHTML = sqlStat.RequestTimeMillis; - newRow.insertCell(-1).innerHTML = sqlStat.RunningCount; - newRow.insertCell(-1).innerHTML = sqlStat.ConcurrentMax; - newRow.insertCell(-1).innerHTML = sqlStat.JdbcExecuteCount; - newRow.insertCell(-1).innerHTML = sqlStat.JdbcExecuteTimeMillis; - newRow.insertCell(-1).innerHTML = sqlStat.JdbcCommitCount; - newRow.insertCell(-1).innerHTML = sqlStat.JdbcRollbackCount; - newRow.insertCell(-1).innerHTML = sqlStat.JdbcFetchRowCount; - newRow.insertCell(-1).innerHTML = sqlStat.JdbcUpdateCount; + newRow.insertCell(-1).innerHTML = i + 1; + newRow.insertCell(-1).innerHTML = '' + subSqlString(stat.URI, 64) + ''; + newRow.insertCell(-1).innerHTML = stat.RequestCount; + newRow.insertCell(-1).innerHTML = stat.RequestTimeMillis; + newRow.insertCell(-1).innerHTML = stat.RunningCount; + newRow.insertCell(-1).innerHTML = stat.ConcurrentMax; + newRow.insertCell(-1).innerHTML = stat.JdbcExecuteCount; + newRow.insertCell(-1).innerHTML = stat.JdbcExecuteTimeMillis; + newRow.insertCell(-1).innerHTML = stat.JdbcCommitCount; + newRow.insertCell(-1).innerHTML = stat.JdbcRollbackCount; + newRow.insertCell(-1).innerHTML = stat.JdbcFetchRowCount; + newRow.insertCell(-1).innerHTML = stat.JdbcUpdateCount; } } diff --git a/src/main/resources/support/http/resources/websession-detail.html b/src/main/resources/support/http/resources/websession-detail.html index 49b5ee5fde..261e9b891f 100644 --- a/src/main/resources/support/http/resources/websession-detail.html +++ b/src/main/resources/support/http/resources/websession-detail.html @@ -1,11 +1,11 @@ - + Druid Web Session Stat - + -

Web Session View