java.sql.SQLException:Io异常:管道破裂如何在不重新启动的情况下恢复



在我的应用程序中,我使用与Oracle的连接,当连接丢失并尝试重新连接时,我收到异常:

java.sql.SQLException: Io exception: Broken pipe
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:273)
    at oracle.jdbc.driver.T4CStatement.fetch(T4CStatement.java:540)
    at oracle.jdbc.driver.OracleResultSetImpl.close_or_fetch_from_next(OracleResultSetImpl.java:264)
    at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:196)

对于恢复,我需要重新启动应用程序,是否可以在不重新启动的情况下恢复?谢谢

以下可能导致异常:

  1. 网络问题:即数据库和应用程序服务器之间的网络导致物理连接在一段时间后断开。这可能是由于网络后面运行的防火墙被配置为在指定的时间段后终止数据库连接。您可以考虑一种变通方法,只需重新配置应用程序服务器即可始终保持连接的活动状态。对于Tomcat,您可以尝试在Tomcat数据源conf文件(context.xml)中添加validationQuery="select 'validationQuery' from dua l

  2. 正在重置与数据库服务器的连接,并且数据库驱动程序不会通知客户端。这种情况下的问题是,Oracle驱动程序发现它与DBMS的套接字(可能又是防火墙?)已被另一端关闭。作为一种解决方案,您可以考虑将连接超时(在池中)设置为短于网络/DB服务器超时。

相关内容

最新更新