Java EE RAR5038:使用安全套接字层为连接池创建资源时出错

Posted

技术标签:

【中文标题】Java EE RAR5038:使用安全套接字层为连接池创建资源时出错【英文标题】:Java EE RAR5038:Error while creating resource for connection pool by using Secure Sockets Layer 【发布时间】:2018-02-23 11:39:31 【问题描述】:

我们有一个相当老的 JEE 应用程序。环境:

Glassfish 4.1, Java 1.7, sqljdbc4-4.1.jar.

最近我们的 IT 小组注意到,Glassfish 日志中充满了以下消息:

[2018-01-01T22:16:36.811+0100] [glassfish 4.1] [警告] [poolmgr.create_resource_error] [javax.enterprise.resource.resourceadapter.com.sun.enterprise.resource.allocator] [tid: _ThreadID=88 _ThreadName=connector-timer-proxy] [timeMillis: 1514841396811] [levelValue: 900] [[ RAR5038:为池 PROD_Pool 创建资源时出现意外异常。异常:javax.resource.spi.ResourceAllocationException:无法分配连接,因为:驱动程序无法使用安全套接字层 (SSL) 加密建立到 SQL Server 的安全连接。错误:“SQL Server 返回不完整的响应。连接已关闭。 ClientConnectionId:da60a9c2-aa16-4520-b3f0-99a6ce660af6”。]]

是的,我熟悉这个链接: https://blogs.msdn.microsoft.com/dataaccesstechnologies/2016/...

但目前我们无法更新驱动程序,所以我想知道我们是否可以通过某种方式关闭 SSL(可能使用一些连接参数或 Glassfish 设置)?到目前为止,我还没有找到任何信息。它是一个内网应用程序,因此安全性可能没有问题。

我们明确不使用任何参数来打开 ssl(例如“加密”或 'EncryptionMethod' 等)。

谢谢。

【问题讨论】:

【参考方案1】:

正如您已经提到的参数encrypt,您可以尝试将其设置为false 以关闭SSL。

示例连接网址:

"jdbc:sqlserver://localhost:1433;databaseName=YOUR_DATABASE;encrypt=false";

有关不同连接参数的更多信息,请查看此 microsoft 页面:Connecting with SSL Encryption。

另请参阅:

Setting the Connection Properties The driver could not establish a secure connection to SQL Server by using SSL encryption

【讨论】:

感谢您的回答。它没有解决我们的问题,但幸运的是我们设法说服公司,正确的方法是更新旧的 jdbc 驱动程序。谢谢!

以上是关于Java EE RAR5038:使用安全套接字层为连接池创建资源时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Tomcat 中为 Java EE 应用程序实现套接字

基于J2EE的学生社团管理系统的设计与实现.rar(论文+程序源码)

基于J2EE的学生社团管理系统的设计与实现.rar(论文+程序源码)

JAVA EE 7 WebSocket 实现

JavaEE Tutorials (18) - Java EE平台安全介绍

JavaEE Tutorials (21) - Java EE安全:高级主题