我已经搜索了很长时间但尚未找到解决方案,我目前正在尝试建立与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
答案 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。听到这方面的任何见解都很有意思