@EgorSvinarev

Нужно ли заботиться о потокобезопасности пула соединений?

Пишу учебный проект. Внутри одного из сервлетов происходит обращение к 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);
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы