From cef63ebdd662b1541de1d4b1b4d0ded634217635 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 12 Aug 2012 14:43:18 +0800 Subject: [PATCH] add webStat support --- .../druid/support/JSONDruidStatService.java | 10 ++ .../druid/support/http/stat/WebAppStat.java | 2 +- .../support/http/resources/datasource.html | 2 +- .../support/http/resources/js/weburi.js | 103 ++++++++++++++++++ .../resources/support/http/resources/sql.html | 2 +- .../support/http/resources/weburi.html | 21 +++- 6 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/support/http/resources/js/weburi.js diff --git a/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java b/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java index da73035d47..971002bef5 100644 --- a/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java +++ b/src/main/java/com/alibaba/druid/support/JSONDruidStatService.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; import com.alibaba.druid.stat.DruidStatManagerFacade; +import com.alibaba.druid.support.http.stat.WebAppStatManager; import com.alibaba.druid.util.MapComparator; import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSON; @@ -81,9 +82,18 @@ public class JSONDruidStatService { Object result = druidStatManager.getSqlStatData(id); return returnJSONResult(result == null ? RESULT_CODE_ERROR : RESULT_CODE_SUCCESS, result); } + + if (url.startsWith("/weburi.json")) { + return returnJSONResult(RESULT_CODE_SUCCESS, getWebURIStatDataList(parameters)); + } return returnJSONResult(RESULT_CODE_ERROR, "Do not support this request, please contact with administrator."); } + + private List> getWebURIStatDataList(Map parameters) { + List> array = WebAppStatManager.getInstance().getWebAppStatData(); + return array; + } private List> getSqlStatDataList(Map parameters) { List> array = druidStatManager.getSqlStatDataList(); 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 c35c800564..bebe1ff575 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 @@ -139,7 +139,7 @@ public class WebAppStat { for (WebURIStat uriStat : this.uriStatMap.values()) { Map uriStatData = uriStat.getStatData(); - long runningCount = (Long) uriStatData.get("RunningCount"); + int runningCount = ((Number) uriStatData.get("RunningCount")).intValue(); long requestCount = (Long) uriStatData.get("RequestCount"); if (runningCount == 0 && requestCount == 0) { diff --git a/src/main/resources/support/http/resources/datasource.html b/src/main/resources/support/http/resources/datasource.html index b8b96bdb7b..88835c366a 100644 --- a/src/main/resources/support/http/resources/datasource.html +++ b/src/main/resources/support/http/resources/datasource.html @@ -9,7 +9,7 @@ diff --git a/src/main/resources/support/http/resources/js/weburi.js b/src/main/resources/support/http/resources/js/weburi.js new file mode 100644 index 0000000000..511cc5d536 --- /dev/null +++ b/src/main/resources/support/http/resources/js/weburi.js @@ -0,0 +1,103 @@ + +var xmlHttpForDataSourceSqlStatInfo; + +var sqlViewOrderBy = ''; +var sqlViewOrderBy_old = ''; +var sqlViewOrderType = 'asc'; + +// only one page for now +var sqlViewPage = 1; +var sqlViewPerPageCount = 1000000; + +function resetSortMark() { + var divObj = document.getElementById('th-' + sqlViewOrderBy); + var old_divObj = document.getElementById('th-' + sqlViewOrderBy_old); + var replaceToStr = ''; + if (old_divObj) { + var html = old_divObj.innerHTML; + if (sqlViewOrderBy_old.indexOf('[') > 0) + replaceToStr = '-'; + html = html.replace('↑', replaceToStr); + html = html.replace('↓', replaceToStr); + old_divObj.innerHTML = html + } + if (divObj) { + var html = divObj.innerHTML; + if (sqlViewOrderBy.indexOf('[') > 0) + html = ''; + + if (sqlViewOrderType == 'asc') { + html += '↑'; + } else if (sqlViewOrderType == 'desc') { + html += '↓'; + } + divObj.innerHTML = html; + } +} + +function setOrderBy(orderBy) { + if (sqlViewOrderBy != orderBy) { + sqlViewOrderBy_old = sqlViewOrderBy; + sqlViewOrderBy = orderBy; + sqlViewOrderType = 'desc'; + resetSortMark(); + return; + } + + sqlViewOrderBy_old = sqlViewOrderBy; + + if (sqlViewOrderType == 'asc') + sqlViewOrderType = 'desc' + else + sqlViewOrderType = 'asc'; + + resetSortMark(); + +} + +function getSqlViewJsonUrl() { + var result = 'weburi.json?'; + + if (sqlViewOrderBy != undefined) + result += 'orderBy=' + sqlViewOrderBy + '&'; + + if (sqlViewOrderType != undefined) + result += 'orderType=' + sqlViewOrderType + '&'; + + if (sqlViewPage != undefined) + result += 'page=' + sqlViewPage + '&'; + + if (sqlViewPerPageCount != undefined) + result += 'perPageCount=' + sqlViewPerPageCount + '&'; + + return result; +} + +function ajaxRequestForDataSourceSqlStatInfo() { + xmlHttpForDataSourceSqlStatInfo = getRequestObject(); + sendRequest(xmlHttpForDataSourceSqlStatInfo,getSqlViewJsonUrl(),ajaxResponseForDataSourceSqlStatInfo) +} + +function subSqlString(sql, len) { + if (sql.length <= len) + return sql; + return sql.substr(0, len) + '...'; +} +function ajaxResponseForDataSourceSqlStatInfo() { + var sqlStatList = getJSONResponseContent(xmlHttpForDataSourceSqlStatInfo); + if(sqlStatList==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]; + var newRow = sqlStatTable.insertRow(-1); + newRow.insertCell(-1).innerHTML = i+1; + newRow.insertCell(-1).innerHTML = subSqlString(sqlStat.URI, 25); + newRow.insertCell(-1).innerHTML = sqlStat.RequestCount; + newRow.insertCell(-1).innerHTML = sqlStat.RunningCount; + newRow.insertCell(-1).innerHTML = sqlStat.ConcurrentMax; + } +} \ 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 78b9490f16..e51d7e51d0 100644 --- a/src/main/resources/support/http/resources/sql.html +++ b/src/main/resources/support/http/resources/sql.html @@ -9,7 +9,7 @@ diff --git a/src/main/resources/support/http/resources/weburi.html b/src/main/resources/support/http/resources/weburi.html index f72e0cdfa9..1e3959b8c0 100644 --- a/src/main/resources/support/http/resources/weburi.html +++ b/src/main/resources/support/http/resources/weburi.html @@ -5,15 +5,32 @@ + + - +

- + + + + + + + + + + +
N--URIRunning CountRunning CountConcurrent Max