Hibernate error: You cannot getAutomcommit on an unassociate

2 respostas
E

Estou usando o Hibernate 2.1.3 e quando a Servlet é recompilada
depois da classe persistente, da este erro:

SEVERE: Could not execute query
org.firebirdsql.jdbc.FBSQLException: You cannot getAutomcommit on an unassociated closed connection.

Se depois eu recompilo somente a classe persistente e rodo o Tomcat de novo, funciona.

Detalhe: as minhas classes persistentes que estou fazendo em um exemplo nao estao em packages, esta tudo no mesmo diretorio da classe da Servlet. Tem algum problema?

2 Respostas

E

Eu estou usando o codigo sugerido no exemplo do Hibernate…

import java.sql.Connection;

import net.sf.hibernate.<em>;

import net.sf.hibernate.cfg.</em>;

public class HibernateUtil {

private static final SessionFactory sessionFactory;

static {
    try {
        // Create the SessionFactory
        sessionFactory = new Configuration().configure().buildSessionFactory();
    } catch (HibernateException ex) {
        throw new RuntimeException("Configuration problem: " + ex.getMessage(), ex);
    }
}

public static final ThreadLocal session = new ThreadLocal();

public static Session currentSession(Connection conn) throws HibernateException {
    Session s = (Session) session.get();
    // Open a new Session, if this Thread has none yet
    if (s == null) {
        s = sessionFactory.openSession(conn);
        session.set(s);
    }
    return s;
}

public static void closeSession() throws HibernateException {
    Session s = (Session) session.get();
    session.set(null);
    if (s != null)
        s.close();
}

}

Cada requisicao da servlet faz uma chamada assim:

Connection connLocal = ;

Session session = HibernateUtil.currentSession(connLocal);

onde connLocal é uma conexao capturada de um pool que

nao é o padrao do Tomcat/JNDI, mas que sempre funcionou

comigo em servlets nao Hibernate, inclusive sites com mais

de 100 acessos simultaneos.
ricinovacoes

Oi pessoal! A dúvida é do ano 2004, mas sempre tem alguém buscando por soluções:

Esta mensagem: “You cannot getAutocommit…” aconteceu comigo pelo motivo das 2 linhas dentro do “finally”; ele diz que aConnect está vazio, mas não pode ser, porque o programa funciona!

Connection aConnection=null;

try {

String Usuario ="";

String Password =“123456”;

String arq1 =“jdbc:firebirdsql://xxxx.xxxx.com.br//xxxx/xxxx/xxxxx.gdb”;

Class.forName(“org.firebirdsql.jdbc.FBDriver”);

aConnection = DriverManager.getConnection(arq1,Usuario,Password);

} catch (ClassNotFoundException ex) {

out.println(“




<b><a>Classe Firebird não encontrada! Voltar</a></b>”);

} catch (SQLException ex) {

out.println(“




<b><a>Arquivo xxxx Inexistente! Voltar</a></b>”);

} finally {

//try { if (aConnection != null) aConnection.close(); }

//catch (SQLException e) { }

}

abraços;

Criado 9 de junho de 2004
Ultima resposta 27 de out. de 2006
Respostas 2
Participantes 2