Приложение JSF, создающее слишком много соединений с БД - PullRequest
0 голосов
/ 27 февраля 2011

Я создал (относительно) простое приложение JSF, используя MYSQL 5.1 db и Tomcat 7. Все работает в том смысле, что ничего не взрывается, но есть любопытство ...

ИспользованиеMySQL Workbench, я вижу, что со временем я создаю постоянно растущий список соединений с БД, которые никогда не освобождаются.Каждый из них имеет формат:

[id] [user] [host] [dbname] [command] [time] [State] [info]

Состояние всегда пустое, а Команда всегда «спит».

Я лучше всех следуюПри открытии и закрытии соединений, операторов и, насколько я могу судить, практики, ни один из моих ManagedBeans не имеет постоянного соединения с источником данных, все они должны в любом случае выпасть из области видимости, как только я переключаюсь между страницами.1013 * Я изо всех сил пытаюсь найти ответы, и это отчасти потому, что я не совсем уверен, где искать.Любые предложения о том, что для проверки / устранения неполадок, есть ли некоторые распространенные ловушки JSF / DBCP, о которых я не знаю?

Это может быть полезно:

<Resource 
    name="jdbc/TrackerDB" 
    auth="Container" 
    type="javax.sql.DataSource"
    maxActive="20" 
    maxIdle="10" 
    maxWait="100"
    username="xxxx" 
    password="xxxx" 
    removeAbandoned="true"
    removeAbandonedTimeout="300"
    logAbandoned="true"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/tracker"
/>

1 Ответ

3 голосов
/ 27 февраля 2011

Какую постоянную среду вы используете?

Если это JPA, вы должны close() EntityManager каждый раз (выпадение из области видимости недостаточно хорошо)!

Если он находится в спящем режиме, вам следует close() сеанс каждый раз.

Если это JDBC, вы должны close() выражение каждый раз.

Закрытие такого ресурса обычно выполняется в предложении finally (из блока try).

PS Вы не упоминаете закрытие ResultSets.Я полагаю, вы тоже это закрыли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...