Erro Hibernate Filter + Lazy Init + Session Closed [RESOLVIDO]

Gostaria de saber se existe alguma maneira mais facil para mostrar em um JSP os dados de um objeto que foi trazido pelo hibernate, sem precisar ter que criar um novo e pegar todos os dados dele.

Eu sei que se não der um close() na session da certo. Mas qual é o impacto disso na aplicação?

Ah! Junto com o hibernate estou usando c3p0.

Agradeço desde ja a atenção de todos.

Você não precisa criar novos objetos, pode utilizar aqueles que o Hibernate retorna sem problemas.

Eu começei a criar novos objetos porque as vezes parecia uma exception que dizia que não conseguia resolver e como root case dizia no session.

Recebo esse erro ao tentar sem finalizar a sessão.

[code]org.apache.jasper.JasperException: javax.el.ELException: Error reading ‘id’ on type MZSuporte.model.Monitor$$EnhancerByCGLIB$$e617e536
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

javax.el.ELException: Error reading ‘id’ on type MZSuporte.model.Monitor$$EnhancerByCGLIB$$e617e536
javax.el.BeanELResolver.getValue(BeanELResolver.java:66)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
org.apache.el.parser.AstValue.getValue(AstValue.java:118)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:925)
org.apache.jsp.admin.ok.okMonitor_jsp._jspx_meth_html_005fhtml_005f0(okMonitor_jsp.java:138)
org.apache.jsp.admin.ok.okMonitor_jsp._jspService(okMonitor_jsp.java:64)
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:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:60)
org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
MZSuporte.model.Monitor$$EnhancerByCGLIB$$e617e536.getId()
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
org.apache.el.parser.AstValue.getValue(AstValue.java:118)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:925)
org.apache.jsp.admin.ok.okMonitor_jsp._jspx_meth_html_005fhtml_005f0(okMonitor_jsp.java:138)
org.apache.jsp.admin.ok.okMonitor_jsp._jspService(okMonitor_jsp.java:64)
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:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
[/code]

Antes de setar esse variavel eu faço um read pelo Id. Então recebo esse erro.
Eu sou obrigado então a deixar a session aberta se eu não quiser setar td em um novo objeto??
Qual o impacto disso p a aplicação?

Mto obrigado a todos

Cara essa exception só acontece quando vc busca alguma coisa que não foi carregada enquanto a session do hibernate estava aberta.
O metodo simples de fazer a session ficar aberta durante a request inteira (ou seja: até tudo ser renderizado) é colocando um filter que abre a session, chama chain.doFilter(), e depois fecha a Session.

Mas isso depende muito do teu dev environment, manda mais info sobre quais tecnologias tais a usar:

  • se tah num ejb container ou num servlet container
  • se usa ejb ou nao, jpa ou nao

talvez posso te ajudar se me der mais info

Valeu

Não uso EJB,

Estou usando Struts + Hibernate, Estou mapeando com Annotations, utilizo DAO generico, DAOFactory e HibernateUtil. Tambem uso JSTL e DisplayTag Library. Quer mais alguma informação ou quer ver algum código?/

Vlw

Abss

isso é o que vc deve fazer:

https://www.hibernate.org/43.html

se vc tivesse num ambiente ejb3(jboss) aí deveria carregar todos os objetos e associacoes necessarias ANTES do metodo do ejb retornar.

valeu

Ok,

Vou dar uma lida e tentar fazer.

Só mais uma duvida, qual o problema, o impacto de deixar uma session aberta?? e usando c3p0 ele não encerra sozinho??

Vlw

Abss

cara o c3po é um thread pool de connections.

quem fecha uma connection( e libera-a pro thread pool) é o hibernate quando vc chama session.commit();

obviamente deixando a session aberta por muito tempo vai deixar a connection aberta pelo mesmo tempo.

ou seja, no seu Filter: abra a session do hibernate no inicio da request (beginTransaction) e feche a session no fim da request(commitTransaction ou rollback).

lembrando q se vc nao colocar o commit ou rollback no finnaly pode ser q a connection fique aberta se ocorre alguma exception

valeu

Valew pela ajuda.

Vou tentar.

Abss

se der certo coloca o titulo como RESOLVIDO?

Pode deixar.

Valew pela ajuda

Abss

Parece que o problema não é exatamente esse, pois quando eu excluo eu não tava fechando a sessão e o erro tambem acontece, só que um pouco diferente.

O código para excluir é esse:

pc = dao.getDesktopDAO().read(pc.getId()); request.setAttribute("pc", pc); dao.beginTransaction(); dao.getDesktopDAO().delete(pcform.getPc()); dao.commit(); String acao = "excluido"; request.setAttribute("acao", acao); return mapping.findForward("okpc");

Ai ele da esse erro:

[code]org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/ok/okPC.jsp at line 64

61:


62:
63:
64:
65:
66:
67:

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

javax.el.ELException: Error reading ‘id’ on type MZSuporte.model.Desktop$$EnhancerByCGLIB$$34a1a3fc
javax.el.BeanELResolver.getValue(BeanELResolver.java:66)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
org.apache.el.parser.AstValue.getValue(AstValue.java:118)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:925)
org.apache.jsp.admin.ok.okPC_jsp._jspx_meth_html_005fhtml_005f0(okPC_jsp.java:164)
org.apache.jsp.admin.ok.okPC_jsp._jspService(okPC_jsp.java:76)
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:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [MZSuporte.model.Desktop#2000]
org.hibernate.impl.SessionFactoryImpl$1.handleEntityNotFound(SessionFactoryImpl.java:377)
org.hibernate.proxy.AbstractLazyInitializer.checkTargetState(AbstractLazyInitializer.java:79)
org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:72)
org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
MZSuporte.model.Desktop$$EnhancerByCGLIB$$34a1a3fc.getId()
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
org.apache.el.parser.AstValue.getValue(AstValue.java:118)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:925)
org.apache.jsp.admin.ok.okPC_jsp._jspx_meth_html_005fhtml_005f0(okPC_jsp.java:164)
org.apache.jsp.admin.ok.okPC_jsp._jspService(okPC_jsp.java:76)
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:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
[/code]

Estou achando que pode ser algo no modelo, da uma olhada por favor. Oque eu posso mudar??

[code]@Entity
@Table(name=“desktop”)
public class Desktop implements Serializable {

@Id
private String id;

private String memoria;

private String hd;

private String processador;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "fabricante")
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Fabricante fabricante;

private String cod_serv;

@Column(name = "eti_serv")
private String cod_eti;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "modelo" )
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private ModeloPc modelo;[/code]

Muito obrigado pela atenção.

Att,

Vinicius Roberto

Numero: ${pc.id}
Memória:

https://www.hibernate.org/116.html#A4
da uma olhada nisso

Vinicius vc colocou o codigo que inicia e fecha a transaction num filter?

Entendi mais ou menos oque me mostrou.

Não entendi oque ele quis dizer direito com

se você tenta carregar um non-proxied(?) objeto com session.load() ou você carrega um proxied(?) objeto e depois acessa o proxy(?).

O codigo para iniciar e fechar uma transação esta no DaoFactory.

Vou postar aqui e vou postar tambem o hibernate util.

[code]public class DaoFactory {

private final Session session;
private Transaction transaction;

public DaoFactory() {
    session = HibernateUtil.getSession();
}

public void beginTransaction() {
    this.transaction = this.session.beginTransaction();
}

public void commit() {
    this.transaction.commit();
    this.transaction = null;
}

public boolean hasTransaction() {
    return this.transaction != null;
}

public void rollback() {
    this.transaction.rollback();
    this.transaction = null;
}

public void close() {
    this.session.close();
}

//Daos
[/code]

Hibernate Util

[code]public class HibernateUtil {

private static SessionFactory factory;

static {
    Configuration conf = new AnnotationConfiguration();
    conf.configure();
    factory = conf.buildSessionFactory();
}

public static Session getSession() {
    return factory.openSession();
}

}[/code]

Muito obrigado pela ajuda

cara vc precisa dum servlet filter, pq a vida do servlet nao dura ateh o fim do render da jsp, acho q eh por isso q ainda da o erro

public class HibernateSessionFilter implements Filter {

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;

	try {
		util.createSession();
		chain.doFilter(request, response);// aqui dentro  vai rolar teu codigo, vc abre e commita ou rollback a transaction
	} finally {
                     // aqui o render ja acabou
		try {
                           if(util.isTransactionAtiva()) util.rollback(); // se for true aqui, com certeza deu merda, 
			util.closeSession();
		} catch (Exception exc) {
			LOGGER.error("Error Closing", exc);
		}
	}
}

valeu

Ok

Implementei assim:

[code] public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {

    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) resp;
    DaoFactory dao = new DaoFactory();

    try {            
        chain.doFilter(request, response);
    } finally {

        try {
            if (dao.hasTransaction()) {
                dao.rollback();
            }
            dao.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

}[/code]

Implementei assim esta correto??

E ele pediu p inserir esse metodo? O que é?

public boolean isLoggable(LogRecord record) { throw new UnsupportedOperationException("Not supported yet."); }

Bom, como observei e vi que era parecido com o do link q você me enviou primeiro, fiz o do primeiro link:

Só que nao esta dando certo ele retorna esse erro:

javax.servlet.ServletException: org.hibernate.HibernateException: No CurrentSessionContext configured!
MZSuporte.dao.DaoInterceptor.doFilter(DaoInterceptor.java:43)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

O que ha de errado?

[code]public class DaoInterceptor implements Filter {

//Para que serve?
public boolean isLoggable(LogRecord record) {
    throw new UnsupportedOperationException("Not supported yet.");
}

private SessionFactory sf;

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

    try {
        sf.getCurrentSession().beginTransaction();
        chain.doFilter(request, response);
        sf.getCurrentSession().getTransaction().commit();

    } catch (StaleObjectStateException staleEx) {
        staleEx.printStackTrace();
        throw staleEx;
    } catch (Throwable ex) {
        ex.printStackTrace();
        try {
            if (sf.getCurrentSession().getTransaction().isActive()) {
                sf.getCurrentSession().getTransaction().rollback();
            }
        } catch (Throwable rbEx) {
            rbEx.printStackTrace();
        }
        
        throw new ServletException(ex);
    }
}

public void init(FilterConfig filterConfig) throws ServletException {
    sf = HibernateUtil.getSession();
}

public void destroy() {
}

}[/code]

Valew

Vitenho

Muito obrigado pela sua ajuda. Valew mesmo. Deu tudo certo.

Foi só criar o filtro mesmo:

[code]public class DaoInterceptor implements Filter {

private SessionFactory sf;

public boolean isLoggable(LogRecord record) {
    throw new UnsupportedOperationException("Not supported yet.");
}

    public void init(FilterConfig filterConfig) throws ServletException {
    sf = HibernateUtil.getSession();
}

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

    try {            
        sf.getCurrentSession().beginTransaction();
        chain.doFilter(request, response);
        sf.getCurrentSession().getTransaction().commit();
    } catch (StaleObjectStateException staleEx) {
        staleEx.printStackTrace();
        throw staleEx;
    } catch (Throwable ex) {
        ex.printStackTrace();
        try {
            if (sf.getCurrentSession().getTransaction().isActive()) {
                sf.getCurrentSession().getTransaction().rollback();
            }
        } catch (Throwable rbEx) {
            rbEx.printStackTrace();
        }
        
        throw new ServletException(ex);
    }
}

public void destroy() {
}

}[/code]

Só gostaria que me tirasse duas duvidas por favor:

1 - Reparei que no Filter não ha nenhum momento que ele da um close na session. Esta certo??

2 - Antes de eu excluir uma linha, eu faço um read nele e seto como atributo, para poder pegar na JSP. Só que após excluir, ele só retorna o Id. Como faço para ele exibir tudo?

Muito Obrigado pela ajuda. Foi 10.

cara nao entendi sua pergunta numeor 2, mas a o codigo que te passei tem um finally q fecha a sessao


try {
util.createSession();
chain.doFilter(request, response);// aqui dentro vai rolar teu codigo, vc abre e commita ou rollback a transaction

// nota que eu nao tenho catch, o q explodir que exploda!
}

FINALLY!!!!

 finally {
// aqui o render ja acabou
try {
if(util.isTransactionAtiva()) util.rollback(); // se for true aqui, com certeza deu merda,



util.closeSession();// AQUI FECHA A SESSAO




} catch (Exception exc) {
LOGGER.error("Error Closing", exc);
}
}
} 

FLW BROW