【问题标题】:Oracle JDBC connection with Weblogic 10 datasource mapping, giving problem java.sql.SQLException: Closed ConnectionOracle JDBC 连接与 Weblogic 10 数据源映射,给出问题 java.sql.SQLException: Closed Connection
【发布时间】:2011-01-27 13:59:29
【问题描述】:

Oracle JDBC 连接与 Weblogic 10 数据源映射,给出问题 java.sql.SQLException: Closed Connection

我正在使用 weblogic 10 JNDI 数据源来创建 JDBC 连接,下面是我的配置

<?xml version="1.0" encoding="UTF-8"?>
<jdbc-data-source xmlns="http://www.bea.com/ns/weblogic/90" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/920 http://www.bea.com/ns/weblogic/920.xsd">
  <name>XL-Reference-DS</name>
  <jdbc-driver-params>
    <url>jdbc:oracle:oci:@abc.XL.COM</url>
    <driver-name>oracle.jdbc.driver.OracleDriver</driver-name>
    <properties>
      <property>
        <name>user</name>
        <value>DEV_260908</value>
      </property>
      <property>
        <name>password</name>
        <value>password</value>
      </property> 
      <property>
        <name>dll</name>
        <value>ocijdbc10</value>
      </property>
      <property>
        <name>protocol</name>
        <value>oci</value>
      </property> 
      <property>
        <name>oracle.jdbc.V8Compatible</name>
        <value>true</value>
      </property>
      <property>
        <name>baseDriverClass</name>
        <value>oracle.jdbc.driver.OracleDriver</value>
      </property>
    </properties>
  </jdbc-driver-params>
  <jdbc-connection-pool-params>
    <initial-capacity>1</initial-capacity>
    <max-capacity>100</max-capacity>
    <capacity-increment>1</capacity-increment>
    <test-connections-on-reserve>true</test-connections-on-reserve>
    <test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
  </jdbc-connection-pool-params>
  <jdbc-data-source-params>
    <jndi-name>ReferenceData</jndi-name>
    <global-transactions-protocol>OnePhaseCommit</global-transactions-protocol>
  </jdbc-data-source-params>
</jdbc-data-source>

当我运行一个有大量连接建立和关闭的批量任务时,有时它会为批量任务中的任何任务提供连接关闭异常。

下面是详细的异常'

java.sql.SQLException: Closed Connection
 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
 at oracle.jdbc.driver.OracleStatement.ensureOpen(OracleStatement.java:3512)
 at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3265)
 at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3367)

有什么想法吗?

【问题讨论】:

  • 假设某些连接正常,这可能不是配置问题。可能是您的批量任务的代码 - 它不是通过单个打开和关闭连接块运行吗?

标签: oracle exception weblogic datasource weblogic-10.x


【解决方案1】:

您可以将&lt;global-transactions-protocol&gt;参数更改为none并执行代码:

<jdbc-data-source-params>
    <jndi-name>ReferenceData</jndi-name>
    <global-transactions-protocol>none</global-transactions-protocol>
</jdbc-data-source-params> 

【讨论】:

    【解决方案2】:

    问题是由于代码之间的连接共享造成的...... 糟糕的编程.... :( 纠正它.... 谢谢

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 2017-01-31
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 2016-09-13
      相关资源
      最近更新 更多