Я использую следующий фрагмент для соединения с базой данных
private Connection getConnection(JspWriter out, String host, String dbname,
String port, String user, String pwd) {
try {
if (host == null || dbname == null) {
throw new IllegalArgumentException("Invalid host or dbname");
}
String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname;
String clazz = "org.gjt.mm.mysql.Driver";
Driver driver = (Driver) Class.forName(clazz).newInstance();
DriverManager.registerDriver(driver);
return DriverManager.getConnection(url, user, pwd);
} catch (Exception e) {
System.out.println("Exception occured while get connection :"+ e);
}
return null;
}
После выполнения запроса я закрываю объект подключения
private JSONArray executeQuery(JspWriter out, Connection connection,String query, Object[] params) throws Exception {
PreparedStatement st = null;
ResultSet rs = null;
try {
//connection = getConnection();
st = connection.prepareStatement(query);
int c = 1;
for (Object param : params) {
st.setObject(c++, param);
}
rs = st.executeQuery();
if (rs == null) {
return null;
}
ResultSetMetaData meta = rs.getMetaData();
List<String> columns = getColumnNames(meta);
JSONArray json = new JSONArray();
while (rs.next()) {
JSONObject obj = new JSONObject();
for (String column : columns) {
obj.put(column, rs.getObject(column));
}
json.put(obj);
}
return json;
} catch (Exception e) {
System.out.println("Exception occurred while execute query" + e);
} finally {
try {
if (rs != null) {
rs.close();
}
} catch(Exception ex) {
//Print exception
}
try {
if (st != null) {
st.close();
}
} catch(Exception ex) {
//Print exception
}
try {
if(connection != null) {
connection.close();
}
if(connection.isClosed()) {
connection = null;
}
} catch(Exception ex) {
//Print exception
}
}
return null;
}
Хотя я закрыл соединение методом .close()
. И я проверяю, что соединение закрывается с помощью connection.closed()
, и оно возвращает true, указывая, что соединение успешно закрыто.
Как только предел соединения достигает максимума - я получаю DB Connection Exhausted
, и мой сервер не может устанавливать дальнейшие соединения.
Может кто-нибудь помочь мне в дальнейшей отладке, пожалуйста.