我在 java Web 应用程序中使用 Hibernate 从 Oracle 11g 获取 CLOB 数据时收到“java.sql.SQLRecoverableException: Closed Connection”异常。对于数据库连接,我已经实现了 Tomcat 7 数据源。
以下是我得到异常的来源:
java.sql.Clob reqClob= userBean.getRequestData();
Reader clbReader = reqClob.getCharacterStream();
在上面的代码中执行“clob.getCharacterStream()”时,我遇到了异常:
java.sql.SQLRecoverableException: Closed Connection
at oracle.sql.CLOB.getDBAccess(CLOB.java:1389)
at oracle.sql.CLOB.getCharacterStream(CLOB.java:309)
at org.hibernate.lob.SerializableClob.getCharacterStream(SerializableClob.java:41)
请注意,我可以从 userBean 获取其他值的数据。
以下是我在应用程序中使用的应用程序版本:
jdk1.6.0_33 (64bit version)
hibernate3.jar
ojdbc6.jar
Oracle 11g 11.2.0.1.0 - (64bit version)
一个奇怪的行为是,一旦我开始使用 TOMCAT 7 数据源,就会遇到这个问题。
下面是来自 Context.xml 的数据源代码:
<Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver"
factory="oracle.jdbc.pool.OracleDataSourceFactory" name="jdbc/XXXX" password="XXXXX"
type="oracle.jdbc.pool.OracleDataSource"
url="jdbc:oracle:thin:@xx.xx.xx.xxxx:xxxx:xxxxxx" user="username"
connectionProperties="SetBigStringTryClob=true;" maxActive="20"
maxIdle="10" maxWait="-1" validationQuery="select 1 from dual" />
我已经在上面的代码中尝试了所有可能的参数,但是没有用。
提前感谢您的所有帮助,伙计们...