Problema com EntityManager JSF 2 - JPA

Galera estou com um problema em crud jsf que estou fazendo, não estou conseguindo recuperar o EntityManager, retor na sempre null.
Não sei o que acontece, ou se está faltando alguma coisa. Alguém pode ajudar?

private EntityManager getEntityManager(){

		FacesContext fc = FacesContext.getCurrentInstance();
		ExternalContext ec = fc.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) ec.getRequest();
		EntityManager manager = (EntityManager) request.getAttribute("EntityManager");
		return manager;
	}
package br.com.scace.managedbeans;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;

import br.com.scace.model.User;
import br.com.scace.model.UserRepository;

@ManagedBean
public class UserBean {

	private User user = new User();
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public void adicionaUser(){
		
		EntityManager manager = this.getEntityManager();
		UserRepository repository = new UserRepository(manager);
		repository.adiciona(this.user);
		this.user = new User();	
	}
	
	public List<User> getUsers(){
		
		EntityManager manager = this.getEntityManager();
		UserRepository repository = new UserRepository(manager);
		return repository.buscaTodos();
	}
	
	private EntityManager getEntityManager(){

		FacesContext fc = FacesContext.getCurrentInstance();
		ExternalContext ec = fc.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) ec.getRequest();
		EntityManager manager = (EntityManager) request.getAttribute("EntityManager");
		return manager;
	}
	
	
}
package br.com.scace.model;

import java.util.List;

import javax.faces.bean.ManagedProperty;
import javax.persistence.EntityManager;
import javax.persistence.Query;


public class UserRepository {
	
	//@ManagedProperty(value="#{manager}")
	private EntityManager manager;
	
	public UserRepository(EntityManager manager){
		this.manager = manager;
	}
	
	public void adiciona(User user){
		this.manager.persist(user);
	}
	
	public List<User> buscaTodos(){
		Query query = this.manager.createQuery("select x from user x");
		return query.getResultList();
	}
	
}
package br.com.scace.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class User {
	
	@Id @GeneratedValue
	private Long id;
	private String nome;
	private String usuario;
	private String pass;
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getUsuario() {
		return usuario;
	}
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	
}
package br.com.scace.filters;

import java.io.IOException;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

@WebFilter(servletNames={"Faces Servlet"})
public class JPAFilter implements Filter {
	
	private EntityManagerFactory factory;
	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		this.factory = Persistence.createEntityManagerFactory("SCACE");
		
	}
	
	@Override
	public void destroy() {
		this.factory.close();
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

		EntityManager manager = this.factory.createEntityManager();
		request.setAttribute("EntityManager", manager);
		manager.getTransaction().begin();
		
		chain.doFilter(request, response);
		
		try {
			manager.getTransaction().commit();
		} catch(Exception e) {
			manager.getTransaction().rollback();
		} finally {
			manager.close();
		}
		
	}

}
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
	xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

	<persistence-unit name="SCACE" transaction-type="RESOURCE_LOCAL">
	
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties >
		
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
			<property name="hibernate.hbm2ddl.auto" value="update"/>
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
			<property name="javax.persistence.jdbc.user" value="root"/>
			<property name="javax.persistence.jdbc.password" value=""/>
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/scace"/>
		
		</properties>
	
	</persistence-unit>
	
</persistence>


Segue o log também.

[#|2013-01-28T13:54:52.678-0200|WARNING|glassfish3.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=39;_ThreadName=Thread-1;|StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception javax.faces.el.EvaluationException: java.lang.NullPointerException at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) at javax.faces.component.UICommand.broadcast(UICommand.java:315) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.NullPointerException at br.com.scace.model.UserRepository.adiciona(UserRepository.java:20) at br.com.scace.managedbeans.UserBean.adicionaUser(UserBean.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.el.parser.AstValue.invoke(AstValue.java:234) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) ... 33 more |#]

Tá dando NullPointerException na linha 20 do método adiciona da classe UserRepository:

Coloca um breakpoint nesse método e veja o que está nulo. Eu tenho um forte palpite que seja o seu EntityManager.

Está retornando null nesta etapa:

EntityManager manager = (EntityManager) request.getAttribute(“EntityManager”);

Não consigo recuperar o entiy…

Perai, vc está armazenando o EntityManager na sessão HTTP?

  @Override  
    public void doFilter(ServletRequest request, ServletResponse response,  
            FilterChain chain) throws IOException, ServletException {  
  
        EntityManager manager = this.factory.createEntityManager();  
        request.setAttribute("EntityManager", manager);  
        manager.getTransaction().begin();  
          
        chain.doFilter(request, response);  
          
        try {  
            manager.getTransaction().commit();  
        } catch(Exception e) {  
            manager.getTransaction().rollback();  
        } finally {  
            manager.close();  
        }  
          
    }

No exemplo acima, o método doFilter() é chamado toda vez que uma requisição é realizada
para a servlet Faces Servlet. Antes de repassar a requisição para a Faces Servlet, o método doFilter()
cria um EntityManager, armazena-o na requisição e abre uma transação. Depois que a Faces Servlet
processou a requisição, o método doFilter() tenta confirmar a transação através do método
commit(). Se um erro ocorrer nessa tentativa, o método rollback() é chamado para cancelar a
transação.

Opa,
Também estou atrás de uma solução para este mesmo problema.
:stuck_out_tongue:

vc ja debugou esse seu filtro? esta passando por ele as requisições ?