Hiberate con Struts2: ¿usa el complemento de hibernación completo u otro método para cerrar las sesiones?

Estoy usando Struts 2.2.1.1 e Hibernate 3.6.2.Final. También estoy usando C3P0 para mi grupo de conexiones que se ejecuta en Tomcat 7.0.11.

Tengo problemas en los que mis sesiones de Hibernate no se están cerrando y estoy excediendo rápidamente el número máximo de conexiones abiertas según lo configurado en la propiedad "hibernate.c3p0.max_size".

Creo que es porque mis sesiones de Hibernate están abiertas pero nunca cerradas. Estoy abriendo Sesiones desde una SessionFactory que está almacenada en el ServletContext. Intenté cerrar la sesión en un bloque finalmente {} en mi clase de Acción pero eso arroja excepciones org.hibernate.LazyInitializationException.

Investigué un poco y encontré el Complemento Hibernate Completo enfoque y también el Abrir sesión en Ver enfoque.

Supongo que este es un problema común y me gustaría tener una idea de la solución más utilizada.

Otra cosa que noté es que el Complemento completo de Hibernate admite Struts 2.0.9+ a 2.1.6 pero estoy usando 2.2.1.1. No estoy seguro de si esto sería un problema o si el sitio web simplemente no se ha actualizado para incluir la versión más reciente.

Cualquier aporte se agradecerá