Das folgende Problem trat auf, als ich begann, Intellij IDEA zu verwenden. In Eclipse funktioniert alles gut und der Iterator schließt sich.Iterator kann nicht einmal geschlossen werden DB-Verbindung ist geschlossen
Ich vermute, das ist ein Konfigurationsproblem. Welche Lösungen könnten Sie vorschlagen?
SiteFeatureData Klasse select-Methode Schnipsel:
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;
}
Datenklasse returnContext Methode:
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
Verwenden Sie immer noch den gleichen Server? (z. B. Tomcat 7.0 ....?) Dort könnte es Unterschiede geben. Sie können dies auch mindern, indem Sie dbconn.isOpen() vor dem Schließen der Verbindung aktivieren. –
Ja, ich benutze den gleichen Server. Aber in Eclipse funktioniert alles. –
Das ... ich weiß es wirklich nicht :(Diese IDEs sind ziemlich magische Boxen, jede mit ihren eigenen speziellen Eigenschaften ... –