<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    從心開始

     

    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 飄雪 閱讀(1560) 評論(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
    • 評論內容較長,點擊標題查看
    • --...

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲色大成网站www久久九| 国产特黄特色的大片观看免费视频 | 久久久久久久岛国免费播放| 亚洲日本香蕉视频观看视频| 日本免费一区二区三区最新vr| 伊人久久大香线蕉免费视频| 亚洲五月综合网色九月色| 亚洲成a人无码av波多野按摩| 久久免费视频99| 色偷偷尼玛图亚洲综合| 亚洲爱情岛论坛永久| 国产精品99久久免费| 无码精品人妻一区二区三区免费看| 亚洲色无码专区一区| 亚洲成a人片在线观看无码| 韩国欧洲一级毛片免费| 免费观看一区二区三区| 亚洲s码欧洲m码吹潮| 亚洲黄色在线视频| 亚洲国产精品一区二区三区久久 | 最近免费中文字幕视频高清在线看| 国产精品1024在线永久免费| 中文字幕无码亚洲欧洲日韩| 久久精品亚洲综合一品| 亚洲国产香蕉人人爽成AV片久久 | 中文字幕亚洲无线码| 麻豆国产入口在线观看免费| 国产在线一区二区综合免费视频| 精品久久久久久亚洲中文字幕| 亚洲另类视频在线观看| 亚洲av无码一区二区三区乱子伦| 夜色阁亚洲一区二区三区| 国产v精品成人免费视频400条| 国精产品一区一区三区免费视频| 国产成人亚洲精品蜜芽影院| 亚洲一级毛片在线播放| 亚洲AV人无码激艳猛片| 亚洲无人区一区二区三区| 亚洲成A人片在线观看无码3D | 亚洲一区二区女搞男| 亚洲 小说区 图片区 都市|