[Resolvido?]Erro ao inicializar sessão via Servlet

5 respostas
Ijimero

Olá, estou tentando inicializar uma nova sessão no hibernate via Servlet, para trazer uma consulta, e está me retornando erro.

segue o erro:
SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Erroorg.hibernate.HibernateException: JDBC Driver class not found: org.gjt.mm.mysql.Driver

27/11/2012 09:54:11 org.apache.catalina.core.StandardWrapperValve invoke

GRAVE: Servlet.service() for servlet [CadastroUfsServlet] in context with path [/CadastroFiliais] threw exception [Servlet execution threw an exception] with root cause

java.lang.ExceptionInInitializerError

at br.com.intranet.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:22)

at br.com.intranet.util.HibernateUtil.(HibernateUtil.java:10)

at br.com.intranet.dao.CadastroCidadesDao.(CadastroCidadesDao.java:32)

at br.com.intranet.servlet.CadastroUfsServlet.processRequest(CadastroUfsServlet.java:28)

at br.com.intranet.servlet.CadastroUfsServlet.doGet(CadastroUfsServlet.java:37)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

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

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

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

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

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

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

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)

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

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

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

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

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

meu servlet:

package br.com.intranet.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;

import br.com.intranet.dao.CadastroCidadesDao;
import br.com.intranet.dao.CadastroUfsDao;
import br.com.intranet.vo.CadastroCidades;
import br.com.intranet.vo.CadastroUfs;

import com.sun.xml.internal.ws.util.Pool.Marshaller;

@WebServlet(name="CadastroUfsServlet", urlPatterns={"/cadastroUfsServlet"})
public class CadastroUfsServlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/xml;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String action = request.getParameter("action");
        if ("preencherCidades".equalsIgnoreCase(action)) {
            System.out.println("Preechendo cidades ...");
            int estado = Integer.parseInt(request.getParameter("estado"));
            System.out.println("Estado selecionado: " + estado);
            CadastroCidadesDao cadcidD = new CadastroCidadesDao();
            List<CadastroCidades> listCidade = cadcidD.listAll();
            
            try {
                JAXBContext ctx = JAXBContext.newInstance(CadastroCidades.class);
                javax.xml.bind.Marshaller marshaller = ctx.createMarshaller();
                marshaller.marshal(listCidade, out);
            } catch (JAXBException e) {
                throw new ServletException(e);
            }
        }
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

}

meu hibernateUtil:

package br.com.intranet.util;

import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;

public class HibernateUtil {
	private static final SessionFactory sF = buildSessionFactory();
	private static final ThreadLocal threadSession = new ThreadLocal();
	private static final ThreadLocal threadTransaction = new ThreadLocal();
	private static final ThreadLocal threadInterceptor = new ThreadLocal();
	
	public static SessionFactory buildSessionFactory(){
		try{
			Configuration cfg = new Configuration();
			cfg.configure();
			return cfg.buildSessionFactory();
		}catch(Throwable e){
			System.out.println("Erro ao criar session factory. \n Erro" + e);
			throw new ExceptionInInitializerError();
		}
	}
	
	public static SessionFactory getSf(){
		return sF;
	}
	
	public static void closeSession() throws HibernateException {
		try {
			Session s = (Session) threadSession.get();
			threadSession.set(null);
			if (s != null && s.isOpen()) {
				s.close();
			}
		} catch (HibernateException ex) {
			throw new RuntimeException(ex);
		}
	}

	public static void rollbackTransaction() throws HibernateException {
		Transaction tx = (Transaction) threadTransaction.get();
		try {
			threadTransaction.set(null);
			if (tx != null && !tx.wasCommitted() && !tx.wasRolledBack()) {
				tx.rollback();
			}
		} catch (HibernateException ex) {
			throw new RuntimeException(ex);
		} finally {
			closeSession();
		}
	}
}
e além disso as vezes ele retorna o seguinte erro:

GRAVE: Servlet.service() for servlet [CadastroUfsServlet] in context with path [/CadastroFiliais] threw exception [Servlet execution threw an exception] with root cause

java.lang.NoClassDefFoundError: Could not initialize class br.com.intranet.util.HibernateUtil

at br.com.intranet.dao.CadastroCidadesDao.(CadastroCidadesDao.java:31)

at br.com.intranet.servlet.CadastroUfsServlet.processRequest(CadastroUfsServlet.java:34)

at br.com.intranet.servlet.CadastroUfsServlet.doGet(CadastroUfsServlet.java:49)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

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

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

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

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

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

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

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)

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

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

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

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

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

alguém pode me dar uma luz?!

ja verifiquei os jars e acredito que não está faltando nada, e se eu fizer a mesma consulta em outra classe que não o servlet, eu recebo o resultado esperado.

5 Respostas

Hebert_Coelho

Está faltando o jar do mysql:

Ijimero

então, como eu disse antes, eu chequei todos os meus jars, e não parece estar faltando nada…

eu consigo fazer a busca/inserção/edição/remoção de dados do banco tranquilamente em outras classes, apenas via servlet que eu estou tendo esse erro.

Ijimero

aqui estão os meus jars

Ijimero

bom, depois de muito garimpar na web e fazer inúmeros testes sem solução, resolvi testar o mesmo projeto em outra máquina e funcionou…

já tem um tempo que meu notebook ta meio bixado anyways… mesmo assim, isso ainda pode significar alguma configuração errada no Eclipse, ou coisa parecida.

ainda estou aceitando sugestões =)

Ijimero

um último up só pra n dizer que eu desisti completamente já que estou conseguindo continuar o desenvolvimento do meu projeto

Criado 26 de novembro de 2012
Ultima resposta 28 de nov. de 2012
Respostas 5
Participantes 2