扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年9月8日
关键字: JDBMonitor
要明白JDBMonitor的工作原理,必须首先弄明白JDBC驱动的工作原理:所有的JDBC驱动都实现java.sql.Driver接口,此接口有两个重要方法:Connection connect(String url, java.util.Properties info),boolean acceptsURL(String url)。
JDBC中有个DriverManager类,它有一个重要方法,registerDriver(java.sql.Driver driver)
所有的JDBC驱动都要调用此方法,这样才能将注册到驱动管理器中。
当用户调用DriverManager.getConnection("jdbc:……")的时候,DriverManager就把用户穿过来的连接字符串“jdbc:……”发给每个注册的驱动Driver的acceptsURL方法做为参数,驱动Driver就调用这个Driver的connect方法然后将方法的返回值直接做为自己的返回值。
更详细的解释请查看JDBC的JavaDoc,或者参考如下文章:http://www.cntopedu.cn/cntopedu_html_itxuetang/200562963708.asp
JDBMonitor写了自己的JDBCDriver:DBDriver,这个DBDriver识别所有以listenerconfig=开头的jdbc连接字符串,这样如果您修改了您系统的JDBC连接字符串并添加listenerconfig=等部分以后,此url就不会被您原来的JDBC驱动认识,耳反而被DBDriver认识,这样每次的数据库连接调用也都通过DBDriver以及相关的类来进行(比如DBPreparedStatement等),这些类首先先把通过的数据库调用记录下来,然后再转发给真正的数据库驱动,这样就达到了拦截任何JDBC调用的目的。更相信内容,请参考com.cownew.JDBMonitor.jdbc包下的DBDriver、DBConnection、DBStatement、DBPreparedStatement等类。这些类采用了代理模式、装饰者模式等设计模式,使得程序的可扩展性得到很大的提升。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者