I am building a control filter for my entityManager in my app, but I am getting this error:
Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> [Faces Servlet] in filter mapping
at org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:3025)
at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:2971)
at org.apache.catalina.startup.ContextConfig.configureContext(ContextConfig.java:1289)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1169)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:775)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:301)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5051)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
... 27 more
when I define @WebFilter("Faces Servlet")
in my class JPAFilter. I changed to @WebFilter(".xhtml")
, but the entityManager creates a lot of connections in the db.
My JPAFilter class:
@WebFilter("Faces Servlet")
public class JPAFilter implements Filter {
private EntityManagerFactory entityManagerFactory;
private String persistence_unit_name = "comex-pu";
public void destroy() {
this.entityManagerFactory.close();
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
EntityManager entityManager = this.entityManagerFactory.createEntityManager();
request.setAttribute("entityManager", entityManager);
entityManager.getTransaction().begin();
chain.doFilter(request, response);
try {
entityManager.getTransaction().commit();
} catch (Exception e) {
entityManager.getTransaction().rollback();
} finally {
entityManager.close();
}
}
public void init(FilterConfig fConfig) throws ServletException {
this.entityManagerFactory = Persistence.createEntityManagerFactory(this.persistence_unit_name);
}
}
My Faces Servlet
in web.xml
:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>