Пишу учебный проект. Внутри одного из сервлетов происходит обращение к ServletContext для получения атрибута, хранящего пул соединений. Учитывая, что к ServletContext имеют доступ не только несколько потоков одного сервлета, но и другие сервлеты, требующие соединение с базой данных, нужно ли задумываться о потокобезопасности пула потоков? Т.е. теоретически может возникнуть ситуация, когда к одному и тому же объекту Connection из пула соединений обратятся из разных потоков и возникает вопрос о том, как этого избежать.
Пример кода:
ServletContext ctx = getServletContext();
ConnectionPool pool = (ConnectionPool) ctx.getAttribute("ConnectionPool");
Connection connection = pool.getConnection();
ctx.setAttribute("ConnectionPool", pool);
UserDAO uDao = new UserDAO(connection);
request.setCharacterEncoding("utf-8");
String login = request.getParameter("Login");
String password = request.getParameter("Password");
User user = uDao.getDataByPrimaryKey(login);
if (user != null & user.getPassword() == password) {
HttpSession session = request.getSession();
session.setAttribute("user", user);
}
pool.putConnection(connection);
ctx.setAttribute("ConnectionPool", pool);