2012-07-11 100 views
0

我想使用Commons Pool和DBCP實現連接池。我能夠建立到數據庫的連接,除了流量壓縮之外,一切都按預期工作。
這是我的配置:
- 下議院DBCP 1.4
- 共享池1.6
- MySQL連接的Java 5.1.21
- 在Windows Server上的MySQL服務器5.5 2008
- Java 1.6的
連接池的MySQL流量壓縮

請考慮此代碼片段實例化連接池:

private void setupDataSource(Hashtable<String, String> data) { 
    try 
    { 
     GenericObjectPool<Connection> pool = new GenericObjectPool<Connection>(); 
     pool.setMinIdle(5); 
     pool.setMaxActive(-1); 
     pool.setTestOnBorrow(true); 
     pool.setTimeBetweenEvictionRunsMillis(5000); 
     pool.setMinEvictableIdleTimeMillis(300000); 
     Properties props = new Properties(); 
     props.setProperty("user", "root"); 
     props.setProperty("password", "password"); 
     props.setProperty("useCompression", "true"); 

     ConnectionFactory cf = new DriverConnectionFactory(new com.mysql.jdbc.Driver(), 
        "jdbc:mysql://" + ip + ":" + port, 
        props); 

     KeyedObjectPoolFactory<String, GenericObjectPool<Connection>> kopf =new GenericKeyedObjectPoolFactory<String, GenericObjectPool<Connection>>(null, 20, GenericObjectPool.WHEN_EXHAUSTED_GROW, 20, true, false); 
     PoolableConnectionFactory pcf = new PoolableConnectionFactory(cf, 
       pool, 
       kopf, 
       "Select 1;", 
       false, 
       true); 

     PoolingDriver pd = new PoolingDriver(); 
     pd.registerPool("MyPool", pool); 
    }catch (Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
} 

然後,要獲得連接iu SE:

Connection conn = java.sql.DriverManager.getConnection("jdbc:apache:commons:dbcp:MyPool"); 

首先,有另一種方式來檢查,如果壓縮的作品,除了傳出的網絡流量MSQL工具比較?

爲了啓用壓縮,需要更改哪些內容?

感謝您的幫助

klib

+0

經過一番研究,我發現問題最可能的不是連接池,而是MySQL連接器。當使用連接器版本5.1.6壓縮工作得很好。任何想法爲什麼最新的連接器不能按預期工作? – klib009 2012-07-13 06:14:06

回答

1

現在,經過近一年,我已經測試了最新的連接器/ J(5.1.25)和問題不會再出現。由於我沒有改變任何東西,它看起來像連接器5.1.21是一種越野車。 順便說一下,在發行說明中沒有真正的Bugfix,它們只是'改進了壓縮行爲'。