Было бы полезно узнать больше о сценарии, где вам нужно позвонить WSCallHelper.clearStatementCache(connection)
, но на основе того, что вы описали, я буду предполагать, что он вызывается только по пути ошибки.
В Liberty нет API для программной очистки кэша операторов. Тем не менее, кешированные операторы будут сопоставляться только в том случае, если несколько свойств такие же, как: строка SQL, стойкость RS, схема, уровень изоляции и несколько других.
Почему вам не нужно clearStatementCache:
Пример сценария вы описали для вызова clearStatementCache, когда пакет не найден в БД, но пакет должен быть отражен в любой строке SQL или схемы. Поэтому, предполагая, что ваше приложение не повторяет неудачную строку SQL, вам не нужно вообще вызывать clearStatementCache.
Если вы действительно хотите, чтобы очистить кэш заявление:
Как определено в спецификации JDBC, заявления являются дочерними объектами соединения. Таким образом, творческий способ очистки кэша операторов состоит в том, чтобы избавиться от связи с плохими инструкциями. Вызов connection.close()
может не выполнить этого, потому что соединения могут быть объединены сервером приложений, но вызов connection.abort()
избавится от базового соединения и, следовательно, очистит кеш оператора.