Если предположить, что это BasicDataSource
от DBCP , то да, вы используете пул соединений.Однако при каждом подключении вы создаете новый пул соединений.Вы не объединяете соединения из одного пула.Вам нужно создать пул соединений только один раз при запуске приложения и получать от него все соединения.Вы также не должны хранить соединение как переменную экземпляраВы также должны закрыть соединение, оператор и набор результатов, чтобы обеспечить правильное закрытие ресурсов, в том числе в случае исключений.* В этом полезна инструкция * 7 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - «« 1010 * * 1011 »).
(при необходимости это может быть реорганизовано как абстрактная фабрика для улучшения подключаемости)
и
private static final String SQL_EXIST = "SELECT * FROM users WHERE username=? AND password=?";
public boolean exist(User user) throws SQLException {
boolean exist = false;
try (
Connection connection = Database.getConnection();
PreparedStatement statement = connection.prepareStatement(SQL_EXIST);
) {
statement.setString(1, user.getUsername());
statement.setString(2, user.getPassword());
try (ResultSet resultSet = preparedStatement.executeQuery()) {
exist = resultSet.next();
}
}
return exist;
}
, которые должны использоваться следующим образом:
try {
if (!userDAO.exist(username, password)) {
request.setAttribute("message", "Unknown login. Try again.");
request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
} else {
request.getSession().setAttribute("user", username);
response.sendRedirect("userhome");
}
} catch (SQLException e) {
throw new ServletException("DB error", e);
}
В реальной среде Java EE вы должны делегировать создание DataSource
серверу контейнера / приложения и получить его из JNDI.В случае Tomcat см. Также, например, этот документ: http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html