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

Что касается производительности, у меня нет ни точных данных, ни тестов, сравнивающих обе реализации; для вашего спокойствия я бы сказал вам, что я никогда не обнаруживал проблем с производительностью базы данных в реализации пула соединений - это не значит, что она не может существовать, но это последнее место, где я бы ее искал;)

Другие вопросы по тегам