错误:“SQL Server 未返回响应连接已关闭” DSRA0010E: SQL 状态 = 08S01,错误代码 = 0

如何解决错误:“SQL Server 未返回响应连接已关闭” DSRA0010E: SQL 状态 = 08S01,错误代码 = 0

正在进行一个将应用程序的代码库从 Java 1.6 更新到 Java 1.8 的项目,当我尝试连接到数据库时,我所做的事情导致了以下错误

DataSource Configuration: DSRA8040I: Failed to connect to the DataSource jdbc/TIRDB. Encountered java.sql.sqlException: The driver Could not establish a secure connection to sql Server by using Secure Sockets Layer (SSL) encryption. Error: "sql Server did not return a response. The connection has been closed. ". DSRA0010E: sql State = 08S01,Error Code = 0.

我使用的是 Websphere 8.5.5.9 和 sqljdbc4,数据库最近更新到 sql server 2017。

我已经尝试过的解决方案:

如果我遗漏了任何重要信息,请告诉我,我可以编辑帖子。

编辑:

添加了以下 JVM 命令以获取更多信息:-Djavax.net.debug=ssl:handshake:verbose

在日志中,我看到以下信息:

[1/19/21 12:20:43:698 CST] 0000004a SystemOut O *** ClientHello,TLSv1 [1/19/21 12:20:43:698 CST] 0000004a SystemOut O RandomCookie: GMT: 1611080187 字节 = { 202,165,173,127,167,84,140,203,125,176,234,88,28,249,55,235,139,218,189,60,181,119,214,251,102,209,42 } [1/19/21 12:20:43:700 CST] 0000004a SystemOut O 会话 ID:{} [1/19/21 12:20:43:700 CST] 0000004a SystemOut O 密码套件:[TLS_EMPTY_RENEGOTIATION_INFO_SCSV, SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA、SSL_RSA_WITH_AES_128_CBC_SHA、 SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA, SSL_ECDH_RSA_WITH_AES_128_CBC_SHA、SSL_DHE_RSA_WITH_AES_128_CBC_SHA、 SSL_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, SSL_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA、SSL_RSA_WITH_3DES_EDE_CBC_SHA、 SSL_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, SSL_ECDH_RSA_WITH_3DES_EDE_CBC_SHA、SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA、 SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA] [1/19/21 12:20:43:700 CST] 0000004a SystemOut O 压缩方法:{ 0 } [1/19/21 12:20:43:700 CST] 0000004a SystemOut O 扩展 elliptic_curves,曲线名称: {secp256r1、secp192r1、secp224r1、secp384r1、secp521r1、secp160k1、 secp160r1、secp160r2、secp192k1、secp224k1、secp256k1} [1/19/21 12:20:43:700 CST] 0000004a SystemOut O 扩展 ec_point_formats, 格式:[未压缩] [1/19/21 12:20:43:700 CST] 0000004a SystemOut O *** [1/19/21 12:20:43:701 CST] 0000004a SystemOut O server.startup : 2,WRITE: TLSv1 Handshake,length = 109 [1/19/21 12:20:43:730 CST] 0000004a SystemOut O server.startup:2,调用 close() [1/19/21 12:20:43:730 CST] 0000004a SystemOut O server.startup : 2,调用 closeInternal(true) [1/19/21 12:20:43:730 CST] 0000004a SystemOut O server.startup:2,发送 TLSv1.2 警报: 警告,描述 = close_notify [1/19/21 12:20:43:730 CST] 0000004a SystemOut O server.startup : 2,WRITE: TLSv1.2 Alert,长度 = 2 [1/19/21 12:20:43:730 CST] 0000004a SystemOut O server.startup : 2,调用 closeSocket(true) [1/19/21 12:20:43:730 CST] 0000004a SystemOut O server.startup : 2,等待 close_notify 或警报:状态 5 [1/19/21 12:20:43:731 CST] 0000004a SystemOut O server.startup : 2,收到 EOFException: 忽略 [1/19/21 12:20:43:731 CST] 0000004a SystemOut O server.startup : 2、调用closeInternal(false) [1/19/21 12:20:43:731 CST] 0000004a SystemOut O server.startup : 2,close 再次调用;状态 = 5 [1/19/21 12:20:43:731 CST] 0000004a SystemOut O server.startup : 2、处理异常:java.io.IOException: sql Server没有返回 一个答复。连接已关闭。 ClientConnectionId:e3180c28-baa6-4741-8359-008575b697b3 [1/19/21 12:20:43:731 CST] 0000004a SystemOut O server.startup:2,调用 关闭套接字() 块引用

我认为这表明我的服务器仍在使用 TLSv1,即使数据库设置为仅接受 TSL1.2。我尝试添加 JVM 命令 -Djdk.tls.client.protocols=TLSv1.2 和 -Dhttps.protocols=TLSv1.2 以强制它使用 TLSv1.2,但它没有改变。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?