【问题标题】:Spring Batch - Connection Refused in some Unit TestsSpring Batch - 某些单元测试中拒绝连接
【发布时间】:2012-02-23 15:55:35
【问题描述】:

如果我一起运行 all(31) 个单元测试,我会在 2 - 3 个单元测试中出现以下连接错误,但是如果我单独运行这些测试,则运行成功。你能指导我这个奇怪的行为吗?我正在使用 Spring 3.0.6、Spring batch 2.1.7 和 Oracle XE 数据库。

下面是错误

java.lang.IllegalStateException:无法加载 ApplicationContext 在 org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:308) 在 org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109) 在 org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75) 在 org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 在 org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 在 org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 在 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 在 org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 在 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 在 org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 在 org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 在 org.junit.runners.ParentRunner.run(ParentRunner.java:236) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) 在 org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 原因:org.springframework.beans.factory.BeanCreationException:在类路径资源 [simple-job-launcher-context.xml] 中定义名称为“jobRepository”的 bean 创建错误:调用 init 方法失败;嵌套异常是 org.springframework.jdbc.support.MetaDataAccessException:无法获取用于提取元数据的连接;嵌套异常是 org.springframework.jdbc.CannotGetJdbcConnectionException: 无法获取 JDBC 连接;嵌套异常是 java.sql.SQLRecoverableException:IO 错误:网络适配器无法建立连接 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) ... 40 更多 原因:org.springframework.jdbc.support.MetaDataAccessException:无法获取用于提取元数据的连接;嵌套异常是 org.springframework.jdbc.CannotGetJdbcConnectionException: 无法获取 JDBC 连接;嵌套异常是 java.sql.SQLRecoverableException:IO 错误:网络适配器无法建立连接 在 org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:293) 在 org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:320) ... 47 更多 引起:org.springframework.jdbc.CannotGetJdbcConnectionException:无法获得JDBC连接;嵌套异常是 java.sql.SQLRecoverableException:IO 错误:网络适配器无法建立连接 在 org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) 在 org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:280) ... 52 更多 引起:java.sql.SQLRecoverableException:IO错误:网络适配器无法建立连接 在 oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419) 在 oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:536) ...... 在 org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:840) 在 org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96) 在 org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880) 在 org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) 在 org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) ... 53 更多 原因:oracle.net.ns.NetException:网络适配器无法建立连接 在 oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:375) ..................... 在 oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1054) 在 oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:308) ... 64 更多 引起:java.net.ConnectException:连接被拒绝:连接 在 java.net.PlainSocketImpl.socketConnect(本机方法) ...................... 在 oracle.net.nt.ConnOption.connect(ConnOption.java:123) 在 oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:353) ... 69 更多

【问题讨论】:

  • 测试是并行运行还是一个接一个地运行?
  • 一个接一个。我认为这就是 maven 和 eclipse 的运行方式。
  • 我更感兴趣的是:一个测试中的所有附加线程是否在下一次开始之前完成。
  • 我在单元测试中没有启动线程。这些是非常简单的测试类。我在每个类的顶部使用 @RunWith(SpringJUnit4ClassRunner.class) 和 @ContextConfiguration(context.xml) 注释。你认为每次加载上下文都是问题吗?
  • 而 Spring Batch 没有开始工作?

标签: junit database-connection spring-batch


【解决方案1】:

类似的事情以前发生在我身上。当我将数据库的 IP 从 127.0.0.1 更改为 192.168.1.27(我的计算机在我的网络中的 IP,它可以在 windows 中进行 ip config 或在 linux 中进行 ifconfig 时找到)时解决了。这可能不是一个永久的解决方案,但它可以躲过一劫。

【讨论】:

    【解决方案2】:

    刚刚遇到同样的问题: 根本原因: 已使用所有可用连接

    解决方案: 使用后关闭连接。

    【讨论】:

      猜你喜欢
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 2021-06-24
      • 2021-02-23
      相关资源
      最近更新 更多