【发布时间】:2011-02-28 02:17:04
【问题描述】:
我的 Web 应用程序中的数据库连接存在严重问题。由于我从单例数据库类中为整个应用程序使用单个数据库连接,因此如果我尝试并发数据库操作(两个用户),数据库会回滚事务。 这是我使用的静态方法:
所有线程/servlet 调用静态 Database.doSomething(...) 方法,这些方法又调用下面的方法。
private static /* synchronized*/ Connection getConnection(final boolean autoCommit) throws SQLException {
if (con == null) {
con = new MyRegistrationBean().getConnection();
}
con.setAutoCommit(true); //TODO
return con;
}
推荐的管理这个数据库连接的方法是什么,这样我就不会遇到同样的问题。
【问题讨论】:
-
检查数据库查询日志,或者开始制作自己的日志,看看出了什么问题。由于两个并发用户,没有数据库永远不会回滚,您的查询可能有错误或丢失提交。
标签: multithreading postgresql servlets jdbc