2013-02-06 50 views
0

我正在使用DB2和JDBC,並且在我將連接閒置幾分鐘後第一次嘗試運行時,下面的代碼會引發SQLException。從第二次開始,它將以完全按照它的方式工作。連接空閒後發生SQLException

ResultSet.next()

任何想法什麼會導致異常?

異常跟蹤:

FFDC Exception:com.ibm.db2.jcc.am.lo SourceId:com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.next 
ProbeId:2624 Reporter: 
[email protected] 
com.ibm.db2.jcc.am.lo: The current transaction was rolled back because of error "-30108".. SQLCODE=-1476, SQLSTATE=40506, DRIVER=3.57.110 
at com.ibm.db2.jcc.am.bd.a(bd.java:663) 
at com.ibm.db2.jcc.am.bd.a(bd.java:60) 
at com.ibm.db2.jcc.am.bd.a(bd.java:127) 
at com.ibm.db2.jcc.am.am.b(am.java:3760) 
at com.ibm.db2.jcc.t4.eb.h(eb.java:278) 
at com.ibm.db2.jcc.t4.eb.a(eb.java:239) 
at com.ibm.db2.jcc.t4.eb.c(eb.java:31) 
at com.ibm.db2.jcc.t4.u.a(u.java:32) 
at com.ibm.db2.jcc.t4.j.Zb(j.java:259) 
at com.ibm.db2.jcc.am.am.X(am.java:3554) 
at com.ibm.db2.jcc.t4.d.f(d.java:1881) 
at com.ibm.db2.jcc.am.gc.a(gc.java:200) 
at com.ibm.db2.jcc.t4.d.a(d.java:109) 
at com.ibm.db2.jcc.am.am.c(am.java:366) 
at com.ibm.db2.jcc.am.am.next(am.java:293) 
at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.next(WSJdbcResultSet.java:3120) 
+0

沒有看到異常細節,很難說出發生了什麼。但一個可能的原因可能是查詢陳舊的連接。 – kosa

+0

請參閱編輯 –

回答

3

「外部」 SQL Code, -1476,表明該事務回滾,因爲「內部」 SQL Code, -30108,它說回來:

的連接失敗,但已重新建立。特殊註冊 設置可能已被重播。新連接的主機名或IP地址爲 :host-name。新的 連接的服務名稱或端口號:服務名稱。原因碼:原因碼。

我想你的連接超時了,它會下降。

+0

我可以得到連接,它不是'null'我也沒有在'getConnection()'方法中獲得任何'SQLException',它只在'ResultSet.next()'失敗' –

+0

是的,文檔說連接將被重新建立,但程序「負責重建會話資源」,這可能意味着你的結果集將被關閉,因此它不能獲取下一個記錄。 – bhamby