jdbmonitor(可以从www.cownew.com下载)是一个非常强大的数据库监控、日志工具,它的无侵入性是它最大的特点。所谓无侵入性指的是无需编写代码就可以为系统增加数据日监控、日志功能。那么它到底是怎么实现的呢?咱们来探索一下它的基本原理。
要明白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等类。这些类采用了代理模式、装饰者模式等设计模式,使得程序的可扩展性得到很大的提升。
闽公网安备 35060202000074号