Erro: EntityManager is closed

Pessoal,

Estou implementando essa função de cadastro abaixo, mas ta dando erro:

javax.faces.el.EvaluationException: java.lang.IllegalStateException: EntityManager is closed

public boolean CadastrarImportBts(Long id,Integer codigo,String produto,String titulo,String subtitulo,String versao,String edicao,String objetivo,String referencia,String equipe,String periodo,String premissas,String definicoes,String configuracao,String sumario,String conclusao,String anexos,String elaborador,String associado,String verificado,String criacao,String revisao,String bloqueado,String Oficial,String edicao_antiga,String reedicao,String rpr,String doc_Erp, String fabric_sw,String ativo,String Erp){
        EntityManager em = Conecta.getEntityManager();
       
        try {
           UsuarioDAO usuarioDAO = new UsuarioDAO();
           Seguranca elaborado_por = new Seguranca();
           elaborado_por = usuarioDAO.recuperarUsuario(elaborador);

           Bts btsImp = new Bts();
           
           btsImp.setId(id);
           btsImp.setCodigo(codigo);
           btsImp.setProduto(produto);
           btsImp.setTitulo(titulo);
           btsImp.setSubtitulo(subtitulo);
           btsImp.setVersao(versao);
           btsImp.setEdicao(edicao);
           btsImp.setObjetivo(objetivo);
           btsImp.setReferencia(referencia);
           btsImp.setEquipe(equipe);
           btsImp.setPeriodo(periodo);
           btsImp.setPremissas(premissas);
           btsImp.setDefinicoes(definicoes);
           btsImp.setConfiguracoes(configuracao);
           btsImp.setSumario(sumario);
           btsImp.setConclusao(conclusao);
           btsImp.setElaboradoPor(elaborado_por);
           btsImp.setAssociado(associado);
           btsImp.setVerificadoPor(verificado);
           btsImp.setCriacao(criacao);
           btsImp.setRevisao(revisao);
           btsImp.setBloqueado(bloqueado);
           btsImp.setOficial(Oficial);
           btsImp.setEdicaoAntiga(edicao_antiga);
           btsImp.setReedicao(reedicao);
           btsImp.setRpr(rpr);
           btsImp.setDocErp(doc_Erp);
           btsImp.setFabricSw(fabric_sw);
           btsImp.setAtivo(ativo);
           btsImp.setErp(Erp);


           EntityTransaction utx = em.getTransaction();
             utx.begin();
             em.persist(btsImp);
             utx.commit();
             return true;

        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }finally{
            em.close();
        }

Alguém tem alguma idéia do que pode ser isso?

Obrigada.

Por favor antes de trabalhar com JPA, JSF, Hibernate e o que for, aprenda primeiro Orientação a Objetos: remova essa quantidade absurda de argumentos no seu método!

Nossa, so to perguntando se tem alguma idéia do que seja o erro.

Oi Vera,

entenda o meu último post apenas como uma dica, ele significa apenas isso.

Poste a stacktrace do erro.

Ta bom!

Tudo bem.

javax.faces.el.EvaluationException: java.lang.IllegalStateException: EntityManager is closed

Esse é o erro que apresenta.

Obrigada.

Oi Vera,

cole aqui o stacktrace completo do erro.

Stack Trace:

org.hibernate.ejb.EntityManagerImpl.close(EntityManagerImpl.java:97)
dao.BTSDAO.CadastrarImportBts(BTSDAO.java:477)
gbts.bts.NovoBTS.BTSProprietario.InsBTSProprietario3.btnProsseguir_action(InsBTSProprietario3.java:241)
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.el.parser.AstValue.invoke(AstValue.java:131)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
com.sun.webui.jsf.component.WebuiCommand.broadcast(WebuiCommand.java:160)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.execute(PartialTraversalLifecycle.java:94)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:267)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:595)

Oi Vera,

essa exceção ocorre quando você tenta acessar um objeto EntityManager que foi fechado anteriormente.

Qual é o código da linha 477 da classe BTSDAO?

É essa a linha de código:

em.close();

Obrigada.