Problema com EntityManager is closed

Eu tenho dois selects um de “Matéria” outro de “Assunto” quando eu seleciono a matéria… tipo “Matemática” ele me traz a lista de assuntos relacionados a esta matéria… tipo subtração, soma, multiplicação…

O problema é que só funciona com o managedBean com @ReqestScoped se eu colocar @ViewScoped ou @SessionScoped ele da “EntityManager is closed”…

e eu preciso muito trabalhar com o @SessionScoped e não estou conseguindo!!!

e também no @RequestScoped quando submeto o formulario da o erro “Erro de validação: o valor não é válido”

<h:outputLabel  value="* Matéria: " for="materia" /> 		
<p:selectOneMenu id="materia" value="#{MbCadastroAtividade.materia}" effect="fold" requiredMessage="#{msgs.vazioAtividadeMateria}" required="true">  
	<f:selectItem itemLabel="SELECIONE" itemValue="" noSelectionOption="true"/>
	<f:selectItems value="#{MbCadastroAtividade.materias}" style="font-size:11px;"/> 				       				
	      <p:ajax event="change" update="assunto" listener="#{MbCadastroAtividade.buscarAssuntos}"/>
</p:selectOneMenu>
						        	

<h:outputLabel  value="* Assunto: " for="assunto" /> 		
	<p:selectOneMenu id="assunto" value="#{MbCadastroAtividade.atividade.assunto}" effect="fold" requiredMessage="#{msgs.vazioAtividadeAssunto}" required="true">  
		<f:selectItem itemLabel="SELECIONE" itemValue="" noSelectionOption="true"/>
		<f:selectItems  value="#{MbCadastroAtividade.assuntos}"  /> 
	</p:selectOneMenu>

no bean

....
private List<SelectItem> assuntos;
	
private List<SelectItem> materias;
.....

não sei se é isso mas eu tenho esse filtro aqui:

package br.com.sca.filtro;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;

import br.com.sca.util.JPAUtil;

@WebFilter("/*")
public class EntityManagerFilter implements Filter {
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    
	try {
	
		JPAUtil.beginTransaction();
		chain.doFilter(request, response);
		
		JPAUtil.commit();
    } catch (Throwable e) {
    	
    	e.printStackTrace();
    	
    	JPAUtil.rollback();
    	
    	throw new ServletException(e);
    } finally {
    	
    	JPAUtil.closeEntityManager();
    }
  }

  public void destroy() {}
  
  public void init(FilterConfig arg0) throws ServletException {}
}

pessoal me ajudem, por favor!!

Ajuda ai pessoal!!!