Проблема с объектом статического соединения - PullRequest
0 голосов
/ 09 июля 2009

Я создаю веб-сервис с использованием j2ee. этот веб-сервис работает с БД для вставки / обновления данных. Мы используем драйверы подключения для установления соединения с базой данных. Когда мы запустили этот веб-сервис и протестировали его, у нас возникла проблема утечки памяти, и, следовательно, транзакция не удалась. Вот сообщение об ошибке, которое мы получили:

«Ошибка выделения памяти при обработке запроса»

Эта проблема была решена, когда мы перезапустили сервер weblogic. Этот статический объект соединения используется только EJB для обработки транзакций БД.

Будет ли этот единственный объект статического соединения создавать утечку памяти и вызывать сбой транзакции?

Примечание: пожалуйста, не советуйте закрывать соединение, так как оно нам нужно на протяжении всей транзакции.

1 Ответ

0 голосов
/ 15 июля 2009
  1. Всегда следует извлекать соединение из пула соединений (источника данных), настроенного на сервере (с использованием jndi)
  2. Вы никогда не должны сохранять статичность вашего объекта Connection
  3. Вы должны всегда закрывать () ваше соединение в блоке finally. (когда вы извлекаете соединение из источника данных и вызываете close (), вы просто сообщаете пулу, что закончили со своим соединением. На самом деле вы его не закрываете.

Сделай это, и у тебя все будет хорошо.

...