<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
    • 評論內容較長,點擊標題查看
    • --...

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 华人在线精品免费观看| 久久综合图区亚洲综合图区| 亚洲中文字幕一区精品自拍| 日韩视频免费在线观看| 亚洲综合精品香蕉久久网| 特级毛片aaaa级毛片免费| 女性无套免费网站在线看| 亚洲日韩国产二区无码| 国产成人精品123区免费视频| 久久精品国产亚洲av天美18 | 看全免费的一级毛片| 亚洲人成人无码网www电影首页| 91在线手机精品免费观看| jizzjizz亚洲日本少妇| 亚洲精品成人无限看| 最近中文字幕mv免费高清电影| 国产亚洲精品免费| 亚洲精品视频在线免费| 亚洲 国产 图片| 可以免费看的卡一卡二| 一出一进一爽一粗一大视频免费的| 久久亚洲私人国产精品| 午夜国产大片免费观看| 中文字幕免费高清视频| 三年片在线观看免费观看大全中国| 亚洲性色高清完整版在线观看| 免费v片在线观看品善网| 最近新韩国日本免费观看| 日本在线观看免费高清| 亚洲一区二区三区免费在线观看| 中文字幕亚洲电影| 大学生高清一级毛片免费| 光棍天堂免费手机观看在线观看| 亚洲AV性色在线观看| 亚洲精品美女在线观看| 亚洲区小说区图片区QVOD| 国产成人免费一区二区三区| 69天堂人成无码麻豆免费视频| 国产免费无码AV片在线观看不卡| 免费国产黄网站在线看| 亚洲精品自偷自拍无码|