ситуация: у нас есть веб-служба, работающая на tomcat, которая обращается к базе данных DB2 на AS400, мы используем драйверы JTOPEN для соединений JNDI, обрабатываемых tomcat. Для обработки транзакций и доступа к базе данных мы используем Spring.
Для каждой выбранной системы принимает JDBC-соединение из JNDI (т.е. из пула соединений), выполняет выборку и, в конце концов, закрывает ResultSet, Statement и освобождает Connection в этом порядке. Это проходит нормально, общая блокировка на столе исчезает.
Когда мы хотим выполнить обновление так же, как мы сделали с select (исключение для объекта ResultSet, у нас его нет в такой ситуации), после снятия блокировки подключения к JNDI для таблицы остается.
Если мы установим maxIdle = 0 для числа соединений в конфигурации JNDI, эта проблема исчезнет, но это ухудшит производительность, у нас есть около 100 пользователей в сети для этой службы, нам нужно несколько соединений, чтобы быть живыми в пуле.
Что вы предлагаете?