1. 程式人生 > >[jcc][t4][10120][10898][3.57.82] 操作無效:已關閉 result set。 ERRORCODE=-4470, SQLSTATE=null

[jcc][t4][10120][10898][3.57.82] 操作無效:已關閉 result set。 ERRORCODE=-4470, SQLSTATE=null

使用DB2+Websphere+JNDI報了下面這個錯誤。

com.ibm.db2.jcc.am.SqlException: [jcc][t4][10120][10898][3.57.82] 操作無效:已關閉 result set。 ERRORCODE=-4470, SQLSTATE=null  
    at com.ibm.db2.jcc.am.bd.a(bd.java:660)  
    at com.ibm.db2.jcc.am.bd.a(bd.java:60)  
    at com.ibm.db2.jcc.am.bd.a(bd.java:103)  
    at com.ibm.db2.jcc.am.zl.Db(zl.java:4219)  
    at com.ibm.db2.jcc.am.zl.c(zl.java:314)  
    at com.ibm.db2.jcc.am.zl.next(zl.java:293)  
    at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.next(WSJdbcResultSet.java:3120) 

上面的錯誤資訊除錯了好久,不知道是什麼地方出錯了。
百度了好久都沒有出來相關結果,後來通過bing終於搜尋到了一條相關資訊,正是這條資訊解決我的問題。
Bing搜尋的關鍵字“jpa result set closed”,出來的第一條就是stackoverflow網站的資訊。
對關閉遊標問題進行故障診斷。

以下是日誌 org.apache.openjpa.persistence.PersistenceException 中的 DB2? 異常:
預設情況下,應用程式伺服器將 resultSetHoldability 定製屬性值配置為 2 (CLOSE_CURSORS_AT_COMMIT)。此屬性將導致 DB2 在事務邊界關閉其結果集/遊標。儘管 DB2 的預設 resultSetHoldability 值為 1 (HOLD_CURSORS_OVER_COMMIT),但應用程式伺服器將預設值保留為 2 以避免中斷與前發行版應用程式伺服器的相容性。可更改預設值。 注意: 如果此資料來源是 XA 資料來源,請對此資料來源定義新定製屬性,其中 property_name =downgradeHoldCursorsUnderXa,boolean value
 = true。
避免故障: 在 V8.0 中,如果使用 DB2 XA 資料來源,那麼需要進行下列配置以解決結果集已關閉問題: 解決這個錯誤只需要登入websphere的控制檯,再點選資源,資料來源,你使用的資料來源,再點選定製屬性
首先修改
這個屬性為
第二步新建一個屬性
之後用命令重啟伺服器就可以了。