JDBC SQL Server无法建立SSL连接

时间:2017-07-19 11:13:36

标签: java sql-server azure azure-sql-database azure-web-sites

我已经搜索了很长时间但尚未找到解决方案,我目前正在尝试建立与SQL Server的连接

Connection con = ds.getConnection

但是我得到了这个例外:

Cannot create PoolableConnectionFactory (The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: Broken pipe ClientConnectionId:8fb783f6-2790-44e9-b459-18238edd23ff"

这是由于驱动程序无法建立SSL连接。

我已经能够验证我能够ping并查看数据库而不会出现任何问题,但不知何故仍然会出现此错误。

列出的原因是:

com.microsoft.sqlserver.jdbc.SQLServerException (The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: Broken pipe ClientConnectionId:8fb783f6-2790-44e9-b459-18238edd23ff"

出于与上述相同的原因,无法建立SSL连接。

在context.xml中我列出了:

<Resource name="jdbc/sqlazure"
auth="Container"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
type="javax.sql.DataSource"
maxIdle="30"
username="username"
password="password
url="jdbc:sqlserver://axpert.database.windows.net:1433;database="db";encrypt=true;trustServerCertificate=false;hostNameInCertificate="database";loginTimeout=30"
removeAbandonedTimeout="30"
logAbandoned="true" /> 

我正在获取数据源:

InitialContext ic = new InitialContext();
            ds = (DataSource)ic.lookup("java:comp/env/jdbc/sqlazure");

因此加密也设置为true。我之前没有看到这个问题,我唯一能想到的是我最近安装了Android Studio,不确定这是否会以某种方式搞砸了Java设置?

我正在使用Eclipse Oxygen 2017年6月,Java 1.8.0_141,Tomcat 8.5

1 个答案:

答案 0 :(得分:1)

对于那些可能已经看到同样问题的人,我能够通过将SDK升级到1.8.0_141并指向Eclipse以使用新的JRE环境来解决这个问题。我错了,让Eclipse指向旧的JRE环境。

但是,在我将JDK从1.8.0_77更新到1.8.0_141之前它已经工作了,我不确定版本之间存在什么差异,或者Azure端是否有一些需要更新的更新最低版本1.8.0_141。听到这方面的任何见解都很有意思