1

jbdcにマルチスレッドアクセスの問題があると聞きました。別の投稿でboneCPが推奨されていることも聞いたことがありますが、非同期のものに簡単で高性能な別のものを使用した人はいないかと思いました。

また、Apacheバージョンでは、Java 1.6以降では機能しない可能性があり、java.runtime.version:1.7.0_07-b11を使用しています。

4

1 に答える 1

1

実際に他のAPIを試した後、BoneCPに落ち着きました。私はこれをJava1.7で使用しており、同時実行性の高い状況でもうまく機能します。さらに、開発者は問題を報告するときに迅速に対応します。

以前はC3P0を使用していましたが、BoneCPに切り替えた後、いくつかの非常に奇妙なバグがなくなりました。C3P0を少し掘り下げてみると、ここ数年は手つかずのままで、開発が再開されたばかりであることがわかります。私のアプリケーションでは奇妙なときに壊れました。

MysqlConnectionPoolDataSource通常のMysqlJDBCパッケージのを使用します。次に、次のように設定します(必要に応じて設定を微調整できます)。

pbds = new BoneCPDataSource();      
pbds.setDatasourceBean(mysqlcpds);
pbds.setMinConnectionsPerPartition(1);              
pbds.setMaxConnectionsPerPartition(10);    
pbds.setIdleConnectionTestPeriodInMinutes(60);
pbds.setIdleMaxAgeInMinutes(240);
pbds.setPartitionCount(1);

次に、Connectionこのオブジェクトからsを取得します(スレッドセーフです)。複数のスレッドから同じコードを使用します。Java 7のtry-with-resourcesブロックは特に便利で、多くの定型文を回避します(finally不要であり、接続が閉じられることが保証されています)。

try( Connection conn = pbds.getConnection() ) { 

    ... do stuff with conn

} catch (SQLException e) {          
    e.printStackTrace();
} 
于 2013-03-23T03:54:10.450 に答える