【问题标题】:TomEE-Oracle connectivity: Connection has already been closedTomEE-Oracle 连接:连接已关闭
【发布时间】:2018-11-27 07:53:24
【问题描述】:

我有一些数据库插入/更新操作需要 10 多分钟才能完成,因为它们处理非常大的数据集。

我在 TomEE 中对数据源进行了以下配置:

<Resource id="BSLDataSource" type="javax.sql.DataSource">
    DefaultAutoCommit = false
    JdbcDriver = oracle.jdbc.OracleDriver
    JdbcUrl = jdbc:oracle:thin:@host:port:sid
    JmxEnabled = true
    JtaManaged = true
    LogAbandoned = true
    MaxActive = 500
    MaxIdle = 5
    MaxWait = 10000
    MinEvictableIdleTimeMillis = 1800000
    MinIdle = 0
    NumTestsPerEvictionRun = 3
    Password = my-password
    RemoveAbandoned = true
    RemoveAbandonedTimeout = 600
    TestOnBorrow = true
    TestOnReturn = true
    TestWhileIdle = true
    TimeBetweenEvictionRunsMillis = 600000
    UserName = my-user
    ValidationQuery = SELECT 1 FROM DUAL
</Resource>

在运行此类操作时,我收到异常消息:java.sql.SQLException: Connection has already been closed

我需要进行哪些配置更改,以便:

  • 成功执行长时间运行的数据库查询
  • 未使用的连接正确关闭

我尝试添加一个新属性:ConnectionProperties = oracle.net.CONNECT_TIMEOUT=3600000;oracle.jdbc.ReadTimeout=3600000,但没有成功。

更新

设置:

  • MaxIdle = 10
  • MinEvictableIdleTimeMillis = 3600000
  • MinIdle = 5
  • TimeBetweenEvictionRunsMillis = 3600000

运气不好。

【问题讨论】:

    标签: oracle tomcat jdbc apache-tomee tomee-7


    【解决方案1】:

    你可以使用服务名称并使用这种格式的 URL 吗? jdbc:oracle:thin:@myhost:1521/myorcldbservicename

    另外,你能通过 sqlplus 或 sqldeveloper 获得连接吗?

    【讨论】:

      猜你喜欢
      • 2017-06-19
      • 2012-07-04
      • 1970-01-01
      • 2016-07-18
      • 2013-05-31
      • 1970-01-01
      相关资源
      最近更新 更多