QueryRunner クラスで DbUtils ライブラリを使用してクエリを実行しています。私のDbUtilsドキュメントの理解から、接続を閉じることを心配する必要はありません。ただし、何らかの理由で、接続が自動的に、または手動で閉じられません。これが私のコードです:
public static DataSource createDataSource() {
BasicDataSource d = new BasicDataSource();
d.setDriverClassName(Globals.getInstance().getKonfiguracija().dajPostavku("driver"));
d.setUsername(Globals.getInstance().getKonfiguracija().dajPostavku("dbUsername"));
d.setPassword(Globals.getInstance().getKonfiguracija().dajPostavku("dbPassword"));
d.setUrl(Globals.getInstance().getKonfiguracija().dajPostavku("serverDatabase"));
return d;
}
public static void insertSQL(String sql)
{
DataSource dataSource = createDataSource();
QueryRunner qr = new QueryRunner(dataSource);
try {
int inserts = qr.update(sql);
qr.getDataSource().getConnection().close();
} catch (SQLException ex) {
Logger.getLogger(DBController.class.getName()).log(Level.SEVERE, null, ex);
}
}
私は定期的にinsertSQLメソッドを呼び出すスレッドを持っているので、しばらくすると「接続が多すぎます」というエラーが発生します。Tomcatの最新バージョンを使用しており、データベースはMYSQLです。