快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
SourceConnectionCall(DataSource dataSource) :     call(Connection+ DataSource.getConnection (..))      && target(dataSource);   /** A call to establish a connection using a URL string */   public pointcut directConnectionCall(String url) :     (call(Connection+ Driver.connect(..)) || call(Connection+       DriverManager.getConnection(..))) &&     args(url, ..);   /** A database connection call nested beneath another one    * (common with proxies).    */     public pointcut nestedConnectionCall() :     cflowbelow (dataSourceConnectionCall(*) ||      directConnectionCall (*));   /** Monitor data source connections using    *  the worker object pattern    */   Connection around(final DataSource dataSource) :    dataSourceConnectionCall(dataSource)     && !nestedConnectionCall() {      RequestContext requestContext =      new ConnectionRequestContext() {       public Object doExecute() {         accessingConnection(dataSource);           // set up stats early in case needed         Connection connection = proceed(dataSource);         return addConnection(connection);       }     };       return (Connection)requestContext.execute();   }   /** Monitor url connections using the worker object pattern */    Connection around(final String url) : directConnectionCall(url)      && !nestedConnectionCall() {     RequestContext requestContext =      new ConnectionRequestContext() {        public Object doExecute() {          accessingConnection(url);         Connection connection = proceed(url);         return addConnection (connection);       }     };     return (Connection)requestContext.execute();   }   /** Get stored name associated with this data source. */   public String getDatabaseName(Connection connection) {     synchronized (connections) {       return (String)connections.get (connection);     }   }   /** Use common accessors to return meaningful name    * for the resource accessed by this data source.    */   public String getNameForDataSource (DataSource ds) {     // methods used to get names are listed in descending     // preference order     String possibleNames[] =      { "getDatabaseName",         "getDatabasename",        "getUrl", "getURL",          "getDataSourceName",        "getDescription" };       String name = null;     for (int i=0; name == null &&      i<possibleNames.length; i++) {         try {         Method method =           ds.getClass().getMethod(possibleNames[i], null);          name = (String)method.invoke(ds, null);       } catch (Exception e) {         // keep trying       }     }     retur

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号