JSF, PrimeFaces, WebFlow et Hibernate => org.hibernate.SessionException : session closed!
... voilà le quatuor gagnant!
Mon problème est le suivant :
j'utilise le composant autoComplete de primeFaces pour faire de l'auto-complétion sur un champ d'une page JSF. La méthode d'autocomplétion est implémenté dans un bean managé. Cette méthode vise à effectuer une recherche hibernate pour rapatrier une liste d'objets métier, via hibernate. Le hic, c'est que ma DAO n'arrive pas à récupérrer une session hibernate valide : je me tape à chaque fois une org.hibernate.SessionException.
Le filtre déclaré dans le web.xml est le traditionnel OpenEntityManagerInViewFilter, mais je me demande s'il ne faudrait pas en déclarer un autre spécifique à JSF... Mais je n'arrive pas à trouver ce filtre (les quelques essais que j'ai pu faire, notamment celui-ci, ne résolvent pas le problème).
Est-ce que vous avez déjà eu ce problème ? Et si oui, comment puis-je le résoudre ?
Merci.
pom.xml (extraits)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<!-- Hibernate / JPA -->
<jpa-version>1.0.0.Final</jpa-version>
<hibernate-entitymanager-version>3.5.1-Final</hibernate-entitymanager-version>
<hibernate-version>3.5.1-Final</hibernate-version>
<!-- Spring -->
<spring-version>3.0.4.RELEASE</spring-version>
<spring-security-facelets-taglib-version>0.5</spring-security-facelets-taglib-version>
<spring-webflow-version>2.2.1.RELEASE</spring-webflow-version>
<!-- JSF / Facelets -->
<jsf-version>2.0.3</jsf-version>
<facelet-version>1.1.14</facelet-version>
<!-- JSF / Facelets -->
<jsf-version>2.0.3</jsf-version>
<facelet-version>1.1.14</facelet-version> |
web.xml (extraits)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<!-- Param for Primefaces -->
<context-param>
<param-name>com.sun.faces.allowTextChildren</param-name>
<param-value>true</param-value>
</context-param>
<!-- OpenEntityManagerInViewFilter -->
<filter>
<filter-name>openEntityManagerInViewFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<!-- OpenEntityManagerInViewFilter -->
<filter-mapping>
<filter-name>openEntityManagerInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Just here so the JSF implementation can initialize, *not* used at runtime -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Just here so the JSF implementation can initialize -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping> |
faces-config.xml
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<message-bundle>LabelResources</message-bundle>
<message-bundle>ErrorResources</message-bundle>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
</faces-config> |