当前位置: 首页 > 知识库问答 >
问题:

JTDS-java。sql。SQLException:I/O错误:对等方重置连接:套接字写入错误

家弘业
2023-03-14

我使用的是jTDS是一款开源的100%纯Java(type 4)JDBC 3.0驱动程序,适用于Microsoft SQL Server(2012)

Tomcat 7-我有连接池配置下面

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/webapp">
    <Resource name="jdbc/dbname" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000" removeAbandoned="true" removeAbandonedTimeout="60"
               username="abc" password="abc" driverClassName="net.sourceforge.jtds.jdbc.Driver"
               url="jdbc:jtds:sqlserver://localhost;databaseName=dbname;SelectMethod=Cursor"/>
</Context>

有时,我会遇到以下异常情况:无法从sql server获取连接。我不知道为什么?

java.sql.SQLExc0019: I/O错误:连接重置由对等:套接字写入错误net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1052)net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:465)在net.sourceforge.jtds.jdbc.JtdsPrearedStatement.execute查询(JtdsPrearedStatement.java:777)在org.apache.tomcat.dbcp.dbcp.委托准备tatement.execute查询(委托准备tatement.java:93)在java.util.concurrent.ThreadPoolExecator$Worker.run任务(ThreadPoolExecutor.java:895)在java.util.concurrent.ThreadPoolExecator$Worker.run(ThreadPoolExecutor.java:918)在java.lang.Thread. run(Thread. java: 662)由java. net引起。SocketExc0019:对等端重置连接:java. net的套接字写入错误。java. net的SocketOutputStream. soketWrite0(本地方法)。java. net的SocketOutputStream. soketWrit(SocketOutputStream. java: 92)。java. io的SocketOutputStream.写(SocketOutputStream. java: 136)。java. io的DataOutputStream.写(DataOutputStream. java: 90)。net. Source ceforge. jtds. jdbc的SharedSocket. sendNetPket(SharedSocket. java: 671)。jtds. jdbc的请求流。在net. Source ceforge. jtds. jdbc的请求流。jdbc的请求流。flush(请求流。java: 508)在net. Source ceforge. jtds. jdbc的。TdsCore。java: 1039)...8更多17-2015年4月12:00:54错误患者处理器: 614-SQLExc0019 java. sql。SQLExc0019:已经关闭。在org. apache. tomcatPoolingDataSource$PoolGuardConnectionWrapper. off(PoolingDataSource. java: 181)在java. util. con电流。ThreadPoolExecator$Worker. runWork(ThreadPoolExecutor. java: 895)在java. util. con电流。线程池执行器$Worker. run(ThreadPoolExecutor. java: 918)在java. lang。线程。运行(线程。java: 662

共有2个答案

段干靖
2023-03-14

我终于找到了这个错误的原因。这是因为,在重新启动数据库服务器后,tomcat服务器没有重新启动(因此,即使在重新启动数据库时,它仍保持活动状态)。因此,池中的连接无效。因此,当网页第一次尝试创建数据库连接时,会出现此错误提示,在下一次尝试时,它将从连接池中获取有效连接,因为应用程序服务器识别出其连接无效,因此它将获取一个新连接池。

公良理
2023-03-14

可能检查以下条件:

  1. 在执行SQL语句之前,检查套接字或资源池端口是否未关闭
  2. 检查连接是否未被任何其他进程重置
  3. 检查端口是否未被其他进程或其他执行使用或锁定
  4. 检查连接池中是否有任何可用端口
 类似资料:
  • 我使用HttpClient4.4发送get和post请求。并且我刚刚创建了一个httpclient的simpile包装器以方便使用: 当我使用这个类发送post请求时。奇怪的事情发生了: 第一次,我向服务器发送一个post请求,一分钟后就可以了,我向服务器发送一个同样的请求,也可以了。但几分钟后,我发出了一个同样的请求,有些不对劲: 但是,我仍然向服务器发送一个相同的请求,它又可以了。 每次我按照

  • 问题内容: 我使用httpclient 4.4发送get和post请求。我刚刚创建了一个简单的httpclient包装器,以方便使用: 当我使用此类发送帖子请求时。发生了一些奇怪的事情: 第一次,我将发布请求发送到服务器,几分钟后没问题,我将相同的请求发送到服务器,也行。但是几分钟后,我发送了相同的请求,出现了错误: 但是之后,我仍然向服务器发送了相同的请求,再次可以。 每当我按照上述步骤尝试时,

  • 我还尝试提供私有IP和端口4444,运行脚本后,服务器代理立即关闭,并且收到错误java.net.socketException:Connection reset by Peer:socket write error。 > JMeter控制台日志 我做了telnet privateip:4444,并通过了test命令。服务器代理返回yep数据。此设置正在本地框上工作。不在AWS盒子上。 请让我知道

  • 我正在使用apache HttpClient上传固件文件(.bin)。当我上传一个大小为37MB的这样的文件时,我得到一个错误:连接被对等体重置:套接字写入错误。我不知道怎么解决。但当我尝试其他较小大小的文件(如.txt或.bin)时,没有任何错误。

  • 连接错误:写入套接字时出错104。连接由对等重置。 环境: ubuntu: 16.04 python: 3.6 PC总内存: 32G 我已经安装了redis'3.0.6'。 当您尝试插入500000个数据时,它会成功,但当您尝试插入4000万个大数据时,它会失败。 当尝试将Python数据帧插入redis时,由于容量太大而失败。 数据插入成功: 数据插入失败: ConnectionResetErr

  • 我正在尝试使用套接字实现一个HTTP服务器。如果客户端(例如浏览器)请求目录,服务器将显示可用文件列表。当客户端请求文件时就会出现问题。我得到以下错误: stacktrace显示问题来自方法: 但我想不出有什么问题。你能帮帮我吗? 编辑 谢谢大家的回答。在我读了你的答案后,我明白了问题是插座出现错误的时候。这是我的错误代码: 我的新代码是这样的: