Tirar erro jsp

6 respostas
L

bom dia pessoal, estou fazendo uma aplicacao jsp com conexao com banco de dados, exclui um produto do meu banco de dados e mesmo assim esta dando um exception como abaixo, gostaria de saber como posso resolver esse problema

org.apache.jasper.JasperException: An exception occurred processing JSP page /ProcessaExclusao.jsp at line 38


35:             for (int i = 0; i < recebeProdutoRemovido.length; i++){

36:                 for (br.data.produto prod : cprod.getAll()){

37:                     if (prod.getCodigo() == Integer.parseInt(recebeProdutoRemovido[i])){

38:                         cprod.removeProduto(prod);

39:                     }

40:                 }

41:             }




Stacktrace:
	
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)

	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413)

	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)


root cause

java.lang.IllegalStateException: Attempting to execute an operation on a closed EntityManager.

	org.eclipse.persistence.internal.jpa.EntityManagerImpl.verifyOpen(EntityManagerImpl.java:1516)

	org.eclipse.persistence.internal.jpa.EntityManagerImpl.close(EntityManagerImpl.java:1380)

	br.modelo.CrudProduto.removeProduto(CrudProduto.java:58)

	org.apache.jsp.ProcessaExclusao_jsp._jspService(ProcessaExclusao_jsp.java:95)

	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)

	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

6 Respostas

kritiuns

brow, manda aí a implementação desse método que ta gerando o erro

L

ta ai

package br.modelo;


import java.util.logging.Level;

import java.util.logging.Logger;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;


/**
 *
 * @author root
 */

public class CrudProduto {

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("CrudPU");

    EntityManager em = emf.createEntityManager();


    public void persist(Object object) {

        
        try {

            em.getTransaction().begin();

            em.persist(object);

            em.getTransaction().commit();

        } catch (Exception e) {

            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", e);

            em.getTransaction().rollback();

        } finally {

            em.close();

        }

    }


    public java.util.Collection<br.data.produto> getAll() {

        
        try {

            return em.createNamedQuery("produto.findAll").getResultList();

        } catch (Exception e) {

            System.out.println("Erro: " + e.getMessage());

            return null;

        } finally {

            em.close();

        }

    }


    public void removeProduto(br.data.produto produto){

        EntityManager exclui = emf.createEntityManager();

        try {

            exclui.getTransaction().begin();

            exclui.remove(exclui.getReference(br.data.produto.class,produto.getCodigo()));

            exclui.getTransaction().commit();


        }catch(Exception e){

           
        }finally {

            em.close();

        }

    }


}
Rodrigo_Sasaki

então cara… não sei bem se é isso

mas no seu método getAll() você fecha o ‘em’ fechando o EntityManager

e no método remove você abre um novo chamado ‘exclui’, porém no final novamente fecha o ‘em’ ao invés de fechar o ‘exclui’ que você abriu…

essa exceção está reclamando que você está tentando executar uma operação em um EntityManager fechado… e eu creio que é porque você está tentando fechar um Manager que ja fechou anteriormente.

espero ter ajudado,

abraço!!

FernandoFranzini

" Attempting to execute an operation on a closed EntityManager. "

Como a propria exception esta dizendo, vc esta querendo fazer uma operação com o EntityManager fechado, ou seja sem sessão aberto para o JPA.
Depure e veja se vc deixou de abrir ou fechou sem querer.

L

o problema era o em.close(); coloquei o exclui.close(); resolveu o problema, valeu

paulo1911

Olá amigo vc está fechando o entity manager mesmo no finally. com em.close();

Altere somente esse trecho que vai resolver.
Fallow

Criado 17 de maio de 2011
Ultima resposta 17 de mai. de 2011
Respostas 6
Participantes 5