self protected

This commit is contained in:
温少
2012-03-20 04:56:12 +08:00
parent 67d4cfd4c4
commit e3fa87b37e
2 changed files with 52 additions and 19 deletions
@@ -22,7 +22,6 @@ import java.sql.NClob;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.util.Date;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicLong;
@@ -419,35 +418,69 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
long millis = nanoSpan / (1000 * 1000);
if (millis >= slowSqlMillis) {
Map<Integer, JdbcParameter> parameters = statement.getParameters();
String[] lastSlowParameters = new String[parameters.size()];
StringBuilder buf = new StringBuilder();
buf.append('[');
int index = 0;
for (JdbcParameter parameter : statement.getParameters().values()) {
if (index != 0) {
buf.append(',');
}
Object value = parameter.getValue();
if (value == null) {
lastSlowParameters[index] = "null";
buf.append("null");
} else if (value instanceof String) {
lastSlowParameters[index] = "'" + value.toString() + "'";
buf.append('"');
String text = (String) value;
if (text.length() > 100) {
for (int i = 0; i < 97; ++i) {
char ch = text.charAt(i);
if (ch == '\'') {
buf.append('\\');
buf.append(ch);
} else {
buf.append(ch);
}
}
buf.append("...");
} else {
for (int i = 0; i < text.length(); ++i) {
char ch = text.charAt(i);
if (ch == '\'') {
buf.append('\\');
buf.append(ch);
} else {
buf.append(ch);
}
}
}
buf.append('"');
} else if (value instanceof Number) {
lastSlowParameters[index] = value.toString();
buf.append(value.toString());
} else if (value instanceof java.util.Date) {
java.util.Date date = (java.util.Date) value;
lastSlowParameters[index] = date.getClass().getSimpleName() + "(" + date.getTime() + ")";
buf.append(date.getClass().getSimpleName());
buf.append('(');
buf.append(date.getTime());
buf.append(')');
} else if (value instanceof Boolean) {
lastSlowParameters[index] = value.toString();
buf.append(value.toString());
} else if (value instanceof InputStream) {
lastSlowParameters[index] = "<InputStream>";
buf.append("<InputStream>");
} else if (value instanceof Clob) {
lastSlowParameters[index] = "<Clob>";
buf.append("<Clob>");
} else if (value instanceof NClob) {
lastSlowParameters[index] = "<NClob>";
buf.append("<NClob>");
} else if (value instanceof Blob) {
lastSlowParameters[index] = "<Blob>";
buf.append("<Blob>");
} else {
lastSlowParameters[index] = "<" + value.getClass() + ">";
buf.append('<');
buf.append(value.getClass().getName());
buf.append('>');
}
index++;
}
sqlStat.setLastSlowParameters(lastSlowParameters);
buf.append(']');
sqlStat.setLastSlowParameters(buf.toString());
}
}
@@ -64,7 +64,7 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
private final AtomicLong inTransactionCount = new AtomicLong();
private String[] lastSlowParameters;
private String lastSlowParameters;
private final Histogram histogram = new Histogram(new long[] { //
//
@@ -77,11 +77,11 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
this.sql = sql;
}
public String[] getLastSlowParameters() {
public String getLastSlowParameters() {
return lastSlowParameters;
}
public void setLastSlowParameters(String[] lastSlowParameters) {
public void setLastSlowParameters(String lastSlowParameters) {
this.lastSlowParameters = lastSlowParameters;
}
@@ -391,7 +391,7 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
// 25 -
new ArrayType<Long>(SimpleType.LONG, true), //
new ArrayType<String>(SimpleType.STRING, false), //
SimpleType.STRING, //
};
String[] indexNames = {
@@ -490,7 +490,7 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean {
map.put("InTransactionCount", getInTransactionCount());
map.put("Histogram", this.histogram.toArray());
map.put("LastSlowParameters", lastSlowParameters);
return map;