Glassfish Derby Connection Pool, Соединения не возвращены в пул - PullRequest
1 голос
/ 26 января 2012

Я использую Glassfish 3.1, JEE6 JPA Annotations, провайдера Hibernate и базу данных Derby в моем (простом) приложении. Кажется, у меня много трудностей с пулами соединений. По сути, мое приложение работало нормально без защиты, но теперь, когда я создал область безопасности, я обнаружил, что у меня запускаются соединения независимо от того, какой размер я установил для пула. Очевидно, что в моем коде есть кое-что, что означает, что соединение не возвращается в пул после завершения запроса сервлета.

Я видел различные публикации и советы по StackOverflow и перепробовал их все ... похоже, ничего не работает.

То, что я хотел бы знать, это ... Как я могу получать информацию и отслеживать информацию из Glassfish? Мне нужно выяснить, почему он не возвращает соединение с пулом. Таким образом, я надеюсь, что смогу найти источник проблемы.

Большое спасибо!

1 Ответ

0 голосов
/ 04 февраля 2012

Всегда первое предположение, что соединения не возвращаются в пул из-за отсутствия очистки.

Убедитесь, что:

  • закрыть все открытые соединения
  • закрыть все менеджеры EntityManager, которые вы использовали

на каждом Пути.

Это хорошая практика, сделайте

использовать

try
{
  //open
  //work
}
catch
{
  //exception handling
}
finally
{
  //close
}

везде, где вы справляетесь с такими ситуациями.

Примечание на стороне: Статические анализаторы, такие как findbugs / sonar, способны обнаруживать такие ситуации.

...