mysql で JDBC 接続プールを使用しています。これは私のコードです
private static DataSource _ds;
/**
* create the data source if it doesn't exist
*/
private DataSource getDataSource() throws FileNotFoundException,
IOException, URISyntaxException
{
if (_ds != null)
return _ds;
PoolProperties p = new PoolProperties();
p.setUrl(url);
p.setDriverClassName(driver);
p.setUsername(username);
p.setTestOnBorrow(true);
if (password != null)
{
p.setPassword(password);
}
p.setValidationQuery(validationQuery);
p.setJdbcInterceptors(JDBC_INTERCEPTOR);
DataSource datasource = new DataSource();
datasource.setPoolProperties(p);
_ds = datasource;
return datasource;
}
/**
* gets a connection from the JDBC pool
*
* @throws SQLException
* @throws IOException
* @throws FileNotFoundException
* @throws URISyntaxException
*/
public Connection getConnection() throws SQLException,
FileNotFoundException, IOException, URISyntaxException
{
Connection con = getDataSource().getConnection();
con.setAutoCommit(false);
return con;
}
そして、私が行う接続を使用したいときはいつでも:
con = getInstance().getConnection();
stmt = con.createStatement();
resultSet = stmt.executeQuery(selectQuery);
問題は、クエリの結果がリアルタイムではないことです。つまり、DB で何かを変更してコミットすると、Java のクエリは変更を取得しません。DB が別のアプリから変更された場合も同じことが起こります。
注 : 変更はしばらくすると反映されます。または、Tomcat を再起動すると反映されます。
私のコードに何か問題がありますか? とにかくこのエラーを修正するには?
ありがとうございました