Исключение Io: конец канала данных TNS - PullRequest
0 голосов
/ 05 марта 2012

Я использую оракула 11g и Java. Я использую API-интерфейс insideCostPolygon для поиска точек многоугольника. Но я получил исключение по некоторым точкам (широте и долготе) и стоимости. Исключение составляет

[oracle.spatial.network.lod.util.JGeometryUtility, ERROR] java.sql.SQLException: Io exception: End of TNS data channel
    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.T4CCallableStatement.executeForRows(T4CCallableStatement.java:973)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1160)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
    at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4223)
    at oracle.spatial.network.lod.util.JGeometryUtility.concaveHull(JGeometryUtility.java:685)
    at oracle.spatial.network.lod.NetworkAnalyst.withinCostPolygonUsingNetworkBuffer(NetworkAnalyst.java:1550)
    at oracle.spatial.network.lod.NetworkAnalyst.withinCostPolygonInternal(NetworkAnalyst.java:1318)
    at oracle.spatial.network.lod.NetworkAnalyst.withinCostPolygonInternal(NetworkAnalyst.java:1286)
    at oracle.spatial.network.lod.NetworkAnalyst.withinCostPolygon(NetworkAnalyst.java:1262)
    at oracle.spatial.network.lod.NetworkAnalyst.withinCostPolygon(NetworkAnalyst.java:1244)
    at TestDriveTimePolygon.main(TestDriveTimePolygon.java:161) 

TestDriveTimePolygon.java - мой код Java

Я нашел линкид и процент в процедуре, передав широту и долготу точки.

 PointOnNet startPoint = new PointOnNet(linkId, percentage);


                        PointOnNet[] startPoints = {startPoint};
                        JGeometry resultPolygon;
                        double costThreshold = 0.1;  //in km 
                        System.out.println("costThreshold:" + costThreshold);

                        System.out.println("before resultPolygon");

                        resultPolygon = analyst.withinCostPolygon(startPoints,
                                                       costThreshold, null, null);
                        System.out.println("aftr rsltplgon");
                        resultPolygon.setSRID(8307); // set SRID
                        resultPolygon.setType(resultPolygon.GTYPE_POLYGON); 

при отладке исключение пришло по линии в пределах cosppolygon.

и это не во всех латах и ​​лонах и стоимости.

почему произошло это исключение? Мой другой вопрос: почему эти исключения не перехватываются с помощью sqlexception? (Я добавил try and catch)

  catch(IOException iex)
                    {
                        System.out.println("IO Exception ERROR");
                        iex.printStackTrace();
                    }
                    catch(NetworkDataException ndEx)
                    {   
                        System.out.println("NetworkDataException ERROR");
                        ndEx.printStackTrace();
                    }
                    catch(SQLException sqlEx)
                    {
                        System.out.println("sqlEx ERROR");
                        sqlEx.printStackTrace();
                    } 
                    catch (LODNetworkException e) 
                    {
                        System.out.println("LOD ERROR");
                        //throw e;
                        //e.printStackTrace();
                        System.out.println("LOD ERROR: Invalid cost");
                        System.out.println("LOD ERROR");

                    }
                    catch (Exception e) 
                    {
                        System.out.println("Exception ERROR");
                        e.printStackTrace();
                    }
...