Intellij IDEAを使用し始めたとき、次の問題が発生しました。 Eclipseではすべて正常に動作し、イテレータは終了します。DB接続が終了すると、イテレーターを閉じることができません
これは構成の問題であると思います。どのような解決策を提案できますか?
SiteFeatureDataクラスselectメソッドの抜粋:
Connection dbconn = null;
try{
dbconn = ConnCacheImpl.getConnection();
ctx = Data.getContext(dbconn);
etx = new ExecutionContext();
#sql [ctx,etx] iter = {
SELECT id, ...
};
if (iter.next()) {
populate(iter, ...
, ctx.getConnection()
);
}
}finally{
try{
dbconn.close();
returnContext(ctx,etx,iter);
} catch(SQLException ex){};
ctx = null;
etx = null;
iter = null;
}
データクラスreturnContext方法:
protected static void returnContext(DefaultContext ctx
,ExecutionContext etx
,ResultSetIterImpl iter) throws SQLException{
if(iter != null){
iter.close(); // PROBLEM IS HERE
}
if(etx != null){
etx.close();
}
if(ctx != null){
ctx.close(ConnectionContext.KEEP_CONNECTION);
}
}
Caused by: java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy5.getStmtCacheSize(Unknown Source)
at sqlj.runtime.ref.OraRTResultSet.close(OraRTResultSet.java:1018)
at sqlj.runtime.ref.ResultSetIterImpl.close(ResultSetIterImpl.java:187)
at com.softdesign.persistence.Data.returnContext(Data.java:60)
at com.requestcom.geofire.domain.data.SiteFeatureData.select(SiteFeatureData.java:2326)
at com.softdesign.persistence.Persistent.exists(Persistent.java:343)
at com.softdesign.persistence.Persistent.exists(Persistent.java:326)
at com.requestcom.geofire.context.ServletRequestContext.getSiteFeature(ServletRequestContext.java:3976)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:395)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:384)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:173)
... 38 more
Caused by: java.sql.SQLException: The connection is closed: The connection is closed
at oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:473)
at oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:457)
at oracle.ucp.jdbc.proxy.JDBCConnectionProxyFactory.invoke(JDBCConnectionProxyFactory.java:255)
... 53 more
まだ同じサーバーを使用していますか? (例えば、Tomcat 7.0 ....?)そこには違いがあるかもしれません。また、接続を閉じる前にdbconn.isOpen()をチェックするだけで軽減できます。 –
はい、私は同じサーバーを使用しています。しかし、Eclipseではすべてが機能します。 –
これは....私は本当に知りません:(これらのIDEはかなりのマジックボックスで、それぞれ独自の特別な機能を持っています... –