从 Tomcat 到 SQL Server 2014 的 Java 7 SSL 连接

Posted

技术标签:

【中文标题】从 Tomcat 到 SQL Server 2014 的 Java 7 SSL 连接【英文标题】:Java 7 SSL connection to SQL Server 2014 from Tomcat 【发布时间】:2016-11-01 15:11:13 【问题描述】:

我正在尝试通过 JDBC 驱动程序使用 Java 7 连接到 SQL Server 2014,应用程序抛出的错误是:

驱动程序无法使用安全套接字层 (SSL) 加密建立与 SQL Server 的安全连接。错误:“SQL Server 返回不完整的响应。连接已关闭。”

我的代码是:

driver ="com.microsoft.sqlserver.jdbc.SQLServerDriver";
url ="jdbc:sqlserver://Ip:port;databasename=xxx";
user = "xxx";
pass = "xxx";
Class.forName(driver);
connection = DriverManager.getConnection(url, user, pass);

我从 MSDN 下载了 ODBC 驱动程序包,并尝试依次使用以下各项:sqljdbc.jarsqljdbc4.jarsqljdbc41.jarsqljdbc42.jar,但每次都遇到相同的错误。

【问题讨论】:

我在您提供的指定 SSL 的代码中看不到任何内容。 你用的是什么端口? 5081 是我用来连接的端口。 如果“使用所有 [它们]”是指将所有四个 JAR 文件放在 CLASSPATH/Build_Path 中,然后尝试删除其中三个并留下 sqljdbc4.jar。当连接到需要 SSL 连接的 SQL Server 实例时,它对我有用。 @IvanFontalvo - 尝试创建一个简单的 Java 控制台应用程序以使用 sqljdbc4.jar 连接到 SQL Server。如果失败了,那么你的问题就更根本了(例如,SQL Server 设置、网络配置等)。如果成功,那么您将需要更深入地研究 Tomcat 配置的细节。 (另外,请记住在回复评论时包含@UserName。) 【参考方案1】:

我使用JTDS 作为驱动程序管理器解决了这个问题,我现在的代码是:

driver ="net.sourceforge.jtds.jdbc.Driver;
url ="jdbc:jtds:sqlserver://Ip:port;databasename=xxx";
user = "xxx";
pass = "xxx";
Class.forName(driver);
connection = DriverManager.getConnection(url, user, pass);

我在我的类路径中添加了 lib jtds1.5.1。

【讨论】:

您提供的链接中没有 jtds1.5.1 二进制文件。 令人惊讶的是,JTDS 1.3(最后一个稳定版本)也可以解决这个错误。

以上是关于从 Tomcat 到 SQL Server 2014 的 Java 7 SSL 连接的主要内容,如果未能解决你的问题,请参考以下文章

从查询 SQL Server 中的每个日期获取第一个和最后一个日期时间

Tomcat 未连接到 SQL Server Express

Tomcat--从入门到server.xml分析

tomcat 6..0.20 连接池配置 SQL server 2000数据库

Window 2008 Tomcat 7 MS SQL Server 2008R2 - 无法识别JNDI JDBC驱动程序

Tomcat 6 中的 SQL Server 连接管理