gpt4 book ai didi

java - JDBC 连接抛出 SocketException

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:04 25 4
gpt4 key购买 nike

我有一个在 WAS 7.0 上运行的 Web 应用程序,该应用程序可以正常运行并且一次可以保持几个星期没有问题。当尝试针对 MS SQL 2005 执行 PreparedStatement 时,它会突然开始抛出 SocketExceptions。起初我们开始研究一些可能导致这种情况的明显问题,例如未关闭连接、服务器重新启动、连接池大小等。但什么也没有发生。我们在池中尝试了 WAS 的连接重试,但没有成功。与服务器重启没有一致的相关性。

我们运行的是 WAS 7,应用程序使用的是 JSF 1.2。这是受影响的代码,后面是堆栈跟踪。

try {
conn = DBManager.getInstance().getInpatientConnection();

String sql = "select * from Reviews where datediff(y,reviewedDate,getDate()) < 30";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();

while(rs.next()){
reviewed.add(rs.getString("authNum"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
DBManager.clean(conn, rs, ps);
}

痕迹...

0000002a SystemErr     R Caused by: java.lang.ClassCastException: java.net.SocketException incompatible with java.sql.SQLException
0000002a SystemErr R at com.microsoft.sqlserver.jdbc.SQLServerPooledConnection.notifyEvent(Unknown Source)
0000002a SystemErr R at com.microsoft.sqlserver.jdbc.SQLServerConnection.notifyPooledConnection(Unknown Source)
0000002a SystemErr R at com.microsoft.sqlserver.jdbc.DBComms.transmit(Unknown Source)
0000002a SystemErr R at com.microsoft.sqlserver.jdbc.IOBuffer.sendCommand(Unknown Source)
0000002a SystemErr R at com.microsoft.sqlserver.jdbc.SQLServerStatement.sendExecute(Unknown Source)
0000002a SystemErr R at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteQuery(Unknown Source)
0000002a SystemErr R at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(Unknown Source)
0000002a SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.pmiExecuteQuery(WSJdbcPreparedStatement.java:1099)
0000002a SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeQuery(WSJdbcPreparedStatement.java:720)
0000002a SystemErr R at com.bcbst.ipct.controllers.MemberListingController.initReviews(MemberListingController.java:266)
0000002a SystemErr R at com.bcbst.ipct.controllers.MemberListingController.<init>(MemberListingController.java:251)
0000002a SystemErr R at java.lang.J9VMInternals.newInstanceImpl(Native Method)
0000002a SystemErr R at java.lang.Class.newInstance(Class.java:1345)
0000002a SystemErr R at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:190)
0000002a SystemErr R ... 66 more

我不确定要提供哪些其他信息。让我知道您认为我需要知道的任何其他信息。我用 Google 搜索了这么多,但没有找到任何有用的信息。

TIA

最佳答案

从您的堆栈跟踪来看,它看起来像是 MSSQL JDBC 驱动程序中的错误。如果在数据库脱机时抛出异常,您所能做的就是捕获 ClassCastException 作为解决方法。此外,这也可能是 Java 版本问题,因为 JDBC 驱动程序依赖于特定的“类层次结构”。

关于java - JDBC 连接抛出 SocketException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8229998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com