package com.alibaba.druid.http; import java.io.IOException; import java.io.PrintWriter; import java.sql.Driver; import java.sql.DriverManager; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alibaba.druid.VERSION; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.stat.DruidDataSourceStatManager; import com.alibaba.druid.stat.JdbcDataSourceStat; import com.alibaba.druid.stat.JdbcSqlStat; public class InfoServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out = resp.getWriter(); out.println(""); out.println(""); out.println(""); printVersions(out); printDrivers(out); printDataSources(out); out.println("
"); printDataSourceDetal(out); out.println(""); out.println(""); } private void printVersions(PrintWriter out) { out.println("Version" + VERSION.getVersionNumber() + ""); } private void printDrivers(PrintWriter out) { out.print("Drivers"); for (Enumeration e = DriverManager.getDrivers();e.hasMoreElements();) { Driver driver = e.nextElement(); out.print(driver.getClass().getName()); out.print("
"); out.println(); } out.print(""); out.println(); } private void printDataSources(PrintWriter out) { out.print("DataSources"); for (DruidDataSource dataSource : DruidDataSourceStatManager.getDruidDataSourceInstances()) { out.println("" + dataSource.getName() + ""); out.print("
"); } out.print(""); out.println(); } private void printDataSourceDetal(PrintWriter out) { for (DruidDataSource dataSource : DruidDataSourceStatManager.getDruidDataSourceInstances()) { printDataSource(out, dataSource); } } private void printDataSource(PrintWriter out, DruidDataSource dataSource) { out.println("

" + dataSource.getName() + "

"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println("
URL" + dataSource.getUrl() + "
DbType" + dataSource.getDbType() + "
UserName" + dataSource.getUsername() + "
DriverClassName" + dataSource.getDriverClassName() + "
InitialSize" + dataSource.getInitialSize() + "
MinIdle" + dataSource.getMinIdle() + "
MaxActive" + dataSource.getMaxActive() + "
TestOnBorrow" + dataSource.isTestOnBorrow() + "
TestWhileIdle" + dataSource.isTestWhileIdle() + "
LogicConnectCount" + dataSource.getConnectCount() + "
LogicCloseCount" + dataSource.getCloseCount() + "
LogicConnectErrorCount" + dataSource.getConnectErrorCount() + "
PhysicalConnectCount" + dataSource.getCreateCount() + "
PhysicalCloseCount" + dataSource.getDestroyCount() + "
PhysicalConnectErrorCount" + dataSource.getCreateErrorCount() + "
PSCacheAccessCount()" + dataSource.getCachedPreparedStatementAccessCount() + "
PSCacheHitCount()" + dataSource.getCachedPreparedStatementHitCount() + "
PSCacheMissCount()" + dataSource.getCachedPreparedStatementMissCount() + "
"); out.println("

" + dataSource.getName() + " SQL

"); JdbcDataSourceStat dataSourceStat = dataSource.getDataSourceStat(); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); for (JdbcSqlStat sqlStat : dataSourceStat.getSqlStatMap().values()) { out.println(""); out.println(""); if (sqlStat.getFile() != null) { out.println(""); } else { out.println(""); } if (sqlStat.getName() != null) { out.println(""); } else { out.println(""); } out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); } out.println("
SQLFileNameExecuteCountExecuteMillisExecuteMillisMaxInTxnCountErrorCountEffectedRowCountFetchRowCountRunningCountConcurrentMaxExecHistogramFetchRowHistogramUpdateCountHistogramExecAndRsHoldHistogram
" + sqlStat.getSql() + "" + sqlStat.getFile() + "" + sqlStat.getName() + "" + sqlStat.getExecuteCount() + "" + sqlStat.getExecuteMillisTotal() + "" + sqlStat.getExecuteMillisMax() + "" + sqlStat.getInTransactionCount() + "" + sqlStat.getErrorCount() + "" + sqlStat.getUpdateCount() + "" + sqlStat.getFetchRowCount() + "" + sqlStat.getRunningCount() + "" + sqlStat.getConcurrentMax() + "" + sqlStat.getHistogram() + "" + sqlStat.getFetchRowCountHistogram() + "" + sqlStat.getUpdateCountHistogram() + "" + sqlStat.getExecuteAndResultHoldTimeHistogram() + "
"); } }