Как обрабатывать доступ нескольких пользователей к веб-странице одновременно без закрытия сокета на любой стороне пользователя
У меня возникла проблема, когда я попытался войти в систему двух или более веб-браузеров / одинаковых браузеров с вкладкой "Разница" на одной и той же веб-странице.
Io исключение: гнездо закрыто
в любой из сторон, когда обновить / войти в то же время.
Должен ли я использовать многопоточное открытое соединение? Если да, как это сделать? Кто-нибудь может помочь с этой проблемой? Программа написана на JSP.
1 ответ
Решение
Убедитесь, что вы не декларируете и не храните SQL Connection
как статическая или переменная экземпляра в любом месте вашего кода.
Например, это плохо
public class SomeClass {
private Connection connection;
// Or
private static Connection connection;
}
Он должен быть объявлен, создан и закрыт в том же блоке метода, в котором вы выполняете SQL-запрос.
Итак, это хорошо:
public class SomeDAO {
public SomeEntity find(Long id) throws SQLException {
Connection connection = null;
// ...
try {
connection = database.getConnection();
// ...
}
finally {
// ...
if (connection != null) try { connection.close(); } catch(SQLException ignore) {}
}
return someEntity;
}