Ошибка «Invalid operation: statement is closed»

При работе некоторых приложений, функционирующих на WAS и взаимодействующих с БД, иногда возникает следующая ситуация. Когда достаточно долго не запрашивается приложение, WAS, перед тем как отдать соединение из пула соединений источника данных (DataSource), не проверяет состояние соединения и отдает негодное.

Это приводит к периодическим ошибкам “Error closing a JDBC child wrapper … Invalid operation: statement is closed. ERRORCODE=-4470, SQLSTATE=null“, которые появляются в логах сервера приложений. Ниже приведен пример такой ошибки.

В этом случае надо на DataSource включить периодическую проверку существующих соединений из пула. Для этого, в административной консоли WAS выбрать:

Ресурсы -> JDBC -> Источники данных -> Имя_источника_данных -> в секции “Дополнительные свойства” выбрать раздел “Свойства источника данных WebSphere Application Server“.

В англоязычном варианте административной консоли:

Resources JDBC Data Sources > data_source > [Additional Properties] Connection pool properties.

SELECT CURRENT SQLID

Активируйте опцию “Проверить существующие соединения из пула” и укажите необходимую периодичность опроса. При использовании СУБД DB2 менять текст запроса не требуется. После чего сохраните изменения в конфигурации, при необходимости синхронизируйте изменения с узлами и перезапустите целевой сервер приложений.

VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)
Tagged with: , , ,
Posted in WebSphere Application Server, Troubleshooting

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Language: