Java JDBC: Reply.fill ()

Я время от времени получаю следующее исключение:

com.ibm.db2.jcc.b.gm: [jcc][t4][2030][11211][3.50.152] ошибка связи произошел во время операций на базовом сокете соединения, входном потоке сокета или потоке вывода сокета. Ошибочное местоположение: Reply.fill (). Сообщение: Соединение сбрасывается. ERRORCODE =-4499, SQLSTATE=08001

Проблема состоит в том, что, код выполняется успешно в течение достаточно долгого времени, и затем внезапно я получаю это исключение. Однако это выполняет perfrectly, когда я выполняю код снова.

Мог кто-то говорить мне, что могло быть неправильным и предоставить мне некоторые указатели для разрешения этого.

7
задан skaffman 14 March 2011 в 16:35
поделиться

2 ответа

Это признак неправильного закрытия / освобождения ресурсов JDBC. Вам необходимо получить и закрыть все ресурсы JDBC в минимально возможной области, т.е. вам нужно закрыть их в обратном порядке в блоке finally в try блок того же блока метода, что и вы их приобрели. Например.

Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
    connection = database.getConnection();
    statement = connection.createStatement();
    resultSet = statement.executeQuery(SQL);
    // ...
} finally {
    if (resultSet != null) try { resultSet.close(); } catch (SQLException logOrIgnore) {}
    if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
    if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}

Если вы не закроете их как можно скорее, БД рано или поздно возьмет это в свои руки, и ваше приложение может рано или поздно сломаться, как вы сами столкнулись.

Чтобы повысить производительность подключения, используйте пул подключений - вам все равно нужно получать и закрывать их так же, как описано выше! Теперь это просто реализация пула соединений, которая под капотами беспокоит , на самом деле закрывает соединение или нет.

3
ответ дан 7 December 2019 в 14:34
поделиться

Похоже, время ожидания соединения прервано. Я не совсем то, где проблема. Возможно, это связано с подключением к вашему серверу БД. Извините, я больше не могу вам помочь, но надеюсь, что это поможет.

0
ответ дан 7 December 2019 в 14:34
поделиться
Другие вопросы по тегам:

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