葉明的javablog

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

          由于在JAVA自動(dòng)獲得新聞,沒(méi)有建立web的環(huán)境,將建立的服務(wù)器放置在一臺(tái)服務(wù)器上,數(shù)據(jù)庫(kù)放在另一臺(tái)服務(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("在注冊(cè)驅(qū)動(dòng)名稱的時(shí)間發(fā)生錯(cuò)誤:"+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("活動(dòng)的連接: " + 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("注冊(cè)連接池的時(shí)間發(fā)生錯(cuò)誤:"+e.getMessage(),e);
            } catch (SQLException e) {
             logger.error("注冊(cè)連接池的時(shí)間發(fā)生錯(cuò)誤:"+e.getMessage(),e);
            }
               }
           

          主站蜘蛛池模板: 黄石市| 红原县| 靖安县| 古交市| 施甸县| 乳山市| 绥宁县| 大荔县| 桦甸市| 鸡西市| 泰州市| 景德镇市| 六枝特区| 宁武县| 探索| 岗巴县| 长宁县| 库尔勒市| 昌平区| 洛南县| 浦城县| 绥芬河市| 高邑县| 巧家县| 大连市| 哈巴河县| 徐闻县| 五寨县| 茶陵县| 玛纳斯县| 万安县| 阿合奇县| 偏关县| 福鼎市| 西华县| 贵阳市| 绥阳县| 浦县| 桃江县| 益阳市| 内黄县|