我有一个 REST 服务架构,它使用这种方法将请求路由到一个类。此方法打开数据库连接,查询值,最后关闭数据库连接。之后,从数据库值构造 JSON 并通过 REST 返回。
public HashMap<Integer, Artifact> queryDBValues(String userNo) {
DAO dao = getDAO(DB1);
Connection connection = dao.instantiateConnection();
ResultSet resultSet = null;
Statement statement = null;
HashMap<Integer, Artifact> artifacts = new HashMap<Integer, Artifact>();
try {
statement = connection.createStatement();
String stmntStr = "select * from myTable";
resultSet = statement.executeQuery(stmntStr);
int i = 0;
while (resultSet.next()) {
Artifact artifact = new Artifact();
artifact.setArtifactId(resultSet.getString("id"));
artifacts.put(i, artifact);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
dao.closeSQLComponents(resultSet, connection);
}
return artifacts;
}
DAO 是一个抽象类,它基于 getDAO() 中传递的值进行实例化。我这样做是因为我连接到多个数据库,并且与扩展此类的类连接和断开连接。
连接后我从 mysql 数据库收到错误消息:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:数据源拒绝建立连接,来自服务器的消息:“连接太多”
连接最终被关闭。从长远来看,我计划使用 c3p0 连接池。这是否足以在使用率低的情况下暂时回收连接?