2010-03-15 158 views
0
使用Weblogic 10数据源映射

甲骨文JDBC连接,使问题java.sql.SQLException中:关闭连接甲骨文JDBC连接,使问题java.sql.SQLException中:关闭连接

我使用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) 

任何想法?

+1

假设一些连接正在工作,这可能不是一个配置问题。可能是您的批量任务的代码 - 是不是通过一个开放和关闭连接块运行? – JoseK 2010-03-15 09:00:43

回答

0

问题是由于整个代码共享连接.... 不好的编程.... :(纠正它.... 感谢

2

您可以<global-transactions-protocol>参数更改为none和执行代码:

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