Я получаю исключение MaxOpenPreparedStatement в своей программе. Я могу контролировать количество объектов в GenericObjectPool с помощью функций getNumActive()/getNumIdle(). Как я могу получить подключение & подготовленных пулов отчетов от org.apache.commons.dbcp.BasicDataSource объекта? Thanksdbcp: количество открытых подготовленных заявлений
ответ
Базовый источник данных DBCP предоставляет значение maxOpenPreparedStatements, с которым настроен источник данных.
Наличие этого исключения, кажется, указывает, что вы открываете слишком много заявлений и не закрывая их, однако:
Поскольку соединение обычно использует только один или два заявления в то время, это в основном используется для помогают обнаруживать утечки ресурсов.
Я не уверен в ответе на фактический вопрос , но максимально допустимое количество открытых PreparedStatements, как правило, довольно высока. Поэтому я сильно подозреваю, что техническая проблема, заставляя вас задать этот вопрос в том, что код JDBC не правильно закрывать все открытые заявления в finally
блоке в соответствии со следующим JDBC идиомы:
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
// ...
try {
connection = database.getConnection();
preparedStatement = connection.prepareStatement(SQL_STRING);
resultSet = preparedStatement.executeQuery();
// ...
} finally {
if (resultSet != null) try { resultSet.close(); } catch (SQLException ignore) {}
if (preparedStatement != null) try { preparedStatement.close(); } catch (SQLException ignore) {}
if (connection != null) try { connection.close(); } catch (SQLException ignore) {}
}
Вы могли бы быть в состоянии овладеть внутренними компонентами DBCP путем подклассификации BasicDataSource, а затем переопределить createPoolableConnectionFactory и заменить фабрику пулов инструкций тем, что вы создаете сами (и таким образом можете отслеживать).
Как и в случае с другими ответами здесь, это может означать, что подготовленные операторы остаются открытыми - в этом случае у вас будет такая же проблема, даже если вы выключите подготовленный оператор (или прекратите использование пула соединений вообще), что может облегчить отладку исходной задачи.
- 1. Использование подготовленных заявлений PDO
- 2. Способы принуждения подготовленных заявлений
- 3. Java-настройка подготовленных заявлений
- 4. real_escape_string против подготовленных заявлений
- 5. PHP Несколько подготовленных заявлений
- 6. Пример подготовленных заявлений
- 7. PHP разъяснения подготовленных заявлений
- 8. Несколько подготовленных заявлений или пакет
- 9. MySQL слишком много подготовленных заявлений
- 10. Предварительно определить инструкцию при использовании подготовленных заявлений
- 11. эмулированные подготовленные заявления против реальных подготовленных заявлений
- 12. MySQL подготовленных заявлений против хранимых процедур Производительность
- 13. PHP Проверка ошибок для PDO подготовленных заявлений
- 14. Какие ограничения применяются при использовании подготовленных заявлений?
- 15. Есть что-то вроде обратных подготовленных заявлений?
- 16. Mysqli абстракция, выборка массивов из подготовленных заявлений
- 17. Postgres Подготовленные транзакции против подготовленных заявлений
- 18. проверить результат из подготовленных заявлений PDO?
- 19. Проверка ошибок для подготовленных заявлений PDO
- 20. Нет результата при использовании подготовленных заявлений
- 21. Использование подготовленных заявлений в рамках выбранных параметров
- 22. Превышен регулятор ресурсов для «подготовленных заявлений»
- 23. Отключение подготовленных операторов в dbcp + spring + hibernate + jdbc?
- 24. Поведение вызываемых и подготовленных заявлений на сервере приложений
- 25. PHP - начало подготовленных заявлений, но они кажутся неудобными
- 26. разные матчи при использовании подготовленных заявлений на CHAR (3) колонка
- 27. Каков рекомендуемый способ инициализации и сохранения подготовленных заявлений в Go?
- 28. Получение данных, предоставленных пользователем: любое преимущество для подготовленных заявлений
- 29. Как отлаживать SQLSTATE [HY000]: Общие ошибки: 2031 в подготовленных заявлений
- 30. Должен ли я использовать real_escape_string при использовании подготовленных заявлений?
Это значение конфигурации, а не текущая статистика – dbf