Как обрабатывать доступ нескольких пользователей к веб-странице одновременно без закрытия сокета на любой стороне пользователя

У меня возникла проблема, когда я попытался войти в систему двух или более веб-браузеров / одинаковых браузеров с вкладкой "Разница" на одной и той же веб-странице.

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;
    }

Смотрите также:

Другие вопросы по тегам