Hibernate 3.3.1.GA与HSQLDB 2.2.8和Jboss 5.1.0.GA拒绝连接

时间:2012-06-15 09:51:07

标签: hibernate java-ee jboss ejb-3.0 hsqldb

发生了一些奇怪的事情,我创建了一个EJB3,它可以在DB中编写一些内容,但每次HSQLDB都拒绝连接:

a pre-9.0 client attempted to connect. we rejected them

但是我使用的是2.2.8,因为它是由maven链接的,所以没有错误。

这是我的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.connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost</property>
        <property name="hibernate.connection.username">sa</property>
        <property name="connection.password"></property>
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>
        <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>

        <property name="configurationClass">
            org.hibernate.cfg.AnnotationConfiguration
        </property>
        <property name="hibernate.transaction.manager_lookup_class">
            org.hibernate.transaction.JBossTransactionManagerLookup
        </property>
        <property name="hibernate.transaction.factory_class">
            org.hibernate.transaction.CMTTransactionFactory
        </property>
        <property name="hibernate.jndi.class">
            org.jnp.interfaces.NamingContextFactory
        </property>
        <property name="hibernate.session_factory_name">
            hibernate/HSQLDBSessionFactory
        </property>

        <!-- Disable the second-level cache -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>

        <property name="javax.persistence.validation.mode">none</property>
         <!-- Mapping files -->
        <mapping class="com.th.entity.TestEntity"/>
    </session-factory>
</hibernate-configuration>

我在EJB中正在做的事情:

    HibernateUtil3.getSessionFactory().getCurrentSession().persist(entity);
    HibernateUtil3.getSessionFactory().getCurrentSession().close();

我的HibernateUtil3:

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

/**
 *
 * @author adam
 */
public class HibernateUtil3 {

    private static final SessionFactory sessionFactory = buildSessionFactory();//constroi a sessão

    private static SessionFactory buildSessionFactory() {
        try {
            //Configuration cfg = new Configuration();//para mapeamento xml
            AnnotationConfiguration cfg = new AnnotationConfiguration();//para mapeamento com annotations
            cfg.configure("hibernate.cfg.xml");//arquivo de configuração do hibernate
            return cfg.buildSessionFactory();
        } catch (Throwable e) {
            System.out.println("Criação inicial do objeto SessionFactory falhou. Erro: " + e);
            throw new ExceptionInInitializerError(e);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

任何想法? 谢谢= D

1 个答案:

答案 0 :(得分:1)

您需要使用HSQLDB 2.2.8版jar替换JBoss附带的hsqldb.jar。