No exemplo abaixo de JPA da apostila K19 faz esse filter associado à servlet do JSF,
o problema é ele esta associado ao escopo de request, isso pode ser verificado quando
eu troco a manegedbean para escopo de view e da um erro dizendo que o “entityManager”
é menor do que o escopo da pagina. Como eu resolvo isso, pois quero usar o escopa que
eu quizer não somente de request?
@WebFilter(servletNames={"Faces Servlet"})
public class JPAFilter implements Filter {
private EntityManagerFactory factory;
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
EntityManager entityManager = this.factory.createEntityManager();
request.setAttribute("entityManager", entityManager);
chain.doFilter(request, response);
try {
entityManager.getTransaction().begin();
entityManager.getTransaction().commit();
} catch (Exception e) {
entityManager.getTransaction().rollback();
} finally {
entityManager.close();
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.factory = Persistence.createEntityManagerFactory("copadomundo");
}
@Override
public void destroy() {
this.factory.close();
}
}