Problema de conexão a JNDI com Hibernate na Locaweb

2 respostas
D

Boa tarde, estou inciando deenvolvimento java profissional, e este é o meu primeiro tópico neste fórum. Pena que seja em uma situação de desespero =)

Eu desenvolvi uma aplicação, relativamente, simples baseado nas apostilas do curso fj-21 e fj-28 da Caelum, utilizando VRaptor e Hibernate (com Hibernate Annotations).

A aplicação funciona sem nenhum problema na minha base (Tomcat 6.0.13, conexao jdbc diretamente), mas na hospedagem - Locaweb (Tomcat 5.5) com JVM dedicada - não funciona.

Na Locaweb, utilizando jdbc diretamente, a aplicação é bastaaaaante instável. Entretanto, desde quarta-feira, configuraram o JNDI para que eu possa utilizar, mas nada funciona com ele.

Segue o meu hibernate.properties:

hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.connection.datasource java:comp/env/jdbc/clientesocyal 
hibernate.show_sql = false

Segue o meu HibernateConf:

package br.com.segurotorcedor.conf;

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

import br.com.segurotorcedor.modelo.BrindeSorteio;
import br.com.segurotorcedor.modelo.Cliente;
import br.com.segurotorcedor.modelo.Clube;
import br.com.segurotorcedor.modelo.Link;
import br.com.segurotorcedor.modelo.Noticia;
import br.com.segurotorcedor.modelo.ParametrosGerais;
import br.com.segurotorcedor.modelo.PromocaoSorteio;

public class HibernateConf {

	private static SessionFactory factory;
	
	static {
		AnnotationConfiguration cfg = new AnnotationConfiguration();

		cfg.addAnnotatedClass(BrindeSorteio.class);
		cfg.addAnnotatedClass(Cliente.class);
		cfg.addAnnotatedClass(Clube.class);
		cfg.addAnnotatedClass(Link.class);
		cfg.addAnnotatedClass(Noticia.class);
		cfg.addAnnotatedClass(PromocaoSorteio.class);
		cfg.addAnnotatedClass(ParametrosGerais.class);
		
		factory = cfg.buildSessionFactory();
		
		System.out.println("rodou hibernateConf");
	}

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

Eu criei um pequeno jsp de teste, que pega a sessao diretamente do HibernateConf. Segue:

<%@page import="br.com.segurotorcedor.modelo.ParametrosGerais"%>
<%@page import="br.com.segurotorcedor.dao.ParametrosGeraisDAO"%>
<%@page import="org.hibernate.Transaction"%>
<%@page import="br.com.segurotorcedor.conf.HibernateConf"%>
<%@page import="org.hibernate.Session"%>
<%
		//Class.forName("br.com.segurotorcedor.conf.HibernateConf");

		Session session2 = HibernateConf.getSession();

		Transaction transaction = session2.beginTransaction();
		
		ParametrosGeraisDAO dao = new ParametrosGeraisDAO(session2);
		long l = 1;
		ParametrosGerais p =  dao.carregar(l);
		
		response.getWriter().write(p.getStrAdminLogin());
		
		transaction.commit();

O erro sempre acontece na linha onde é chamado o HibernateConf.getSession(). Tanto neste jsp de teste, qnt no DAOFactory qnd tento acessar a minha aplicação.

Chamando este jsp, o seguinte erro é apresentado (desculpa se tem coisa desnecessária, mas não estou conseguindo filtar mto bem esse log):

Já abri diversos chamados no suporte dessa empresa, mas eles insistem em afirmar que o erro é na minha aplicação, pois como criam um jsp para o teste do jndi (sem hibernate, claro) funciona, tanto no contexto add, qnt no principal.

Segue o testeJNDI.jsp:

<%@page language="java" import="java.io.*,java.sql.*,javax.sql.*,javax.naming.*" %>
<html>
<head>
<title>JNDI</title>
</head>
<body>
<%
                Connection conexao;
                ResultSet rs;
                DataSource ds;

        try {
                Context context = new InitialContext();
                Context lautx = (Context) context.lookup("java:comp/env");
                ds = (DataSource)lautx.lookup("jdbc/clientesocyal");

                conexao = ds.getConnection();
                out.write("Conectado via JNDI!<br><br>");
                Statement stmt= conexao.createStatement();

                conexao.close();

     } catch (SQLException sqle) {

     out.write("<======= OCORREU UMA EXCEPTION - VERIFICAR =======><br><br><br>" + sqle);
      sqle.printStackTrace();

        } finally {

   }
%>
</body>
</html>

Alguém já passou por problema parecido e pode me ajudar? Precisam de mais informações sobre minha aplicação? Já estou desesperado, pois não sei mais o que fazer para resolver esse problema.

Obrigado.

2 Respostas

D

Alguém sabe, pelo menos, se existe algum erro nesses arquivos?

Obrigado

D

O hibernate.properties estava errado, sem o sinal de igualdade. Entretanto, não sei como, acho que ele estava aceitando a configuração do mesmo jeito, visto que o problema persiste da mesma forma. =/

Sobre a configuração do tomcat deles, eles afirmam que está correta, pois disponibilizam um arq jsp de teste de conexao com JNDI que estah funcionando. =/

Mas o problema é que a conexao deste arq com o JNDI é direta, sem uso do hibernate (claro).

Segue algumas informações geradas no log do tomcat, junto com a exceção que está acontecendo:

Será que não é nenhum problema de incompatibilidades de versões? Do hibernate, tomcat, hibernate-annotions?

Realmente não sei como resolver =/

Estou utilizando:

  • Hibernate-Version: 3.2.4.sp1
  • Hibernate Annotations - Version: 3.3.0.GA
  • Hibernate Commons Annotations - Version: 3.0.0.GA
  • EJB Implementation-Version: 3.0 Final Release March 14 2007
  • VRaptor - version=2.3.3

e mais algumas outras libs.

Criado 14 de julho de 2007
Ultima resposta 16 de jul. de 2007
Respostas 2
Participantes 1