葉明的javablog

          java學習天堂,個人關于其他blog:blog.javaworker.cn,歡迎大家訪問
          posts - 64, comments - 50, trackbacks - 0, articles - 3

          由于在JAVA自動獲得新聞,沒有建立web的環境,將建立的服務器放置在一臺服務器上,數據庫放在另一臺服務器上,結果造成使用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("在注冊驅動名稱的時間發生錯誤:"+e.getMessage(),e);
             }
                }
                if(connectionPool == null){
                 setupDriver(sqlJdbc);
                 //printDriverStats();
                }else{
                 System.out.print("連接池已經存在");
                }
                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("注冊連接池的時間發生錯誤:"+e.getMessage(),e);
            } catch (SQLException e) {
             logger.error("注冊連接池的時間發生錯誤:"+e.getMessage(),e);
            }
               }
           

          主站蜘蛛池模板: 沾化县| 建水县| 宁强县| 老河口市| 祁阳县| 龙江县| 新干县| 瑞昌市| 泰宁县| 长春市| 喜德县| 达孜县| 南昌县| 海原县| 南部县| 明光市| 柘荣县| 黎平县| 瓦房店市| 旺苍县| 昆山市| 蕲春县| 罗城| 长葛市| 永济市| 南靖县| 会泽县| 三都| 顺义区| 偏关县| 长岭县| 翁牛特旗| 乐安县| 泰顺县| 沅陵县| 峡江县| 清徐县| 彩票| 商都县| 子洲县| 辰溪县|