I / O error: socket off timer. What are the reasons?

My simplified code (which shows that the connection is interrupted with the error "I / O error: socket timeout"):

    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    this.connection = DriverManager.getConnection("jdbc:oracle:thin:@", properties);
    while(isStarted){
        this.statement = this.connection.createStatement();
        ResultSet result = this.statement.executeQuery("select sysdate from dual");
        result.next();
        System.out.println("Sysdate: " + result.getString(1));
        result.close();
        this.statement.close();
        this.statement = null;
        TimeUnit.SECONDS.sleep(4);
    }
    this.connection.close();
    this.connection = null;

after 4-5 hours I caught:

 IO Error: Socket read timed out
    java.sql.SQLRecoverableException: IO Error: Socket read timed out
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:886)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1491)
at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:406)

What are the reasons? How to solve this problem?

+4
source share
1 answer

I had the same problem. Check your services and make sure that only OracleServiceXE and Oracle XETNSListener work.

You can double-check it in cmd with the command

netstat -ano | find "1521"

As a result, the last column shows the PID, and it must be unique. If the command does not return a result, your listener does not work.

-1
source

Source: https://habr.com/ru/post/1543037/


All Articles