Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “我如何解决?”;“套接字读取超时”;迭代结果集时发生异常?_Java_Sockets_Tomcat_Jdbc_Ojdbc - Fatal编程技术网

Java “我如何解决?”;“套接字读取超时”;迭代结果集时发生异常?

Java “我如何解决?”;“套接字读取超时”;迭代结果集时发生异常?,java,sockets,tomcat,jdbc,ojdbc,Java,Sockets,Tomcat,Jdbc,Ojdbc,使用Spring的rs.next()方法迭代结果集时,面临java.sql.SQLException:Io异常:套接字读取超时的原因是什么 编辑:我使用org.springframework.jdbc.core.ResultSetExtractor.extractData(ResultSet),同时使用rs.next方法在结果集中循环 Ps:我使用Tomcat6、java1.7和ojdbc14 以下是stacktrace: Caused by: java.sql.SQLException: Io

使用Spring的rs.next()方法迭代结果集时,面临java.sql.SQLException:Io异常:套接字读取超时的原因是什么

编辑:我使用org.springframework.jdbc.core.ResultSetExtractor.extractData(ResultSet),同时使用rs.next方法在结果集中循环

Ps:我使用Tomcat6、java1.7和ojdbc14

以下是stacktrace:

Caused by: java.sql.SQLException: Io exception: Socket read timed out
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CStatement.fetch(T4CStatement.java:1043)
    at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:297)
    at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:213)
    at com.company.project.db.sp.mySP.extractData(mySP.java:188)
    at org.springframework.jdbc.core.JdbcTemplate.processResultSet(JdbcTemplate.java:1214)
    at org.springframework.jdbc.core.JdbcTemplate.extractOutputParameters(JdbcTemplate.java:1165)
    at org.springframework.jdbc.core.JdbcTemplate$6.doInCallableStatement(JdbcTemplate.java:1076)
    at org.springframework.jdbc.core.JdbcTemplate$6.doInCallableStatement(JdbcTemplate.java:1)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1014)
编辑2:这是我的代码:

public class mySpClass extends StoredProcedure implements  ResultSetExtractor<Object>  {    
private final String SQL = "pack.mySp";
private static Log logger = LogFactory.getLog(mySpClass.class);
public mySpClass(DataSource ds){    
    this.setDataSource(ds);
    this.setSql(SQL);
    // declare all parameters,cursors like this.declareParameter(new SqlParameter("P_START_TIMESTAMP",   Types.TIMESTAMP));
    this.compile();
}
public mySpClassSPResult runIt(//Here inputParams) throws SQLException {

    //business code  and input 
    try {           
        spOut = execute(inputParams);
    } catch (DataAccessException dataAccessException) {         
        logger.error("SP execution throwed an exception",dataAccessException);
        throw dataAccessException;
    }

    Map<String,myReturnObject> returnObjects=(Map<String, myReturnObject>) spOut.get("P_RC_ReturnObjects");

    return new mySpClassSPResult(returnObjects);
}

@Override
public Object extractData(ResultSet rs) throws SQLException, DataAccessException {

        Map<String,myReturnObject> returnObjects=new HashMap<String,myReturnObject>();

        while(rs.next()){ // here is where time out exception occurs
            //business code fills returnObjects
        }
        return returnObjects;

}
公共类mySpClass扩展StoredProcess实现ResultTextRactor{
私有最终字符串SQL=“pack.mySp”;
私有静态日志记录器=LogFactory.getLog(mySpClass.class);
公共mySpClass(数据源ds){
这个.setDataSource(ds);
这个.setSql(SQL);
//声明所有参数,游标如下。declareParameter(新的SqlParameter(“P_START_TIMESTAMP”,Types.TIMESTAMP));
this.compile();
}
public mySpClassSPResult runIt(//此处为inputParams)引发SQLException{
//业务代码和输入
试试{
喷动=执行(输入参数);
}捕获(DataAccessException DataAccessException){
logger.error(“SP执行引发异常”,dataAccessException);
抛出dataAccessException;
}
Map returnObjects=(Map)spOut.get(“P_RC_returnObjects”);
返回新的mySpClassSPResult(返回对象);
}
@凌驾
公共对象提取数据(ResultSet rs)引发SQLException、DataAccessException{
Map returnObjects=new HashMap();
while(rs.next()){//这里是发生超时异常的地方
//业务代码填充返回对象
}
归还物品;
}

}

您的Oracle数据库似乎停止运行。预期结果集有多大?如果结果太大,请尝试分页。@Fildor事实上,对于9行结果,这是可以的,但是对于10行,我面临这个例外。好的,那么它是def。不是尺寸…每行有长时间的钙化/手术吗?还是待会再收集和处理?@Jan,不,我没有。只是在结果集中循环。请看编辑。我有T4C连接,在循环过程中超时。