快速业务通道

AOP@Work: 用AspectJ进行性能监视,第1部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
&& target (connection);   /**    * Track origin of statements, to properly    * associate statistics even in    * the presence of wrapped connections    */   after(Connection connection) returning (Statement statement):    callCreateStatement (connection) {     synchronized (JdbcStatementMonitor.this) {       statementCreators.put(statement, connection);      }   }   /**    * A call to prepare a statement.    * @param sql The SQL string prepared by the statement.    */   public pointcut callCreatePreparedStatement(String sql):     call(PreparedStatement+ Connection.*(String, ..))        && args(sql, ..);   /** Track SQL used to prepare a prepared statement */   after(String sql) returning (PreparedStatement statement):    callCreatePreparedStatement (sql) {     setUpStatement(statement, sql);   }     protected abstract class StatementRequestContext    extends RequestContext {     /**      * Find statistics for this statement, looking for its      * SQL string in the parent request''s statistics context      */     protected PerfStats lookupStats() {       if (getParent() != null) {         Connection connection = null;          String sql = null;         synchronized (JdbcStatementMonitor.this) {           connection =             (Connection) statementCreators.get(statement);            sql = (String) statementSql.get(statement);         }          if (connection != null) {           String databaseName =            JdbcConnectionMonitor.aspectOf ().             getDatabaseName(connection);             if (databaseName != null && sql != null) {              OperationStats opStats =               (OperationStats) getParent().getStats();              if (opStats != null) {               ResourceStats dbStats =                opStats.getDatabaseStats (databaseName);               return dbStats.getRequestStats(sql);             }            }         }       }        return null;     }   }   /**    * To group sensibly and to avoid recording sensitive data,    * I don''t record the where clause (only used for dynamic    * SQL since parameters aren''t included    * in prepared statements)    * @return subset of passed SQL up to the where clause    */    public static String stripAfterWhere(String sql) {     for (int i=0; i<sql.length()-4; i++) {       if (sql.charAt(i)==''w'' || sql.charAt(i)==        ''W'') {         if (sql.substring(i+1, i+5).equalsIgnoreCase(           "here"))          {           sql = sql.substring(0, i);         }       }      }     return sql;   }     private syn

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号