0

Commons Pool と DBCP を使用して接続プールを実装しようとしています。データベースへの接続を確立でき、トラフィックの圧縮を除いて、すべてが期待どおりに機能します。
これは私の構成です:
- Commons DBCP 1.4
- Commons Pool 1.6
- MySQL Connector Java 5.1.21
- Windows Server 2008 上の MySQL Server 5.5
- Java 1.6

接続プールをインスタンス化するには、次のコード スニペットを検討してください。

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();
    }
}

次に、接続を取得するために次を使用します。

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

まず、MSQL ツールで発信ネットワーク トラフィックを比較する以外に、圧縮が機能しているかどうかを確認する別の方法はありますか?

圧縮を有効にするには、何を変更する必要がありますか?

ご協力いただきありがとうございます

klib

4

1 に答える 1

2

現在、ほぼ 1 年後、最新の Connector/J (5.1.25) をテストしましたが、問題は発生しなくなりました。何も変更していないので、コネクタ 5.1.21 にバグがあったようです。ところで、リリース ノートには実際のバグ修正はなく、「圧縮動作が改善された」だけです。

于 2013-06-26T05:00:24.103 に答える