【问题标题】:junit + spring - Listener refused the connection with the following errorjunit + spring - 侦听器拒绝连接并出现以下错误
【发布时间】:2014-03-27 18:31:40
【问题描述】:

我正在使用 spring 应用程序上下文运行 junit 测试。 上下文创建:

@Before
public void setUp() throws Exception {
    System.out.println("setUp start");
    ctx = new ClassPathXmlApplicationContext("/appContext.xml", "/databaseContext.xml");
    bean1 = (Bean1) ctx.getBean("bean1");
    bean2 = (Bean2) ctx.getBean("bean2");       
    System.out.println("setUp end");
}

问题是我在测试数据库功能时遇到奇怪的错误。它工作正常,与数据库的连接已建立,但如果测试运行时间更长(> 1 分钟),我会收到奇怪的错误。看起来连接/会话已关闭。我不明白为什么以及到底发生了什么。

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection
at         org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:596)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodI

Caused by: org.hibernate.exception.GenericJDBCException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555)
... 46 more

Caused by: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
The Connection descriptor used by the client was:
CRS123:1521:WEBTEST1

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:420)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
... 51 more

日食 爪哇 6 春天 3.1 休眠 3.6.1 Oracle 数据库 11g 企业版

DBContext.xml:

<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="url">
        <value>jdbc:oracle:thin:CRS123:1521:WEBTEST1</value>
    </property>
    <property name="driverClassName">
        <value>oracle.jdbc.driver.OracleDriver</value>
    </property>
    <property name="username">
        <value>batman</value>
    </property>
    <property name="password">
        <value>batman</value>
    </property>
</bean>

<bean id="hibernateTemplate"
    class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory">
        <ref bean="sessionFactory" />
    </property>
</bean>

<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
        <ref local="sessionFactory" />
    </property>
</bean>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
    <property name="mappingResources">
        <list>
            .....
            .....
            ....
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">
                org.hibernate.dialect.Oracle10gDialect
            </prop>
            <prop key="hibernate.connection.release_mode">
                auto
            </prop>
        </props>
    </property>
</bean>    
</beans>

请帮忙,这里有什么问题? 谢谢

【问题讨论】:

    标签: java database spring hibernate junit


    【解决方案1】:

    您没有替换数据库主机、端口、实例名称 -

    例如

    url = jdbc:oracle:thin:host:port:instance

    我期待 -

    jdbc:oracle:thin:localhost:1521:yourdb

    您还需要指定用户名和密码

    作为测试,尝试从 SQL 客户端将您的 url、用户名和密码版本连接到数据库

    【讨论】:

    • 误解了。这只是没有真实姓名的例子,但我改变了它。只是为了澄清一下,建立了连接,它工作正常,但是当它测试运行时间更长(超过 1 分钟)时,我得到了这个错误
    • 您是否在每次测试后断开连接?
    • 不,我根本不对连接做任何事情。 Spring/Hibernate 照顾它
    • 但是 DBContext 不是在每次调用 setup 时都创建一个新的连接,而且这些连接不会被拆除吗?
    • 听起来类似于这个[问题] (stackoverflow.com/questions/205160/…)
    猜你喜欢
    • 2012-08-03
    • 2017-08-07
    • 1970-01-01
    • 2022-01-02
    • 2023-03-12
    • 2012-10-12
    • 2018-07-16
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多