com.microsoft.sqlserver
sqljdbc4
diff --git a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatJNDIStatStrategy.java b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatJNDIStatStrategy.java
index 769c4ceee6..d8026865f4 100644
--- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatJNDIStatStrategy.java
+++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatJNDIStatStrategy.java
@@ -3,21 +3,12 @@ package com.alibaba.druid.stat;
import java.util.List;
import java.util.Map;
-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);
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;
- }
+ return ReflectionUtils.getClassFromWebContainerOrCurrentClassLoader("com.alibaba.druid.stat.DruidDataSourceStatDefaultStrategy");
}
@SuppressWarnings("unchecked")
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 6fafeaf50f..addaba62f1 100644
--- a/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java
+++ b/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java
@@ -1,6 +1,8 @@
package com.alibaba.druid.support.http;
import java.io.IOException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;
@@ -36,6 +38,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");
public void init() throws ServletException {
try {
@@ -121,9 +124,26 @@ public class StatViewServlet extends HttpServlet {
content.append("
");
content.append("API:com.alibaba.druid.sql.SQLUtils.format(sql,DBType);
");
content.append("
");
-
- List statementList = SQLUtils.parseStatements((String) sqlStat.get("SQL"),
- (String) sqlStat.get("DbType"));
+
+ if (sqlStat.get("LastSlowParameters") != null
+ && sqlStat.get("LastSlowParameters").toString().trim().length() > 0) {
+ content.append("LastSlow SQL View:
");
+ content.append("");
+ content.append("");
+ content.append("| MaxTimespanOccurTime | ");
+ content.append("" + format.format(sqlStat.get("MaxTimespanOccurTime")) + " | ");
+ content.append("
");
+ content.append("");
+ content.append("| LastSlowParameters | ");
+ content.append("" + sqlStat.get("LastSlowParameters") + " | ");
+ content.append("
");
+ content.append("
");
+ content.append("
");
+ }
+
+ List statementList = SQLUtils.parseStatements((String) sqlStat.get("SQL"),
+ (String) sqlStat.get("DbType"));
+
if (!statementList.isEmpty()) {
content.append("Parse View:
");
diff --git a/src/main/java/com/alibaba/druid/util/ReflectionUtils.java b/src/main/java/com/alibaba/druid/util/ReflectionUtils.java
index 223a861cd6..045313c4ec 100644
--- a/src/main/java/com/alibaba/druid/util/ReflectionUtils.java
+++ b/src/main/java/com/alibaba/druid/util/ReflectionUtils.java
@@ -42,20 +42,10 @@ public class ReflectionUtils {
}
}
- public static Object callObjectMethod(Object obj, String methodName) {
+ public static Object callObjectMethod(Object obj, String methodName, Object... methodParams) {
try {
Method m = obj.getClass().getMethod(methodName);
- return m.invoke(obj);
- } catch (Exception e) {
- LOG.warn("callObjectMethod fail:class=" + obj.getClass().getName() + " method=" + methodName, e);
- return null;
- }
- }
-
- public static Object callObjectMethod(Object obj, String methodName, Integer id) {
- try {
- Method m = obj.getClass().getMethod(methodName, Integer.class);
- return m.invoke(obj, id);
+ return m.invoke(obj, methodParams);
} catch (Exception e) {
LOG.warn("callObjectMethod fail:class=" + obj.getClass().getName() + " method=" + methodName, e);
return null;
diff --git a/src/main/resources/support/http/resources/js/sql.js b/src/main/resources/support/http/resources/js/sql.js
index 02172ba557..ef769229b8 100644
--- a/src/main/resources/support/http/resources/js/sql.js
+++ b/src/main/resources/support/http/resources/js/sql.js
@@ -94,6 +94,7 @@ function ajaxResponseForDataSourceSqlStatInfo() {
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.SQL, 25) + '';
// if (sqlStat.File)
// newRow.insertCell(-1).innerHTML = sqlStat.File;
@@ -105,7 +106,12 @@ function ajaxResponseForDataSourceSqlStatInfo() {
// newRow.insertCell(-1).innerHTML = '';
newRow.insertCell(-1).innerHTML = sqlStat.ExecuteCount;
newRow.insertCell(-1).innerHTML = sqlStat.TotalTime;
- newRow.insertCell(-1).innerHTML = sqlStat.MaxTimespan;
+ //显示执行的时间比配置的均值时间慢的SQL链接
+ var lastSlowHtml = sqlStat.MaxTimespan;
+ if(sqlStat.LastSlowParameters!=null&&sqlStat.LastSlowParameters.length>0){
+ lastSlowHtml =''+sqlStat.MaxTimespan+'';
+ }
+ newRow.insertCell(-1).innerHTML = lastSlowHtml;
newRow.insertCell(-1).innerHTML = sqlStat.InTransactionCount;
newRow.insertCell(-1).innerHTML = sqlStat.ErrorCount;
newRow.insertCell(-1).innerHTML = sqlStat.EffectedRowCount;
@@ -120,8 +126,8 @@ function ajaxResponseForDataSourceSqlStatInfo() {
// hiHtml += 'ExecAndRsHold';
newRow.insertCell(-1).innerHTML = '[' + sqlStat.Histogram + ']';
+ newRow.insertCell(-1).innerHTML = '[' + sqlStat.ExecuteAndResultHoldTimeHistogram + ']';
newRow.insertCell(-1).innerHTML = '[' + sqlStat.FetchRowCountHistogram + ']';
newRow.insertCell(-1).innerHTML = '[' + sqlStat.EffectedRowCountHistogram + ']';
- newRow.insertCell(-1).innerHTML = '[' + sqlStat.ExecuteAndResultHoldTimeHistogram + ']';
}
}
\ 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 a2515003be..480de266ce 100644
--- a/src/main/resources/support/http/resources/sql.html
+++ b/src/main/resources/support/http/resources/sql.html
@@ -24,6 +24,7 @@