從心開始

           

          DBCP數據庫連接池

          DBCP是Apache的一個開源項目:
          commons.dbcp.jar
          http://jakarta.apache.org/commons/dbcp/index.html

          DBCP依賴Apache的另外2個開源項目
          commons.collections.jar和commons.pool.jar

          下載這些包并將這些包的路徑添加到classpath中就可以使用dbcp做為項目中的數據庫連接池使用了。

          以下是我的連接池

          java 代碼
          1. package ??selfservice;????
            ???
            import ??java.io.FileNotFoundException;????
            import ??java.io.IOException;????
            import ??java.sql.Connection;????
            import ??java.sql.DriverManager;????
            import ??java.sql.ResultSet;????
            import ??java.sql.SQLException;????
            import ??java.sql.Statement;????
            ???
            import ??org.apache.commons.dbcp.ConnectionFactory;????
            import ??org.apache.commons.dbcp.DriverManagerConnectionFactory;????
            import ??org.apache.commons.dbcp.PoolableConnectionFactory;????
            import ??org.apache.commons.dbcp.PoolingDriver;????
            import ??org.apache.commons.pool.ObjectPool;????
            import ??org.apache.commons.pool.impl.GenericObjectPool;????
            ???
            ???
            public ??? class ??PoolManager? {??????
            ?????
            private ??? static ??String?????
            ????????????driver
            = ? " oracle.jdbc.driver.OracleDriver " ?,? // 驅動????
            ????????????url? = ?? " jdbc:oracle:thin:@192.168.0.40:1521:drcom " ?,? // URL????
            ????????????Name = ? " drcom " ?,? // 用戶名????
            ????????????Password = ? " drcom " ?;? // 密碼????
            ????????
            ?????
            private ??? static ??Class?driverClass? = ?? null ?;????
            ?????
            private ??? static ??ObjectPool?connectionPool? = ?? null ?;????
            ???
            ?????
            public ??PoolManager() {???????????
            ????}
            ???????
            ????????
            ?????
            /** ???
            ?????*?裝配配置文件???
            ?????*?initProperties???????
            ?????
            */
            ????
            ?????
            private ??? static ??? void ??loadProperties() {????
            ?????????
            try ?? {????
            ????????????java.io.InputStream?stream?
            = ?? new ??java.io.FileInputStream(? " config.properties " ?);????
            ????????????java.util.Properties?props?
            = ?? new ??java.util.Properties();????
            ????????????props.load(stream);????
            ????????????????
            ????????????driver?
            = ?props.getProperty(? " ORACLE_DRIVER " ?);????
            ????????????url?
            = ?props.getProperty(? " ORACLE_URL " ?);????
            ????????????Name?
            = ?props.getProperty(? " ORACLE_LOGIN_NAME " ?);????
            ????????????Password?
            = ?props.getProperty(? " ORACLE_LOGIN_PASSWORD " ?);????
            ????????????????
            ????????}
            ?? catch ??(FileNotFoundException?e)? {????
            ????????????System.out.println(?
            " 讀取配置文件異常 " ?);?????????????
            ????????}
            ?? catch ?(IOException?ie) {????
            ????????????System.out.println(?
            " 讀取配置文件時IO異常 " ?);????
            ????????}
            ????
            ????}
            ????
            ????????
            ?????
            /** ????
            ?????*?初始化數據源????
            ?????
            */
            ??????
            ?????
            private ??? static ??? synchronized ??? void ??initDataSource()? {?????????????
            ?????????
            if ??(driverClass? == ?? null ?)? {?????
            ?????????????
            try ?? {?????
            ????????????????driverClass?
            = ?Class.forName(driver);?????
            ????????????}
            ?? catch ??(ClassNotFoundException?e)? {?????
            ????????????????e.printStackTrace();????
            ????????????}
            ?????
            ????????}
            ?????
            ????}
            ?????
            ?????
            ?????
            /** ????
            ?????*?連接池啟動????
            ?????*?
            @throws ?Exception????
            ?????
            */
            ??????
            ?????
            public ??? static ??? void ??StartPool()? {????
            ????????loadProperties();????
            ????????initDataSource();?????
            ?????????
            if ??(connectionPool? != ?? null ?)? {?????
            ????????????ShutdownPool();?????
            ????????}
            ??????
            ?????????
            try ?? {?????
            ????????????connectionPool?
            = ?? new ??GenericObjectPool(? null ?);?????
            ????????????ConnectionFactory?connectionFactory?
            = ?? new ??DriverManagerConnectionFactory(url,?Name,?Password);?????
            ????????????PoolableConnectionFactory?poolableConnectionFactory?
            = ?? new ??PoolableConnectionFactory(connectionFactory,?connectionPool,?? null ?,?? null ?,?? false ?,?? true ?);?????
            ????????????Class.forName(?
            " org.apache.commons.dbcp.PoolingDriver " ?);?????
            ????????????PoolingDriver?driver?
            = ?(PoolingDriver)?DriverManager.getDriver(? " jdbc:apache:commons:dbcp: " ?);?????
            ????????????driver.registerPool(?
            " dbpool " ?,?connectionPool);??????????????????
            ????????????System.out.println(?
            " 裝配連接池OK " ?);?????
            ????????}
            ?? catch ??(Exception?e)? {?????
            ????????????e.printStackTrace();????
            ????????}
            ?????
            ????}
            ?????
            ?????
            ?????
            /** ????
            ?????*?釋放連接池????
            ?????
            */
            ??????
            ?????
            public ??? static ??? void ??ShutdownPool()? {?????
            ?????????
            try ?? {?????
            ????????????PoolingDriver?driver?
            = ?(PoolingDriver)?DriverManager.getDriver(? " jdbc:apache:commons:dbcp: " ?);?????
            ????????????driver.closePool(?
            " dbpool " ?);????
            ????????}
            ?? catch ??(SQLException?e)? {?????
            ????????????e.printStackTrace();????
            ????????}
            ?????
            ????}
            ?????????
            ?????
            ?????
            /** ????
            ?????*?取得連接池中的連接????
            ?????*?
            @return ????
            ?????
            */
            ??????
            ?????
            public ??? static ??Connection?getConnection()? {?????
            ????????Connection?conn?
            = ?? null ?;?????
            ?????????
            if ?(connectionPool? == ?? null ?)?????
            ????????????StartPool();?????
            ?????????
            try ?? {?????
            ????????????conn?
            = ?DriverManager.getConnection(? " jdbc:apache:commons:dbcp:dbpool " ?);?????
            ????????}
            ?? catch ??(SQLException?e)? {?????
            ????????????e.printStackTrace();????
            ????????}
            ?????
            ?????????
            return ??conn;?????
            ????}
            ?????
            ????????
            ?????
            /** ???
            ?????*?獲取連接???
            ?????*?getConnection???
            ?????*?
            @param ?name???
            ?????*?
            @return ???
            ?????
            */
            ????
            ?????
            public ??? static ??Connection?getConnection(String?name) {????
            ?????????
            return ??getConnection();????
            ????}
            ????
            ?????
            /** ???
            ?????*?釋放連接???
            ?????*?freeConnection???
            ?????*?
            @param ?conn???
            ?????
            */
            ????
            ?????
            public ??? static ??? void ??freeConnection(Connection?conn) {????
            ?????????
            if ?(conn? != ?? null ?) {????
            ?????????????
            try ?? {????
            ????????????????conn.close();????
            ????????????}
            ?? catch ??(SQLException?e)? {??????????????????
            ????????????????e.printStackTrace();????
            ????????????}
            ????
            ????????}
            ????
            ????}
            ????
            ?????
            /** ???
            ?????*?釋放連接???
            ?????*?freeConnection???
            ?????*?
            @param ?name???
            ?????*?
            @param ?con???
            ?????
            */
            ????
            ?????
            public ??? static ??? void ??freeConnection?(String?name,Connection?con) {????
            ????????freeConnection(con);????
            ????}
            ????
            ????????
            ?????
            /** ???
            ?????*?例子???
            ?????*?main???
            ?????*?
            @param ?args???
            ?????
            */
            ????
            ?????
            public ??? static ??? void ??main(String[]?args)? {????????????
            ?????????
            try ?? {????
            ????????????Connection?conn?
            = ?PoolManager.getConnection();????
            ?????????????
            if ?(conn? != ?? null ?) {????
            ????????????????Statement?statement?
            = ?conn.createStatement();????
            ????????????????ResultSet?rs?
            = ?statement.executeQuery(? " select?*?from?tblgxinterface " ?);????
            ?????????????????
            int ??c? = ?rs.getMetaData().getColumnCount();????
            ?????????????????
            while ?(rs.next()) {???????????????????????
            ????????????????????System.out.println();????
            ?????????????????????
            for ?(? int ??i = ? 1 ?;i <= c;i ++ ) {????
            ????????????????????????System.out.print(rs.getObject(i));????
            ????????????????????}
            ????
            ????????????????}
            ????
            ????????????????rs.close();????
            ????????????}
            ????
            ????????????PoolManager.freeConnection(conn);????
            ????????}
            ?? catch ??(SQLException?e)? {??????????????
            ????????????e.printStackTrace();????
            ????????}
            ????
            ???
            ????}
            ????
            ???
            }
            ???
            ?

          posted on 2007-11-05 18:15 飄雪 閱讀(1563) 評論(0)  編輯  收藏 所屬分類: JAVA技術

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類(11)

          隨筆檔案(13)

          收藏夾

          firends

          搜索

          最新評論

          • 1.?re: udp及tcp穿越NAT
          • 您上述提到的是互聯網之間的公網與私網之間的NAT穿越,3g終端可以通過這種方式實現嗎?還有3g移動設備的IP是動態分配的,我怎么才能在公網服務器找到這個3G終端?
          • --svurm
          • 2.?re: udp及tcp穿越NAT
          • TCP穿越針對的是公網IP,而這個公網ip進過幾個NAT,多少層映射到局域網客戶端上對大洞無影響,因為這些映射是nat完成的,一層,二層,三層,最終都映射到公網ip上,所以幾層NAT對打洞并無影響。
          • --lch
          • 3.?re: udp及tcp穿越NAT
          • 您好,感謝您提供的好介紹。請問:如果P2P的兩點之間,存在3-4個NAT,P2P也可以通起來嗎?從您對NAT的理解,如果通信兩端之間存在4個NAT,對那些應用有影響?
          • --xujf
          • 4.?re: 系統時間修改方法
          • good
          • --jone
          • 5.?re: udp及tcp穿越NAT
          • 評論內容較長,點擊標題查看
          • --...

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 行唐县| 凌源市| 沂源县| 四会市| 花垣县| 锦州市| 通州区| 大足县| 台中市| 团风县| 西昌市| 加查县| 岚皋县| 若羌县| 特克斯县| 平谷区| 教育| 黔南| 黔东| 鲁甸县| 什邡市| 巩义市| 烟台市| 五家渠市| 内丘县| 丰顺县| 霸州市| 龙口市| 和政县| 东宁县| 米林县| 卢龙县| 张家界市| 尉犁县| 宜兴市| 兖州市| 定结县| 凯里市| 翁牛特旗| 大洼县| 建平县|