Problemas com HiberneteUtil

5 respostas
Cristofe

Pessoal,

Estou desenvolvendo um controle de usuário, mas estou com problemas no acesso a minha classe do hiberneteUtil. Ela não pode ser inicializada , Alguem tem sugestão?

<blockquote>avax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: Could not initialize class conexao.HibernateUtil

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:775)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:11

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:29

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:58

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Thread.java:637)

Caused by: java.lang.NoClassDefFoundError: Could not initialize class conexao.HibernateUtil

at usuario.DAOFactory.criarUsuarioDAO(DAOFactory.java:1

at usuario.UsuarioRN.(UsuarioRN.java:1

at usuario.UsuarioBean.salvar(UsuarioBean.java:3

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 org.apache.el.parser.AstValue.invoke(AstValue.java:191)

at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:9

at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:8</blockquote>

5 Respostas

juceliohv

posta teu código ai irmão.

Não esquece de usar as tags [code] do forum.

Cristofe
package usuario;

import conexao.HibernateUtil;

/**
 *
 * @author Cristofe Rocha
 */

public class DAOFactory {
    public static UsuarioDAO criarUsuarioDAO(){
        UsuarioDAOHibernate UsuarioDAO = new UsuarioDAOHibernate();
        UsuarioDAO.setSession(HibernateUtil.getSessionFactory().getCurrentSession());
        return (UsuarioDAO) UsuarioDAO;
    }

}
package conexao;



/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;

/**
 * Hibernate Utility class with a convenient method to get Session Factory object.
 *
 * @author Cristofe Rocha
 */
public class HibernateUtil {
    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory from standard (hibernate.cfg.xml) 
            // config file.
            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    } catch (Throwable ex) {
          // Log the exception.
            System.err.println("Inicializacao da Fabrica de sessao falha !!." + ex);
           throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package conexao;
import org.hibernate.Session;

/**
 *
 * @author Cristofe Rocha
 */
public class ConectaPostgres {

    public static void main(String[] args) {
        Session sessao = null;
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();
            System.out.println("conectou!!");
        }finally{
         sessao.close();
        }

    }
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package usuario;

import javax.faces.application.FacesMessage;
import javax.faces.bean.*;
import javax.faces.context.FacesContext;


/**
 *
 * @author Cristofe Rocha
 */
@ManagedBean(name = "usuarioBean")
@RequestScoped
public class UsuarioBean {

    private Usuario usuario = new Usuario();
    private Integer confirmaSenha;

    public String novo() {
        this.usuario = new Usuario();
        this.usuario.setAtivo(true);
        return "cadUsuario";
    }

    public String salvar() {
        FacesContext context = FacesContext.getCurrentInstance();

        Integer senha = this.usuario.getPasswd();
        if(!senha.equals(this.confirmaSenha)){
            FacesMessage facesMessage= new FacesMessage("A senhas sao diferentes");
            context.addMessage(null, facesMessage);
            return null;
        }
        UsuarioRN usuarioRN = new UsuarioRN();
        usuarioRN.salvar(this.usuario);
        return "cadUsuario";
        
    }
    

    public Integer getConfirmaSenha() {
        return confirmaSenha;
    }

    public void setConfirmaSenha(Integer confirmaSenha) {
        this.confirmaSenha = confirmaSenha;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package usuario;

import java.util.List;

/**
 *
 * @author Cristofe Rocha
 */
public class UsuarioRN {

    private UsuarioDAO usuarioDAO;

    public UsuarioRN() {
        this.usuarioDAO = DAOFactory.criarUsuarioDAO();
    }

    public void excluir(Usuario usuario) {
        this.usuarioDAO.Excluir(usuario);
    }

    public List<Usuario> listar() {
        return this.usuarioDAO.listar();
    }

    public void salvar(Usuario usuario) {
       /* Integer codigo = usuario.getCodigo();
        if (codigo == null || codigo == 0) {
            this.usuarioDAO.Salvar(usuario);
        } else {*/
            this.usuarioDAO.Atualizar(usuario);

        }
    }
juceliohv

Eu usei assim irmão.

package Persistencia.util;


import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


/**
 * Hibernate Utility class with a convenient method to get Session Factory object.
 *
 * @author juc
 */
public class HibernateUtil {
    private static final SessionFactory sessionFactory1;
    private static final SessionFactory sessionFactory2;
    static {
        try {
            sessionFactory1 = new Configuration().configure("hibernateMtCad.cfg.xml").buildSessionFactory();
            sessionFactory2 = new Configuration().configure("hibernateMtAvalPisCofins.cfg.xml").buildSessionFactory();

        } catch (Throwable ex) {
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    public static SessionFactory getSessionFactory1() {
        return sessionFactory1;
    }

    public static SessionFactory getSessionFactory2() {
        return sessionFactory2;
    }
}

e na hora de chamar faço assim:

Session session = (Session) HibernateUtil.getSessionFactory1().openSession();
transaction = session.beginTransaction();
session.update(objeto);
transaction.commit();
session.close();
Cristofe

Fiz a alteração como postado e os logs são estes agora. Checando os códigos vejo que há um problema de biblioteca .ExceptionInInitializerError que aponta para a linha: sessionFactory = new AnnotationConfiguration().configure("/conexao/hibernate.cfg.xml").buildSessionFactory();
do meu Hibernate.Util.

<blockquote>javax.faces.el.EvaluationException: java.lang.ExceptionInInitializerError

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:775)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)

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:312)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Thread.java:637)

Caused by: java.lang.ExceptionInInitializerError

at br.ifrr.usuario.HibernateUtil.(HibernateUtil.java:28)

at br.ifrr.usuario.DAOFactory.criarUsuarioDAO(DAOFactory.java:15)

at br.ifrr.usuario.UsuarioRN.(UsuarioRN.java:21)

at br.ifrr.usuario.UsuarioBean.salvar(UsuarioBean.java:39)

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 org.apache.el.parser.AstValue.invoke(AstValue.java:191)

at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98)

at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)

 20 more

Caused by: java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder;

at org.slf4j.LoggerFactory.bind(LoggerFactory.java:121)

at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111)

at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:268)

at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:241)

at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:254)

at org.hibernate.cfg.Configuration.(Configuration.java:151)

at br.ifrr.usuario.HibernateUtil.(HibernateUtil.java:24)

</blockquote>

Não sei se com a biblioteca SLF4J. Que é utilizada no hibernate. Esta me dando um dor de cabeça.

ViniGodoy

Movido para o fórum de persistência. Por favor, leia com atenção a descrição dos fóruns antes de postar.

Criado 10 de junho de 2011
Ultima resposta 11 de jun. de 2011
Respostas 5
Participantes 3