Я работаю над веб-проектом с Hibernate и Spring MVC.Моя конфигурация гибернации:
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/xxx</property>
<property name="connection.username">xxx</property>
<property name="connection.password">xxx</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">1800</property>\<property name="hibernate.c3p0.max_statements">50</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">UTF-8</property>
<property name="current_session_context_class">thread</property>
<property name="show_sql">true</property>
Сеансы гибернации закрываются в деструкторах классов обслуживания (эти классы обслуживания имеют объекты DAO).Но после публикации на производственном сервере у меня возникло слишком много исключений подключений из вызова mysql. Каждый сервер mysql был открыт.Когда количество соединений становится 101 - дБ не удалось.Я думаю, что деструкторам не хватило времени на казни, поэтому связи открывались постоянно.Затем я восстановил структуру.Теперь контроллеры Spring вызывают функцию класса обслуживания, которая выпускает сессию вручную.Но это не помогает: соединения все еще открыты, и теперь я не могу использовать LAZY-коллекции в представлениях, потому что сессия уже закрыта.Как я могу решить эту проблему?Какой здесь обычный подход?Спасибо.