Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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 Oracle JDBC池SocketException:启动时重置连接_Java_Oracle_Jdbc - Fatal编程技术网

Java Oracle JDBC池SocketException:启动时重置连接

Java Oracle JDBC池SocketException:启动时重置连接,java,oracle,jdbc,Java,Oracle,Jdbc,我以前在启动应用程序时会出现几个连接重置错误。 可能的原因是什么?我如何解决 ... Caused by: java.net.SocketException: Connection reset at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:115) ~[?:1.8.0_121] at java.net.SocketOutputStream.write(SocketOutputStrea

我以前在启动应用程序时会出现几个连接重置错误。
可能的原因是什么?我如何解决

    ...
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:115) ~[?:1.8.0_121]
    at java.net.SocketOutputStream.write(SocketOutputStream.java:155) ~[?:1.8.0_121]
    at oracle.net.ns.DataPacket.send(DataPacket.java:209) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ano.CryptoDataPacket.send(Unknown Source) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:215) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:302) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:249) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:171) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:89) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:123) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:79) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CMAREngineStream.unmarshalUB1(T4CMAREngineStream.java:429) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:397) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:437) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:954) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:639) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:310) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:203) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:732) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:664) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:479) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:154) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) ~[spring-jdbc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) ~[spring-jdbc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:326) ~[spring-jdbc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    ... 61 more
。。。
原因:java.net.SocketException:连接重置
在java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:115)~[?:1.8.0_121]
在java.net.SocketOutputStream.write(SocketOutputStream.java:155)~[?:1.8.0_121]
在oracle.net.ns.DataPacket.send(DataPacket.java:209)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.net.ano.CryptoDataPacket.send(未知源)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:215)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.net.ns.NetInputStream.getNextPackage(NetInputStream.java:302)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.net.ns.NetInputStream.read(NetInputStream.java:249)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.net.ns.NetInputStream.read(NetInputStream.java:171)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.net.ns.NetInputStream.read(NetInputStream.java:89)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.jdbc.driver.T4CSocketInputStreamWrapper.readnextPackage(T4CSocketInputStreamWrapper.java:123)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:79)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.jdbc.driver.T4CMAREngineStream.unmarshalUB1(T4CMAREngineStream.java:429)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:397)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:437)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:954)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:639)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566)~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
在org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:310)~[tomcat-jdbc-8.5.11.jar:?]
在org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:203)~[tomcat-jdbc-8.5.11.jar:?]
在org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:732)~[tomcat-jdbc-8.5.11.jar:?]
在org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:664)~[tomcat-jdbc-8.5.11.jar:?]
在org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:479)~[tomcat-jdbc-8.5.11.jar:?]
在org.apache.tomcat.jdbc.pool.ConnectionPool.(ConnectionPool.java:154)~[tomcat-jdbc-8.5.11.jar:?]
在org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118)~[tomcat-jdbc-8.5.11.jar:?]
在org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107)~[tomcat-jdbc-8.5.11.jar:?]
在org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131)~[tomcat-jdbc-8.5.11.jar:?]
在org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)~[spring-jdbc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
在org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)~[spring-jdbc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
在org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:326)~[spring-jdbc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
... 61多

添加JVM系统属性可能有助于:

-Djava.security.egd=file:/dev/../dev/urandom
SecureRandom是sun提供的标准API。在该类提供的各种方法中 下一个字节(字节[]) 这是一个。此方法用于生成随机字节。Oracle11gJDBC驱动程序使用此API在运行期间生成随机数 登录。使用Linux的用户遇到了SQLException(“Io异常:连接 重置”)

问题有两个方面

  • JVM尝试列出/tmp(或由-Djava.io.tmpdir设置的备用tmp目录)中的所有文件 调用SecureRandom.nextBytes(字节[])。如果文件数量较大,则 这个方法需要很长时间 响应,从而导致服务器超时

  • void nextBytes(byte[])方法在Linux和一些缺少随机变量的机器上使用/dev/random 数字生成硬件操作速度减慢到使整个登录过程停止的程度 停顿。最终用户会遇到SQLException(“Io异常: 连接重置“)

  • 如果底层操作系统是在有故障的硬件上运行的Linux,则升级到11g的用户可能会遇到此问题

    原因 其原因尚未确切确定。这可能是一个问题 你的硬件还是事实 由于某些原因,软件无法从dev/random读取数据


    ()

    在我们的例子中,带有jvm的Red Hat Enterprise Linux Server 6.9版(圣地亚哥)是连接oracle 12c的1.7.051,存在此问题。然而,在同一个环境中,一个指向Oracle11g的数据源正在工作。虽然这个解决方案对我们有效,但我们不确定它的oracle版本是否是问题所在。或者,每当JVM尝试连接两个或多个oracle时,oracle connection的更高版本就会遇到这个问题。任何指向这个方向的指针都会有帮助。谢谢