HTTP - 500 - Hibernate + JSF [RESOLIDO]

Fiz uma alteração no meu aplicativo, criei uma biblioteca java, contendo as persistencias e implementações de consultas hibertate, retirei o hibernate da aplicação web e inclui a bibliote, no entanto, ao acessar o sistema, recebo a seguinte mensagem de erro no browser:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)
root cause

java.lang.StackOverflowError
	java.util.HashMap.<init>(HashMap.java:255)
	java.util.HashMap.<init>(HashMap.java:305)
	java.util.HashSet.<init>(HashSet.java:103)
	org.hibernate.jdbc.AbstractBatcher.<init>(AbstractBatcher.java:49)
	org.hibernate.jdbc.BatchingBatcher.<init>(BatchingBatcher.java:22)
	org.hibernate.jdbc.BatchingBatcherFactory.createBatcher(BatchingBatcherFactory.java:16)
	org.hibernate.jdbc.ConnectionManager.<init>(ConnectionManager.java:71)
	org.hibernate.jdbc.JDBCContext.<init>(JDBCContext.java:64)
	org.hibernate.impl.SessionImpl.<init>(SessionImpl.java:213)
	org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:473)
	org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:497)
	org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:505)
	br.com.jvmsoftware.acessojava.implement.AcsRelSistemaEmpresaImp.<init>(AcsRelSistemaEmpresaImp.java:21)
	br.com.jvmsoftware.acessojava.implement.AcsUsuariosImp.<init>(AcsUsuariosImp.java:29)
	br.com.jvmsoftware.acessojava.implement.AcsSistemasImp.<init>(AcsSistemasImp.java:25)
	br.com.jvmsoftware.acessojava.implement.AcsUsuariosImp.<init>(AcsUsuariosImp.java:30)
	br.com.jvmsoftware.acessojava.implement.AcsSistemasImp.<init>(AcsSistemasImp.java:25)
	br.com.jvmsoftware.acessojava.implement.AcsUsuariosImp.<init>(AcsUsuariosImp.java:30)
	br.com.jvmsoftware.acessojava.implement.AcsSistemasImp.<init>(AcsSistemasImp.java:25)
	br.com.jvmsoftware.acessojava.implement.AcsUsuariosImp.<init>(AcsUsuariosImp.java:30)
	br.com.jvmsoftware.acessojava.implement.AcsSistemasImp.<init>(AcsSistemasImp.java:25)
	br.com.jvmsoftware.acessojava.implement.AcsUsuariosImp.<init>(AcsUsuariosImp.java:30)
	br.com.jvmsoftware.acessojava.implement.AcsSistemasImp.<init>(AcsSistemasImp.java:25)
	br.com.jvmsoftware.acessojava.implement.AcsUsuariosImp.<init>(AcsUsuariosImp.java:30)
	br.com.jvmsoftware.acessojava.implement.AcsSistemasImp.<init>(AcsSistemasImp.java:25)
	br.com.jvmsoftware.acessojava.implement.AcsUsuariosImp.<init>(AcsUsuariosImp.java:30)
	br.com.jvmsoftware.acessojava.implement.AcsSistemasImp.<init>(AcsSistemasImp.java:25)
	br.com.jvmsoftware.acessojava.implement.AcsUsuariosImp.<init>(AcsUsuariosImp.java:30)
	br.com.jvmsoftware.acessojava.implement.AcsSistemasImp.<init>(AcsSistemasImp.java:25)
	br.com.jvmsoftware.acessojava.implement.AcsUsuariosImp.<init>(AcsUsuariosImp.java:30)
	br.com.jvmsoftware.acessojava.implement.AcsSistemasImp.<init>(AcsSistemasImp.java:25)
	br.com.jvmsoftware.acessojava.implement.AcsUsuariosImp.<init>(AcsUsuariosImp.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.37 logs.

meu hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jvmsoftware_db?zeroDateTimeBehavior=convertToNull</property>
    <property name="hibernate.connection.username">jvmsoftware</property>
    <property name="hibernate.connection.password">Matheus1108</property>
    <property name="hibernate.show_sql"/>
    <!-- Condiguração do c3p0 -->
    <property name="hibernate.c3p0.max_size">20</property>
    <property name="hibernate.c3p0.min_size">2</property>
    <property name="hibernate.c3p0.timeout">30</property>
    <property name="hibernate.c3p0.max_statements">50</property>
    <property name="hibernate.c3p0.idle_test_period">3000</property>
    <property name="hibernate.c3p0.acquire_increment">2</property>
    <!-- mapeamentos -->
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsUsuarios.hbm.xml"/>
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsSistemas.hbm.xml"/>
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsCidade.hbm.xml"/>
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsRelSistemaEmpresa.hbm.xml"/>
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsEmpresa.hbm.xml"/>
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsRelFuncionalidadeUsuario.hbm.xml"/>
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsRelSistemaUsuario.hbm.xml"/>
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsEstado.hbm.xml"/>
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsRelMenuUsuario.hbm.xml"/>
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsTipoPessoa.hbm.xml"/>
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsFuncionalidades.hbm.xml"/>
    <mapping resource="br/com/jvmsoftware/acessojava/mapeamento/AcsMenus.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

Exemplo de implementação hibernate:

public class AcsSistemasImp {
    
    private AcsUsuariosImp usuImp = new AcsUsuariosImp();
    SessionFactory sf = getSessionFactory();
    Session session = sf.openSession();
    
    public AcsSistemasImp() {
    }
    
    public List<AcsSistemas> listSistemas() {
        List<AcsSistemas> list;
        list = session.createQuery("select s from AcsSistemas s order by s.nomeSistema").list();
        return list;
    }
    
    public AcsSistemas getSistemaById(int idSistema) {
        AcsSistemas sis;
        sis = (AcsSistemas) session.createQuery("select s from AcsSistemas s where s.idSistema = :idSistema").setInteger("idSistema", idSistema).uniqueResult();
        return sis;
    }
    
    public List<AcsSistemas> getSistemaSemUsuario(AcsUsuarios usuario) {
        List<AcsSistemas> sistemasSemUsuario;
        sistemasSemUsuario = session.createQuery("select s from AcsSistemas s where s.idSistema not in (select r.acsSistemas.idSistema from AcsRelSistemaUsuario r where r.acsUsuarios.idUsuario = :idUsuario)").setInteger("idUsuario", usuario.getIdUsuario()).list();
        return sistemasSemUsuario;
    }
    
    public AcsSistemas getSistemaByCodigo(String codSistema) {
        AcsSistemas sistema;
        sistema = (AcsSistemas) session.createQuery(""
                    + "select s "
                    + "from AcsSistemas s "
                    + "where s.codSistema = :codSistema").setString("codSistema", codSistema).uniqueResult();
        return sistema;
    }

    public void alteraSistema(AcsSistemas sistema) {
        session.beginTransaction();
        session.saveOrUpdate(sistema);
        session.beginTransaction().commit();
    }
    
    public void incluiSistema(AcsSistemas sistema) {
        session.beginTransaction();
        session.saveOrUpdate(sistema);
        session.beginTransaction().commit();
        geraRelacionamentos(sistema);
    }
    
    public void geraRelacionamentos(AcsSistemas sistema) {
        session.beginTransaction();
        // gerando relacionamentos sistema empresa
        List<AcsEmpresa> empresasSemSistema;
        empresasSemSistema = session.createQuery("select e from AcsEmpresa e where e.idEmpresa not in (select r.acsEmpresa.idEmpresa from AcsRelSistemaEmpresa r where r.acsSistemas.idSistema = :idSistema)").setInteger("idSistema", sistema.getIdSistema()).list();
        for (int i = 0; i < empresasSemSistema.size(); i++) {
            AcsRelSistemaEmpresa relacionamento = new AcsRelSistemaEmpresa();
            AcsRelSistemaEmpresaId relacionamentoId = new AcsRelSistemaEmpresaId();
            // seta AcsRelSistemaEmpresaId
            relacionamentoId.setSistema(sistema.getIdSistema());
            relacionamentoId.setEmpresa(empresasSemSistema.get(i).getIdEmpresa());
            // seta AcsRelSistemaEmpresa
            relacionamento.setId(relacionamentoId);
            if (empresasSemSistema.get(i).getIdEmpresa() == 1) {
                relacionamento.setAtivo(true);
            } else {
                relacionamento.setAtivo(false);
            }
            session.saveOrUpdate(relacionamento);
            session.beginTransaction().commit();
        }
        // gerando relacionamentos sistema usuarios
        List<AcsUsuarios> usuariosSemSistema;
        usuariosSemSistema = usuImp.listUsuariosSemSistema(sistema);
        for (int i = 0; i < usuariosSemSistema.size(); i++) {
            AcsRelSistemaUsuario relacionamento = new AcsRelSistemaUsuario();
            AcsRelSistemaUsuarioId relacionamentoId = new AcsRelSistemaUsuarioId();
            // seta AcsRelSistemaEmpresaId
            relacionamentoId.setSistema(sistema.getIdSistema());
            relacionamentoId.setUsuario(usuariosSemSistema.get(i).getIdUsuario());
            relacionamentoId.setEmpresa(usuariosSemSistema.get(i).getAcsEmpresa().getIdEmpresa());
            // seta AcsRelSistemaEmpresa
            relacionamento.setId(relacionamentoId);
            if (usuariosSemSistema.get(i).getAcsEmpresa().getIdEmpresa() == 1) {
                relacionamento.setAtivo(true);
            } else {
                relacionamento.setAtivo(false);
            }
            session.saveOrUpdate(relacionamento);
            session.beginTransaction().commit();
        }
    }  
}

exemplo do bean utilizando o pacote da biblioteca de classes:

@ManagedBean
@SessionScoped
public class EmpresasBean {

    private AcsCidadeImp cidImp = new AcsCidadeImp();
    private AcsEmpresaImp empImp = new AcsEmpresaImp();
    private AcsUsuariosImp usuImp = new AcsUsuariosImp();
    private AcsEstadoImp estImp = new AcsEstadoImp();
    public List<AcsEstado> listEstados = new ArrayList<AcsEstado>();
    public List<AcsCidade> listCidades = new ArrayList<AcsCidade>();
    public List<AcsEmpresa> listEmpresas = new ArrayList<AcsEmpresa>();
    public AcsEmpresa empresa = new AcsEmpresa();
    public String fantasia = "";
    public BigInteger cnpj = BigInteger.ZERO;
    
    // parametros para inclusão da empresa
     public int idEstadoInc;
     public int idCidadeInc;
     public BigInteger cnpjEmpresaInc;
     public String razaoSocialInc;
     public String fantasiaInc;
     public String enredecoInc;
     public int numeroInc;
     public String complementoInc;
     public String bairroInc;
     public int dddInc;
     public int telefoneInc;
     public String emailInc;
    
    /**
     * Creates a new instance of EmpresasBean
     */
    public EmpresasBean() {
        listEmpresas = empImp.listEmpresas(fantasia, cnpj);
        listEstados = estImp.listaEstados();
    }
    
    public void startIncluEmpresa() {
        empresa = new AcsEmpresa();
        idEstadoInc = 35;
        listaCidades();
    }
    
    public void insereEmpresa() {
        instanciaEmpresa();
        empImp.insereEmpresa(empresa);
        fantasia = "";
        listEmpresas();
    }
    
    public void alteraEmpresa() {
        empImp.alteraEmpresa(empresa);
        listEmpresas();
    }
    
    public void excluiEmpresa() {
        System.out.println("EmpresasBean.excluiEmpresa(): " + empresa.getFantasia());
        List<AcsUsuarios> qtdUsuarios;
        qtdUsuarios = usuImp.listUsuariosByEmpresa(empresa);
        if (qtdUsuarios.size() > 0) {
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "O registro não pode ser excluido! ", "Existem usuários cadastrados para esta empresa!");
            FacesContext.getCurrentInstance().addMessage(null, msg); 
        } else if (empresa.getIdEmpresa() == 0) {
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "O registro não pode ser excluido! ", "Esta empresa não pode ser excluida!");
            FacesContext.getCurrentInstance().addMessage(null, msg); 
        } else {
            empImp.excluiEmpresa(empresa);
            empresa = new AcsEmpresa();
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Registro excluido com sucesso! ", null);
            FacesContext.getCurrentInstance().addMessage(null, msg); 
            fantasia = "";
            listEmpresas();
        }
    }
    
    private void instanciaEmpresa() {
        empresa = new AcsEmpresa();
        empresa.setAcsEstado(estImp.getEstadoById(idEstadoInc));
        empresa.setAcsCidade(cidImp.getCidadeById(idCidadeInc));
        empresa.setAtivo(true);
        empresa.setBairro(bairroInc);
        empresa.setCnpjEmpresa(cnpjEmpresaInc);
        empresa.setComplemento(complementoInc);
        empresa.setDdd(dddInc);
        empresa.setEmail(emailInc);
        empresa.setEnredeco(enredecoInc);
        empresa.setFantasia(fantasiaInc);
        empresa.setNumero(numeroInc);
        empresa.setRazaoSocial(razaoSocialInc);
        empresa.setTelefone(telefoneInc);
    }
    
    public void listaCidades() {
        listCidades = cidImp.listaCidadesByEstado(idEstadoInc);
    }
    
    public void listEmpresas() {
        System.out.println("EmpresasBean.listEmpresas():");
            listEmpresas = empImp.listEmpresas(fantasia, cnpj);
    }
    
    public List<AcsEmpresa> getListEmpresas() {
        return listEmpresas;
    }

    public void setListEmpresas(List<AcsEmpresa> listEmpresas) {
        this.listEmpresas = listEmpresas;
    }

    public AcsEmpresa getEmpresa() {
        return empresa;
    }

    public void setEmpresa(AcsEmpresa empresa) {
        this.empresa = empresa;
    }

    public String getFantasia() {
        return fantasia;
    }

    public void setFantasia(String fantasia) {
        this.fantasia = fantasia;
    }

    public BigInteger getCnpj() {
        return cnpj;
    }

    public void setCnpj(BigInteger cnpj) {
        this.cnpj = cnpj;
    }

    public List<AcsCidade> getListCidades() {
        return listCidades;
    }

    public void setListCidades(List<AcsCidade> listCidades) {
        this.listCidades = listCidades;
    }

    public List<AcsEstado> getListEstados() {
        return listEstados;
    }

    public void setListEstados(List<AcsEstado> listEstados) {
        this.listEstados = listEstados;
    }

    public int getIdEstadoInc() {
        return idEstadoInc;
    }

    public void setIdEstadoInc(int idEstadoInc) {
        this.idEstadoInc = idEstadoInc;
    }

    public int getIdCidadeInc() {
        return idCidadeInc;
    }

    public void setIdCidadeInc(int idCidadeInc) {
        this.idCidadeInc = idCidadeInc;
    }

    public BigInteger getCnpjEmpresaInc() {
        return cnpjEmpresaInc;
    }

    public void setCnpjEmpresaInc(BigInteger cnpjEmpresaInc) {
        this.cnpjEmpresaInc = cnpjEmpresaInc;
    }

    public String getRazaoSocialInc() {
        return razaoSocialInc;
    }

    public void setRazaoSocialInc(String razaoSocialInc) {
        this.razaoSocialInc = razaoSocialInc;
    }

    public String getFantasiaInc() {
        return fantasiaInc;
    }

    public void setFantasiaInc(String fantasiaInc) {
        this.fantasiaInc = fantasiaInc;
    }

    public String getEnredecoInc() {
        return enredecoInc;
    }

    public void setEnredecoInc(String enredecoInc) {
        this.enredecoInc = enredecoInc;
    }

    public int getNumeroInc() {
        return numeroInc;
    }

    public void setNumeroInc(int numeroInc) {
        this.numeroInc = numeroInc;
    }

    public String getComplementoInc() {
        return complementoInc;
    }

    public void setComplementoInc(String complementoInc) {
        this.complementoInc = complementoInc;
    }

    public String getBairroInc() {
        return bairroInc;
    }

    public void setBairroInc(String bairroInc) {
        this.bairroInc = bairroInc;
    }

    public int getDddInc() {
        return dddInc;
    }

    public void setDddInc(int dddInc) {
        this.dddInc = dddInc;
    }

    public int getTelefoneInc() {
        return telefoneInc;
    }

    public void setTelefoneInc(int telefoneInc) {
        this.telefoneInc = telefoneInc;
    }

    public String getEmailInc() {
        return emailInc;
    }

    public void setEmailInc(String emailInc) {
        this.emailInc = emailInc;
    }
}

Conseguem dar uma força?

Bom dia pessoal.

Estou fazendo uns outros testes aqui, criei a biblioteca java com as classes de persistencia, mapeamentos do hibernate e as classes de implementação e inclui uma classe de testes com um metodo principal (projeto AcessoJava). Ao rodar esta classe, dentro do pacote java, é apresentado no log os valores buscados do banco (funcionando certinho):

...........
    public static void main(String[] args) {
        // TODO code application logic here
        Teste teste = new Teste();
        teste.listUsuarios();
    }
    
    public void listUsuarios(){
        List<AcsUsuarios> list;
        AcsEmpresa emp = empImp.getEmpresaById(1);
        list = usuImp.listUsuariosByEmpresa(emp);
        for (int i=0; i<list.size();i++) {
            System.out.println(list.get(i).getNomeUsuario() + " " + list.get(i).getAcsEmpresa().getFantasia());
        }
    }
.................

criei uma aplicação web, e incluí o projeto AcessoJava, criei um bean de teste listando a mesma coisa do arquivo de teste acima e criei uma pagina xhtml usando o list do bean para exibição (projeto Acesso):

@ManagedBean
@ViewScoped
public class testeBean {

    AcsUsuariosImp usuImp;
    AcsEmpresaImp empImp;
    List<AcsUsuarios> list;
    /**
     * Creates a new instance of testeBean
     */
    public testeBean() {
        listar();
    }
    
    public void listar() {
        empImp = new AcsEmpresaImp();
        usuImp = new AcsUsuariosImp();
        AcsEmpresa emp = empImp.getEmpresaById(1);
        list = usuImp.listUsuariosByEmpresa(emp);
    }

    public List<AcsUsuarios> getList() {
        return list;
    }

    public void setList(List<AcsUsuarios> list) {
        this.list = list;
    }
}

Ao executar o projeto Acesso, tenho a seguinte mensagem de erro:

java.lang.ExceptionInInitializerError
	at br.com.jvmsoftware.acessojava.util.HibernateUtil.<clinit>(HibernateUtil.java:28)
	at br.com.jvmsoftware.acessojava.implement.AcsEmpresaImp.<init>(AcsEmpresaImp.java:30)
	at br.com.jvmsoftware.acesso.beans.testeBean.listar(testeBean.java:34)
	at br.com.jvmsoftware.acesso.beans.testeBean.<init>(testeBean.java:30)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
	at java.lang.Class.newInstance(Class.java:374)
	at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
	at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
	at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
	at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
	at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
	at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:69)
	at org.apache.el.parser.AstValue.getTarget(AstValue.java:68)
	at org.apache.el.parser.AstValue.getType(AstValue.java:56)
	at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:174)
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)
	at org.primefaces.component.datatable.DataTable.isLazy(DataTable.java:968)
	at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:191)
	at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:108)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
	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:103)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.NoClassDefFoundError: javax/persistence/JoinTable
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:272)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
	at br.com.jvmsoftware.acessojava.util.HibernateUtil.<clinit>(HibernateUtil.java:24)
	... 48 more
Caused by: java.lang.ClassNotFoundException: javax.persistence.JoinTable
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
	... 52 more

Pergunto:

  1. É possível utilizar uma biblioteca java contendo hibernate em uma aplicação web?
  2. Se possível, é necessária alguma configuração expecífica para isso?
  3. como minha configuração hibernate funciona diretamente no AcessoJava, porque recebo a mensagem de erro acima?

Pessoal, estavam faltando as bibliotecas de persistencia, driver mysql e c3p0 no projeto Acesso (web).

Valeu.