Драйвер db2 jdbc не снимает блокировки таблиц - PullRequest
0 голосов
/ 19 марта 2010

ситуация: у нас есть веб-служба, работающая на tomcat, которая обращается к базе данных DB2 на AS400, мы используем драйверы JTOPEN для соединений JNDI, обрабатываемых tomcat. Для обработки транзакций и доступа к базе данных мы используем Spring.

Для каждой выбранной системы принимает JDBC-соединение из JNDI (т.е. из пула соединений), выполняет выборку и, в конце концов, закрывает ResultSet, Statement и освобождает Connection в этом порядке. Это проходит нормально, общая блокировка на столе исчезает.

Когда мы хотим выполнить обновление так же, как мы сделали с select (исключение для объекта ResultSet, у нас его нет в такой ситуации), после снятия блокировки подключения к JNDI для таблицы остается.

Если мы установим maxIdle = 0 для числа соединений в конфигурации JNDI, эта проблема исчезнет, ​​но это ухудшит производительность, у нас есть около 100 пользователей в сети для этой службы, нам нужно несколько соединений, чтобы быть живыми в пуле.

Что вы предлагаете?

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Звучит так, как будто автоматическая фиксация по умолчанию отключена и что код нигде не вызывает connection.commit(). Чтобы исправить это, настройте пул соединений так, чтобы он возвращал соединения только с autoCommit = true, или измените код JDBC, который фиксирует транзакцию в конце блока try, в котором было выполнено действие SQL.

0 голосов
/ 09 августа 2011

Взгляните на это .

Это помогло мне в том же случае.

...