Erro no session do meu hibernate

2 respostas
chal10

Olá pessoal,
Ao fazer o 15.7 - Exercício opcional da apostila da caelum fj21 e execulta meu programa tive um Erro no session do meu hibernate, segue o erro abaixo:

08/01/2012 20:12:51 org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\MySQL\MySQL Server 5.5\bin;"C:\Program Files (x86)\Zend\ZendServer\bin";"C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\bin" 08/01/2012 20:12:51 org.apache.tomcat.util.digester.SetPropertiesRule begin AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:fj21-agenda01' did not find a matching property. 08/01/2012 20:12:51 org.apache.tomcat.util.digester.SetPropertiesRule begin AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:JSP_Com_hibernate' did not find a matching property. 08/01/2012 20:12:51 org.apache.coyote.AbstractProtocolHandler init INFO: Initializing ProtocolHandler ["http-bio-8080"] 08/01/2012 20:12:51 org.apache.coyote.AbstractProtocolHandler init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 08/01/2012 20:12:51 org.apache.catalina.startup.Catalina load INFO: Initialization processed in 957 ms 08/01/2012 20:12:51 org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina 08/01/2012 20:12:51 org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.14 08/01/2012 20:12:53 org.apache.coyote.AbstractProtocolHandler start INFO: Starting ProtocolHandler ["http-bio-8080"] 08/01/2012 20:12:53 org.apache.coyote.AbstractProtocolHandler start INFO: Starting ProtocolHandler ["ajp-bio-8009"] 08/01/2012 20:12:53 org.apache.catalina.startup.Catalina start INFO: Server startup in 1691 ms Iniciando Férias programando com método init... 08/01/2012 20:14:21 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() for servlet [AdicionaProduto] in context with path [/JSP_Com_hibernate] threw exception [Servlet execution threw an exception] with root cause java.lang.ClassNotFoundException: org.hibernate.Session at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) at br.com.caelum.agenda.servlet.AdicionaProdutoServlet.service(AdicionaProdutoServlet.java:67) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 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:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) 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:563) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311) 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)

Uso uma servlet para adicionar produtos no meu banco, que segue abaixo:

package br.com.caelum.agenda.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.Session;

import br.com.caelum.hibernate.HibernateUtil;
import br.com.caelum.hibernate.dao.ProdutoDAO;
import br.com.caelum.hibernate.modelo.Produto;

/**
 * Servlet implementation class AdicionaProdutoServlet
 */

public class AdicionaProdutoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AdicionaProdutoServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("Iniciando Férias programando com método init...");
	}

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("Terminando o programa com método destroy...");
	}

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		// busca o writer
		PrintWriter out = response.getWriter();

		// buscando os parâmetros no request
		String nome = request.getParameter("nome");
		String descricao = request.getParameter("descricao");
		String precoEmTexto = request.getParameter("preco");

		//tranforma strig em double
		//double preco = Double.parseDouble(precoEmTexto);		
		
		// monta um objeto contato
		Produto produto = new Produto();
		produto.setNome(nome);
		produto.setDescricao(descricao);
		produto.setPreco(200.50);

		// salva o contato
		Session session = new HibernateUtil().getSession();
		ProdutoDAO dao = new ProdutoDAO(session);
		
		session.beginTransaction();
		dao.salva(produto);
		session.getTransaction().commit();
		session.close();

		// imprime o nome do contato que foi adicionado
		out.println("<html>");
		out.println("<body>");
		out.println("Contato " + produto.getNome() + " adicionado com sucesso");
		out.println("</body>");
		out.println("</html>");
	}

}

minha classe HibernateUtil:

package br.com.caelum.hibernate;

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

import br.com.caelum.hibernate.modelo.Produto;

//imports omitidos
public class HibernateUtil {
	private static SessionFactory factory;
	
	static {
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Produto.class);
		factory = cfg.buildSessionFactory();
	}
	
	public Session getSession() {
		return factory.openSession();
	}
}

minha classe ProdutoDAO:

package br.com.caelum.hibernate.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import br.com.caelum.hibernate.modelo.Produto;

public class ProdutoDAO {
	private Session session;


	public ProdutoDAO(Session session) {
		this.session = session;
	}

	public void salva(Produto p) {
		this.session.save(p);
	}

	public void remove(Produto p) {
		this.session.delete(p);
	}

	public Produto procura(Long id) {
		return (Produto) this.session.load(Produto.class, id);
	}

	public void atualiza(Produto p) {
		this.session.update(p);
	}

	public List<Produto> listaTudo() {
		return this.session.createCriteria(Produto.class).list();
	}
	
	public List<Produto> pagina (int inicio, int quantia) {
		return this.session.createCriteria(Produto.class).setMaxResults(quantia).setFirstResult(inicio).list();
	}
	
	public List<Produto> precoMaiorQue(double preco) {
		Query query = this.session.createQuery("from Produto where preco > :preco");
		query.setDouble("preco", preco);
		return query.list();
	}
}

Como corrigir esse problema?

2 Respostas

Hebert_Coelho

Olhe a mensagem de erro: java.lang.ClassNotFoundException: org.hibernate.Session

Essa mensagem aí indica que ele não conseguiu a achar a classe. Você adicinou as bibliotecas?

chal10

sim, eu consigo inserir com a classe TestaProdutoDAO que esta no mesmo projeto, porém essa classe não é uma servlet, elas insere perfeitamente e esta logo abaixo:

package br.com.caelum.hibernate;

import org.hibernate.Session;
import br.com.caelum.hibernate.dao.ProdutoDAO;
import br.com.caelum.hibernate.modelo.Produto;

public class TestaProdutoDAO {
	
	public static void main(String[] args) {
		
		Session session = new HibernateUtil().getSession();
		ProdutoDAO dao = new ProdutoDAO(session);
		
		Produto produto = new Produto();
		//... popule os dados do produto aqui!
		produto.setNome("Pajeiro 4x4");
		produto.setDescricao("mitsubishi?");
		produto.setPreco(200.50);
		
		session.beginTransaction();
		dao.salva(produto);
		session.getTransaction().commit();
		session.close();
	}
}
Criado 8 de janeiro de 2012
Ultima resposta 8 de jan. de 2012
Respostas 2
Participantes 2