forum.bitel.ru http://forum.bitel.ru/ |
|
Незакрытые preparedStatement (CRM) http://forum.bitel.ru/viewtopic.php?f=22&t=7369 |
Страница 1 из 12 |
Автор: | Cromeshnic [ 01 ноя 2012, 07:31 ] |
Заголовок сообщения: | Незакрытые preparedStatement |
В логах постоянно проскакивают подобные сообщения: Код: scheduler 11-01/09:45:31 ERROR [pool-2-thread-10] DefaultServerSetup - Many statements was open at connection close: com.mysql.jdbc.ServerPreparedStatement[2045] - SELECT * FROM dispatch_dispatch LEFT JOIN dispatch_sender_type ON dispatch_dispatch.sender_type_id=dispatch_sender_type.id ORDER BY dispatch_dispatch.title <...> java.lang.RuntimeException at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:480) at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:47) at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:261) at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37) at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:396) at ru.bitel.bgbilling.plugins.dispatch.server.DispatchWorker.executeTask(DispatchWorker.java:126) at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:74) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Сами запросы могут быть разными. Иногда это запросы из моих скриптов, иногда - в коде разработчиков. Причина - незакрытые PreparedStatement-ы. Например, в данном случае: ru.bitel.bgbilling.plugins.dispatch.server.dao.SubscriptionDao: Код: private List<Contact> getContactsForSubscription(ContactDao cm, int subscriptionId) throws SQLException, BGException { List result = new ArrayList(); String query = "SELECT dispatch_contact.* FROM dispatch_subscription_contact as cont LEFT JOIN dispatch_contact ON dispatch_contact.id=cont.contact_id WHERE cont.subscription_id=?"; PreparedStatement ps = this.con.prepareStatement(query); ps.setInt(1, subscriptionId); ResultSet rs = ps.executeQuery(); while (rs.next()) { result.add(cm.getContactFromRS(rs)); } return result; } - забыли сделать ps.close(); Предлагаю писать в эту тему такие запросы с указанием версии. Очевидно, свои косяки писать не надо |
Автор: | Cromeshnic [ 01 ноя 2012, 07:39 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Итак: Сервер: вер. 5.2 сборка 1309 от 08.10.2012 13:30:45 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_22 ru.bitel.bgbilling.plugins.dispatch вер. 5.2 сборка 44 от 01.10.2012 12:53:04 Цитата: com.mysql.jdbc.JDBC4PreparedStatement@59e5d96a: SELECT * FROM dispatch_message WHERE dispatch_id=2 ORDER BY id com.mysql.jdbc.JDBC4PreparedStatement@7525e2d7: SELECT dispatch_contact.* FROM dispatch_subscription_contact as cont LEFT JOIN dispatch_contact ON dispatch_contact.id=cont.contact_id WHERE cont.subscription_id=517 - второй точно должны поправить разработчики, а вот с первым - не факт. Начал рыться в логах и исходниках - много запросов типа SELECT * FROM ... Они вызываются в коде битела во всяких Dao (data access object), типа TariffOptionDao, ContractDao и т.п. Закрываться такие preparedStatement-ы должны явно тем, кто использует этот Dao вызовом метода recycle(): Код: TariffOptionDao toDao = ... <... поработали ...> toDao.recycle(); Поэтому совет всем скриптописцам: Используешь Dao - делай recycle()! Я вот не знал, сейчас буду искать у себя по коду. |
Автор: | Cromeshnic [ 01 ноя 2012, 08:26 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Сервер: вер. 5.2 сборка 1309 от 08.10.2012 13:30:45 dialup вер. 5.2 сборка 354 от 01.10.2012 12:52:48 Ещё несколько - 100% Бител: Код: com.mysql.jdbc.ServerPreparedStatement[1965] - SELECT tariff_plan.id FROM contract_tree_link LEFT JOIN module_tariff_tree ON module_tariff_tree.tree_id=contract_tree_link.tree_id LEFT JOIN tariff_plan ON tariff_plan.tree_id=module_tariff_tree.parent_tree WHERE contract_tree_link.cid=184486 AND tariff_plan.id IS NOT NULL AND ('2012-11-01' IS NULL OR (( date1 IS NULL OR date1<='2012-11-01' ) AND ( date2 IS NULL OR date2>='2012-11-01' ))) - не закрыт ps в bitel.billing.server.contract.bean.PersonalTariffManager.getParentTreeTariffIds Код: com.mysql.jdbc.PreparedStatement@60274688: DELETE FROM session_detail_1_201210 WHERE session_id=336503 AND dtime>='2012-10-27' AND dtime<'2012-10-28' AND sid IN (8,9,10,141,140,7) - SessionTrafficCache.flushCache() Код: com.mysql.jdbc.ServerPreparedStatement[6337] - INSERT INTO log_function_process_201211 (cid, time, title, data) VALUES (... - FunctionManager.logFunctionProcess() |
Автор: | skyb [ 01 ноя 2012, 08:53 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
предлагаю закрепить тему вверху, очень частая ошибка которая проскакивает как в собственных скриптах, так как и оказалось у разрабов |
Автор: | stark [ 01 ноя 2012, 13:20 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Исправлено. В следующем обновлении будет |
Автор: | stark [ 01 ноя 2012, 13:31 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Вообще у нас один герой нашел все такие места в 5.3 и исправил. Но мы боимся продукт его героических усилий накатить на 5.2, так слишком много изменений и вероятность ошибок очень велика.Лучше будем исправлять потихоньку , по запросу. |
Автор: | skyb [ 01 ноя 2012, 13:52 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
закрепите тему!!! |
Автор: | Amir [ 01 ноя 2012, 14:03 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Дополнительно хочу отметить, что это не совсем ошибка, а скорее предупреждение. Statement все же закрывается при закрытии Connection, т.е. после окончания выполнения действия/задачи и т.п. Но в отдельных случаях (обычно в задачах планировщика) может плохо влиять на производительность (из-за внутренней логики пула DBCP - например, если работать напрямую с mysql JDBC Connection, то все работает также быстро), а также при использовании serverPreparedStatement - количество открытых внутри mysql PreparedStatement'ов увеличивается, а оно обычно ограничено. |
Автор: | Dog [ 01 ноя 2012, 16:34 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
не знаю, сюда ли, но аккаунт сервер при старте вот такое выдает: Код: com.mysql.jdbc.JDBC4PreparedStatement@1f2f29d: SELECT trafficTypeId, SUM(amount), MIN(day) as hh FROM inet_session_detail_20 as detail WHERE sessionId=937926 AND trafficTypeId=0 GROUP BY trafficTypeId
java.lang.RuntimeException at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:480) at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:47) at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:261) at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37) at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:396) at ru.bitel.bgbilling.modules.inet.accounting.Accounting.startImpl(Accounting.java:304) at ru.bitel.bgbilling.modules.inet.accounting.Accounting.start(Accounting.java:212) at ru.bitel.bgbilling.kernel.application.server.Application.application(Application.java:239) at ru.bitel.bgbilling.kernel.application.server.Application.<init>(Application.java:154) at ru.bitel.bgbilling.kernel.application.server.Application.main(Application.java:742) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at ru.bitel.common.bootstrap.Boot.boot(Boot.java:129) at ru.bitel.common.bootstrap.Boot.main(Boot.java:178) |
Автор: | stark [ 01 ноя 2012, 18:55 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Dog писал(а): не знаю, сюда ли, но аккаунт сервер при старте вот такое выдает: Код: com.mysql.jdbc.JDBC4PreparedStatement@1f2f29d: SELECT trafficTypeId, SUM(amount), MIN(day) as hh FROM inet_session_detail_20 as detail WHERE sessionId=937926 AND trafficTypeId=0 GROUP BY trafficTypeId java.lang.RuntimeException at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:480) at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:47) at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:261) at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37) at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:396) at ru.bitel.bgbilling.modules.inet.accounting.Accounting.startImpl(Accounting.java:304) at ru.bitel.bgbilling.modules.inet.accounting.Accounting.start(Accounting.java:212) at ru.bitel.bgbilling.kernel.application.server.Application.application(Application.java:239) at ru.bitel.bgbilling.kernel.application.server.Application.<init>(Application.java:154) at ru.bitel.bgbilling.kernel.application.server.Application.main(Application.java:742) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at ru.bitel.common.bootstrap.Boot.boot(Boot.java:129) at ru.bitel.common.bootstrap.Boot.main(Boot.java:178) Исправлено . В следующем обновлении будет. |
Автор: | Dog [ 26 ноя 2012, 20:00 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
в последнем обновлении Inet у аккаунтинг сервера вот такое вываливается при старте Код: com.mysql.jdbc.JDBC4PreparedStatement@c8ca96: SELECT * FROM inet_serv_type_20 WHERE sessionInitiationType=0 ORDER BY id
java.lang.RuntimeException at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:480) at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:47) at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:261) at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37) at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:396) at ru.bitel.bgbilling.modules.inet.accounting.Accounting.startImpl(Accounting.java:400) at ru.bitel.bgbilling.modules.inet.accounting.Accounting.start(Accounting.java:224) at ru.bitel.bgbilling.kernel.application.server.Application.application(Application.java:239) at ru.bitel.bgbilling.kernel.application.server.Application.<init>(Application.java:154) at ru.bitel.bgbilling.kernel.application.server.Application.main(Application.java:742) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at ru.bitel.common.bootstrap.Boot.boot(Boot.java:129) at ru.bitel.common.bootstrap.Boot.main(Boot.java:178) |
Автор: | nikav80 [ 25 дек 2012, 23:44 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
12-21/19:55:53 ERROR ["http-bio-/0.0.0.0-8080"-exec-5] DefaultServerSetup - Many statements was open at connection close: com.mysql.jdbc.ServerPreparedStatement[3491] - (select t1.val, t1.cid from contract_parameter_type_2_log as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.val like concat('%',t2.title,'%') and t1.val like concat('%',t3.title,'%') and t1.val like '%Рґ. 1%')) union (select t1.address, t1.cid from contract_parameter_type_2 as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.address like concat('%',t2.title,'%') and t1.address like concat('%',t3.title,'%') and t1.address like '%Рґ. 1%') ) order by 1 com.mysql.jdbc.ServerPreparedStatement[3492] - select t1.address, t1.cid, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2 as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.address='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111 com.mysql.jdbc.ServerPreparedStatement[3493] - select t1.val, t1.cid, t1.dt_change, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2_log as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.val='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111 |
Автор: | vdd [ 26 дек 2012, 13:47 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
А архитектурно прибить проблему никак нельзя? В Яве нет рельной альтернативы auto_ptr из стандартной либы c++? |
Автор: | Amir [ 26 дек 2012, 16:05 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Цитата: А архитектурно прибить проблему никак нельзя? Есть обработка при сборке мусора, но обычное закрытие отработает все равно гораздо раньше. Просто иногда желательно закрывать (освобождать) еще раньше.
|
Автор: | vdd [ 26 дек 2012, 16:27 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Amir писал(а): Цитата: А архитектурно прибить проблему никак нельзя? Есть обработка при сборке мусора, но обычное закрытие отработает все равно гораздо раньше. Просто иногда желательно закрывать (освобождать) еще раньше.А сборщик мусора высвобождает ресурсы!? Но вопрос как раз об высвобождении в нужное время. Нет таких решений в Java? |
Автор: | dimOn [ 26 дек 2012, 17:31 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Есть в 7 яве try-with-resources, но оно тоже не всегда от всего спасёт в нашем случае. |
Автор: | vdd [ 26 дек 2012, 17:46 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
dimOn писал(а): Есть в 7 яве try-with-resources, но оно тоже не всегда от всего спасёт в нашем случае. Надо полагать, это аналог шарпового using(){}. Если так, то до auto_ptr ему как до Плутона. Я слышал от знакомых ява-программеров, что какие-то там Inversion-Of-Control архитектуры позволяют гарантированно управлять ресурсами в Ява. Врут? |
Автор: | dimOn [ 26 дек 2012, 17:57 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
причём тут auto_ptr? В java все ссылки всегда и есть auto_ptr. Но за руками выделенными ресурсами как оно интересно должно следить? Нету нигде такого, потому что в принципе невозможно. |
Автор: | vdd [ 26 дек 2012, 18:03 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
dimOn писал(а): В java все ссылки всегда и есть auto_ptr. Формально, учитывая что GC вызывает деструктор у объекта - да. Но фактически, из-за того, что в Яве объекты создаются только в куче - НЕТ. |
Автор: | dimOn [ 26 дек 2012, 18:10 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Не понимаю подоплёки |
Автор: | stark [ 14 янв 2013, 15:18 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
nikav80 писал(а): 12-21/19:55:53 ERROR ["http-bio-/0.0.0.0-8080"-exec-5] DefaultServerSetup - Many statements was open at connection close: com.mysql.jdbc.ServerPreparedStatement[3491] - (select t1.val, t1.cid from contract_parameter_type_2_log as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.val like concat('%',t2.title,'%') and t1.val like concat('%',t3.title,'%') and t1.val like '%Рґ. 1%')) union (select t1.address, t1.cid from contract_parameter_type_2 as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.address like concat('%',t2.title,'%') and t1.address like concat('%',t3.title,'%') and t1.address like '%Рґ. 1%') ) order by 1 com.mysql.jdbc.ServerPreparedStatement[3492] - select t1.address, t1.cid, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2 as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.address='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111 com.mysql.jdbc.ServerPreparedStatement[3493] - select t1.val, t1.cid, t1.dt_change, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2_log as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.val='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111 не могу найти этого в нашем коде . Больше похоже на ваши отчеты или скрипты какие-то.. Версия какая? |
Автор: | nikav80 [ 14 янв 2013, 23:00 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
stark писал(а): nikav80 писал(а): 12-21/19:55:53 ERROR ["http-bio-/0.0.0.0-8080"-exec-5] DefaultServerSetup - Many statements was open at connection close: com.mysql.jdbc.ServerPreparedStatement[3491] - (select t1.val, t1.cid from contract_parameter_type_2_log as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.val like concat('%',t2.title,'%') and t1.val like concat('%',t3.title,'%') and t1.val like '%Рґ. 1%')) union (select t1.address, t1.cid from contract_parameter_type_2 as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.address like concat('%',t2.title,'%') and t1.address like concat('%',t3.title,'%') and t1.address like '%Рґ. 1%') ) order by 1 com.mysql.jdbc.ServerPreparedStatement[3492] - select t1.address, t1.cid, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2 as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.address='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111 com.mysql.jdbc.ServerPreparedStatement[3493] - select t1.val, t1.cid, t1.dt_change, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2_log as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.val='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111 не могу найти этого в нашем коде . Больше похоже на ваши отчеты или скрипты какие-то.. Версия какая? Действительно, отчет. |
Автор: | lda [ 15 янв 2013, 18:40 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
В ContractManager.getContractById( cid ) ps не закрывается. Сервер: вер. 5.2 сборка 1376 от 26.12.2012 17:59:24 |
Автор: | Amir [ 15 янв 2013, 19:09 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Цитата: В ContractManager.getContractById( cid ) Либо не создавать для одного потока, а значит и соединения к БД, каждый раз новый ContractManager, либо вызывать у него recycle(), после того как стал не нужен.
ps не закрывается. |
Автор: | lda [ 15 янв 2013, 19:26 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Amir писал(а): Цитата: В ContractManager.getContractById( cid ) Либо не создавать для одного потока, а значит и соединения к БД, каждый раз новый ContractManager, либо вызывать у него recycle(), после того как стал не нужен.ps не закрывается. Простите, может быть я что то не понимаю. У вас в функции public Contract getContractById( int cid ) не закрывается ps (PreparedStatement). Это не является ошибкой которую нужно исправить? Нельзя просто добавить в код "ps.close();" или так и должно быть? |
Автор: | Amir [ 15 янв 2013, 20:24 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Так и должно быть - он кэшируется. |
Автор: | Cromeshnic [ 16 янв 2013, 07:38 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Cromeshnic писал(а): Используешь Dao - делай recycle()! http://bgbilling.ru/v5.2/javadoc/bitel/billing/server/contract/bean/ContractManager.html#recycle() |
Автор: | lda [ 16 янв 2013, 10:46 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Все понятно, спасибо. |
Автор: | Jimm [ 21 янв 2013, 14:56 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Ув. разработчики! kernel - класс LimitManager Насколько я понимаю, довольно много не закрытых PS, в логи ошибок отсюда много летит.. |
Автор: | skn [ 21 янв 2013, 17:57 ] |
Заголовок сообщения: | Re: Незакрытые preparedStatement |
Jimm писал(а): kernel - класс LimitManager. Насколько я понимаю, довольно много не закрытых PS, в логи ошибок отсюда много летит.. подчистили |
Страница 1 из 12 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |