如鵬網 大學生計算機學習社區

          CowNew開源團隊

          http://www.cownew.com 郵件請聯系 about521 at 163.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

          公告

          “如鵬教育”(http://www.RuPeng.com )是一個為計算機、信息等IT類專業在校大學生服務的學習社區。 每周舉辦免費講座,為大一新生答疑解惑,幫大二、大三學生解決學習問題,幫同學提高實戰開發能力,幫大四學生增強求職技巧,成功應聘名企。

          常用鏈接

          留言簿(83)

          隨筆分類

          隨筆檔案

          新聞檔案

          相冊

          友情鏈接

          團隊成員

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          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等類。這些類采用了代理模式、裝飾者模式等設計模式,使得程序的可擴展性得到很大的提升。

          COWNEW團隊,最專業的開源團隊!官方網站: www.cownew.com

          posted on 2006-05-24 02:20 CowNew開源團隊 閱讀(950) 評論(1)  編輯  收藏

          評論

          # 請教中文亂碼的問題 re: JDBMonitor基本原理探究[未登錄] 2008-06-17 11:20 leon
          您好:
          搭建jdbmonitor成功后,用文件日志方式監聽,但是所有的中文都是亂碼,我用UltraEdit和記事本打開均是亂碼。但是看log4j的日志,均無亂碼。
          做過以下嘗試: 修改com.cownew.JDBMonitor.listenerImpl.FileDBListener.java,將 79行,即寫日志文件之前
          String s = info.toString();
          改為
          String s = new String(info.toString().getBytes(), "GBK");
          還是沒有用,請問這個是什么問題啊?
          急盼答復,謝謝您!!

          ps: 剛剛在留言板發了一條,可是提交之后就找不到了,只好再發一次,請見諒
            回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 德昌县| 色达县| 泰来县| 香格里拉县| 获嘉县| 渭南市| 正镶白旗| 来凤县| 伊川县| 毕节市| 翼城县| 修水县| 华容县| 金沙县| 绵竹市| 罗甸县| 南华县| 陕西省| 吴旗县| 桂东县| 富民县| 神农架林区| 钦州市| 若尔盖县| 天全县| 明溪县| 盖州市| 塘沽区| 肇东市| 通海县| 永吉县| 黄龙县| 锡林浩特市| 秀山| 上虞市| 绥滨县| 巴塘县| 丰宁| 伽师县| 肥东县| 肇庆市|