我遇到连接池问题。使用tomcat8,primefaces 5.1和Eclipse。当我用单个用户测试我的代码时,它工作正常但是当我使用2个用户时,当user1正在进行时访问user2时,user1被卡住并且user2开始处理。当user2完成处理时,两个用户同时出来并且user1没有显示任何输出(user2正在获取部分数据)并且两个用户都得到了耗尽的结果集错误。这是我的连接池代码。
public GetConnection(){
try {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
dataSource1 = (DataSource) envContext.lookup("jdbc/DB1");
dataSource2 = (DataSource) envContext.lookup("jdbc/DB2");
dataSource3 = (DataSource) envContext.lookup("jdbc/DB3");
} catch (NamingException e) {
e.printStackTrace();
}
}
根据条件获得连接,
public Connection getConnections(int i) {
try {
if (i == 0) {
connection = dataSource1.getConnection();
} else if (i == 1) {
connection = dataSource2.getConnection();
} else {
connection = dataSource3.getConnection();
}
} catch (SQLException ex) {
addErrorMessage(ex.getMessage());
}
return connection;
}
我必须运行4个查询,为此我只创建一次连接和语句,但是有4个结果集,在finally块中关闭所有这些连接
finally{
if (rs != null) try { rs.close(); } catch (SQLException logOrIgnore) {}
if (rs1 != null) try { rs1.close(); } catch (SQLException logOrIgnore) {}
if (rs2 != null) try { rs2.close(); } catch (SQLException logOrIgnore) {}
if (rs3 != null) try { rs3.close(); } catch (SQLException logOrIgnore) {}
if (stmt != null) try { stmt.close(); } catch (SQLException logOrIgnore) {}
if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}
任何人都可以帮我解决这个问题吗?提前谢谢。
答案 0 :(得分:0)
我得到了这个问题的解决方案,我使用静态连接和其他变量删除解决了这个问题。感谢