Oracle JDBC connection with Weblogic 10 datasource mapping, giving problem java.sql.SQLException: Closed Connection
I am using weblogic 10 JNDI datasource to create JDBC connections, below is my config
<?xml version="1.0" e开发者_JAVA百科ncoding="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>
When I run a bulk task where there are lots of connections made and closed, sometimes it gives connection closed exception for any of the task in the bulk task.
Below is detailed exception'
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)
Any ideas?
You can change <global-transactions-protocol> parameter to none and execute the code:
<jdbc-data-source-params>
<jndi-name>ReferenceData</jndi-name>
<global-transactions-protocol>none</global-transactions-protocol>
</jdbc-data-source-params>
Problem was due to connection sharing across code.... bad programming.... :( corrected it.... thanks
加载中,请稍侯......
精彩评论