葉明的javablog

          java學(xué)習(xí)天堂,個人關(guān)于其他blog:blog.javaworker.cn,歡迎大家訪問
          posts - 64, comments - 50, trackbacks - 0, articles - 3

          由于在JAVA自動獲得新聞,沒有建立web的環(huán)境,將建立的服務(wù)器放置在一臺服務(wù)器上,數(shù)據(jù)庫放在另一臺服務(wù)器上,結(jié)果造成使用JDBC速度緩慢,因此修改成連接池:

          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.SQLException;

          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;
          import org.apache.log4j.Logger;

          /**
           * @author Administrator
           *
           */
          public class DBConnectionFactory {
           /**
            * Logger for this class
            */
           private static final Logger logger = Logger
             .getLogger(DBConnectionFactory.class);

           private static ObjectPool connectionPool=null;
           private static String sqlJdbc = "";
              private static String sqlUser = "";
              private static String sqlPwd = "";
              @SuppressWarnings("unchecked")
           private static Class driverClass=null;


              public static void proDBConnectionFactory(){
               if(sqlJdbc.equals("")){
                sqlJdbc = "jdbc:jtds:sqlserver://27.0.0.1:1433/finance;tds=8.0;lastupdatecount=true";
               }
               if(sqlUser.equals("")){
                sqlUser = "sa";
               }
               if(sqlPwd.equals("")){
                sqlPwd = "11111";
               }
               initDataSource();
              }
               public synchronized static void initDataSource(){
                if(driverClass == null){
                 try {
              driverClass = Class.forName("net.sourceforge.jtds.jdbc.Driver");
             } catch (ClassNotFoundException e) {
              logger.error("在注冊驅(qū)動名稱的時間發(fā)生錯誤:"+e.getMessage(),e);
             }
                }
                if(connectionPool == null){
                 setupDriver(sqlJdbc);
                 //printDriverStats();
                }else{
                 System.out.print("連接池已經(jīng)存在");
                }
                try {
                      // printDriverStats();
                   } catch (Exception e) {
                       e.printStackTrace();
                   }  
               }
              
               public static Connection getConn(){
                proDBConnectionFactory();
                Connection conn = null;
                try {
                       conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:FinanceDBPool");
                   } catch(SQLException e) {
                       e.printStackTrace();
                   }
                   return conn;

               }
              
               public static void printDriverStats() throws Exception {
                   PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
                   ObjectPool connectionPool = driver.getConnectionPool("FinanceDBPool");
                   System.out.println("活動的連接: " + connectionPool.getNumActive());
                   System.out.println("空閑的連接: " + connectionPool.getNumIdle());
               }

              
               public static void setupDriver(String connectURI){
                try {
             connectionPool = new GenericObjectPool(null);
              ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,sqlUser,sqlPwd);
              @SuppressWarnings("unused")
             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("FinanceDBPool",connectionPool);
              driver.registerPool("FinanceDBPool",connectionPool);

            } catch (ClassNotFoundException e) {
             logger.error("注冊連接池的時間發(fā)生錯誤:"+e.getMessage(),e);
            } catch (SQLException e) {
             logger.error("注冊連接池的時間發(fā)生錯誤:"+e.getMessage(),e);
            }
               }
           

          主站蜘蛛池模板: 西平县| 定结县| 方正县| 右玉县| 浪卡子县| 屏南县| 白城市| 贵溪市| 神池县| 图们市| 濮阳市| 卫辉市| 鹤壁市| 庐江县| 怀仁县| 新田县| 南开区| 桐柏县| 房产| 肥西县| 巴楚县| 宜春市| 新龙县| 巴彦淖尔市| 双江| 通化市| 松溪县| 舞阳县| 阿坝县| 西吉县| 石河子市| 尚义县| 岫岩| 毕节市| 若尔盖县| 常德市| 南岸区| 许昌市| 松原市| 贵德县| 资中县|