Oracle JDBC connection with Weblogic 10 datasource mapping, giving problem java.sql.SQLException: Closed Connection
-
20-09-2019 - |
Question
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" 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>
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?
Solution 2
Problem was due to connection sharing across code.... bad programming.... :( corrected it.... thanks
OTHER TIPS
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>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow