BoneCP против собственного пула соединений с БД WebLogic
У меня есть сервлет, который подключается к БД Oracle, используя JDBC (ojdbc6.jar) и BoneCP. Теперь мне нужно перенести мой код, использующий BoneCP, на что-то, что будет работать в WebLogic "из коробки", без BoneCP в пакете.
Какой будет рекомендуемый подход? Какую функцию WebLogic я могу использовать, в частности, чтобы получить эквивалент BoneCP:
- Спектакль
- Возможность записи неудачных операторов SQL
- Авто-возобновление с потерянного соединения с БД
Заранее спасибо.
1 ответ
Наилучшим подходом будет создание стандартного пула соединений Oracle JDBC, указывающего на вашу базу данных. Настройте его в соответствии с вашими потребностями (количество подключений и т. Д.). Затем вам потребуется рефакторинг из вашего кода любой явной ссылки на вашу прежнюю реализацию пула соединений. Если вы работали с интерфейсами java.sql. * В вашем коде, ссылок должно быть немного или вообще нет.
После того, как все это будет реорганизовано, у вас будет только немного кода (или конфигурационный файл), говорящий вашему приложению о восстановлении чего-либо, реализующего javax.sql.DataSource
от заданного имени JNDI и получения Connections
из этого. Остальное должно быть таким же - просто делайте все, что вам нужно, и закройте ResultSets
, Statements
а также Connections
как вы должны были делать до сих пор.
Что касается ваших вопросов, вы найдете исчерпывающую информацию о том, как контролировать ваш пул соединений и его политики восстановления после сбоев, здесь (в зависимости от версии вашего сервера приложений я вставляю здесь ту, которую я использовал):
http://docs.oracle.com/cd/E15051_01/wls/docs103/jdbc_admin/jdbc_datasources.html
Что касается производительности, у меня нет ни точных данных, ни тестов, сравнивающих обе реализации; для вашего спокойствия я бы сказал вам, что я никогда не обнаруживал проблем с производительностью базы данных в реализации пула соединений - это не значит, что она не может существовать, но это последнее место, где я бы ее искал;)