相关疑难解决方法(0)

Java 8上的SQL Server JDBC错误:驱动程序无法使用安全套接字层(SSL)加密与SQL Server建立安全连接

使用Microsoft JDBC驱动程序版本连接到SQL Server数据库时出现以下错误:

com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法使用安全套接字层(SSL)加密与SQL Server建立安全连接.错误:"SQL Server返回不完整的响应.连接已关闭.ClientConnectionId:98d0b6f4-f3ca-4683-939e-7c0a0fca5931".

我们最近将应用程序从Java 6和Java 7升级到Java 8.所有运行Java的系统都运行SUSE Linux Enterprise Server 11(x86_64),VERSION = 11,PATCHLEVEL = 3.

以下是我用我编写的Java程序收集的事实,它只是顺序打开和关闭1,000个数据库连接.

  • 连接被丢弃,此错误大约占5%-10%.每次连接都不会发生错误.
  • 只有Java 8才会出现这个问题.我在Java 7上运行了相同的程序,问题无法重现.这与我们在升级前的生产经验一致.我们在生产中使用Java 7运行时没有遇到任何问题.
  • 问题不会出现在运行Java 8的所有Linux服务器上,只会发生在其中一些服务器上.这让我感到困惑,但是当我在不同Linux实例上的相同版本的Linux JVM(1.8.0_60,64位)上运行相同的测试程序时,其中一个Linux实例上不会出现问题,但问题是其他人确实发生过.Linux实例运行的是相同版本的SUSE,它们处于相同的补丁级别.
  • 连接到SQL Server 2008和SQL Server 2014服务器/数据库时出现此问题.
  • 无论我使用的是4.0版本的SQL Server JDBC驱动程序还是较新的4.1版驱动程序,都会出现此问题.

与网络上的其他人相比,使我的观察结果独一无二的是,虽然问题仅发生在Java 8上,但我无法在运行相同Java 8 JVM的看似相同的Linux服务器上发生问题.其他人也在早期版本的Java上看到了这个问题,但这不是我们的经验.

您可能有任何意见,建议或观察.

java linux sql-server ssl jdbc

31
推荐指数
9
解决办法
6万
查看次数

驱动程序无法使用SSL建立与SQL Server的安全连接

我在连接SQL数据库时遇到问题.每当我尝试连接到SQL服务器时,我都会收到以下错误;

Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect
    at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:132)
    at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:118)
    at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:140)
    at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:58)
    at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:75)
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
    at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:425)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:849)
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75)
    ... 143 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 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 …
Run Code Online (Sandbox Code Playgroud)

java sql-server ssl jtds jdbc

13
推荐指数
1
解决办法
6447
查看次数

标签 统计

java ×2

jdbc ×2

sql-server ×2

ssl ×2

jtds ×1

linux ×1