Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Ошибка при многократном обращении к БД


Автор: Shall 4.3.2012, 23:52
Здравствуйте, Уважаемые Гуру!

Столкнулся с проблемой, не знаю как решить, гуглил полдня.

В общем есть соединение с БД:
Код

// Setting up the DataSource object
OracleDataSource ds = new OracleDataSource();
ds.setDriverType("thin");
ds.setServerName("localhost");
ds.setPortNumber(1521);
ds.setDatabaseName("XE"); // Oracle SID
ds.setUser("user");
ds.setPassword("pass");

// Getting a connection object
connection = ds.getConnection();


Оно работает прекрасно, запросы в дальнейшем отправляет как надо, НО если на JSP странице, которая обращается к бд за информацией, зажать кнопку обновления страницы F5 секунды на 3-4, вылазит NullPointerExcepton. После, если кнопку отпустить, и через секунду опять один раз обновить страницу, NullPointer пропадает, страница грузится нормально, если опять зажать, тоже самое - NullPointer. К слову, проверял тоже самое с таймером, который раз в секунду открывает и зарывает новое соединение с бд,  примерно через минуту вылазит NullPointer, потом, через некоторое время, соединение вновь восстанавливается, еще через минуту NullPointer... Возникает в одном и том же месте - в месте соединения с бд. С чем это может быть связано и как это можно исправить? smile 

Я подумал, может кэш какой-то сохраняется, переполняется и с бд перестает соединяться, после он очищается и соединение вновь восстанавливается.. ? 

Сервер - Tomcat последний, база данных - Oracle.

Автор: jk1 5.3.2012, 10:04
Зачем так часто открывать и закрывать соединения? Connection к базе это достаточно дорогой и долгоживущий объект, возьмите лучше пул соединений и запрашивайте connection оттуда

Автор: Molodec 5.3.2012, 12:07
Или напишите Handler для Exception-а. Где скажите - "Фени юзер, ты какого беса так часто обновляешь страницу?:?"
Или просто переадресуйте туда же через пол секунды... 

Автор: Shall 5.3.2012, 15:37
Ок, спасибо! В общем буду экспериментировать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)