Java Glassfish与MS SQL server数据库的连接
我安装了MS SQL server的评估副本,附带数据库AdventureWorks2016,并在localhost:4848上运行了Glassfish。SQL server(Configuration Manager)上允许TCP/IP连接,TCP端口为1433。我已经从下载了MicrosoftJDBCDriver7.0forSQLServer,并在C:\中解压,设置一个CLASSPATH变量指向它,并在 C:\ProgramFiles\glassfish5\glassfish\domains\domain1\lib。我使用Windows身份验证连接到MS SQL server。 我使用所有默认值创建AdventureWorks2016连接池。当我敲打它时,我得到了 java.lang.NoSuchMethodError:sun.security.ssl.SSLSessionImpl.(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;Ljava/util/Collection;Lsun/security/ssl/SessionId;Ljava/lang/String;I)V sun.security.ssl.SSLSessionImpl。(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;Ljava/util/Collection;Lsun/security/ssl/SessionId;Ljava/lang/String;I) 我错过了什么? JavaJDK是Java8(jdk1.8.0_191)和Glassfish 5.0 我已经降级到java8u151。现在,当我ping时,错误是: Ping AdventureWorks2016的连接池失败。无法分配连接,因为:驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接。错误:“不支持的curveId:29”.ClientConnectionId:ebe27ff7-0ce1-4e9d-95fd-52133be8ee01有关详细信息,请查看server.log 正如我所说的,我在服务器上使用Windows身份验证,因为我的笔记本电脑上不需要任何其他东西,而且在我安装MS SQL server时,这已经起到了作用。现在我尝试 jdbc:sqlserver://localhost;集成安全性=真Java Glassfish与MS SQL server数据库的连接,java,sql-server,jakarta-ee,glassfish,Java,Sql Server,Jakarta Ee,Glassfish,我安装了MS SQL server的评估副本,附带数据库AdventureWorks2016,并在localhost:4848上运行了Glassfish。SQL server(Configuration Manager)上允许TCP/IP连接,TCP端口为1433。我已经从下载了MicrosoftJDBCDriver7.0forSQLServer,并在C:\中解压,设置一个CLASSPATH变量指向它,并在 C:\ProgramFiles\glassfish5\glassfish\domains
用于URL属性,但没有效果。您遇到了GlassFish 5.0和高于8u161的Java版本的已知问题 发件人: 解决方法是将您的Java版本降级为 低于8u161的版本 但是,如果你这样做了 与降级Java的想法不同,您可以使用或,并且在大多数情况下应该使用相同的方法 编辑:请注意,在进行其中一项更改后,您仍需要添加一个安全异常,以便浏览器接受 自签名证书,但该页不应使用其他证书 问题;我自己用Java8U144验证了这一点
GlassFish 5.0和高于8u161的Java版本遇到了一个已知问题 发件人: 解决方法是将您的Java版本降级为 低于8u161的版本 但是,如果你这样做了 与降级Java的想法不同,您可以使用或,并且在大多数情况下应该使用相同的方法 编辑:请注意,在进行其中一项更改后,您仍需要添加一个安全异常,以便浏览器接受 自签名证书,但该页不应使用其他证书 问题;我自己用Java8U144验证了这一点 问题“未支持的曲线ID:29”已解决 以下是我在Glassfish(Java8构建152)中的设置:“-Dcom.sun.net.ssl.enableECC=false” 如图所示: 解决了“未支持的曲线ID:29”的问题 以下是我在Glassfish(Java8构建152)中的设置:“-Dcom.sun.net.ssl.enableECC=false” 如图所示:
如果您将选项放在“服务器配置”而不是“默认配置”中,@VinnhCC给出的答案可以解决问题。如果您将选项放在“服务器配置”而不是“默认配置”中,@VinnhCC给出的答案可以解决问题。您必须使用特定版本的JDK才能工作:181。我只能让它工作如果我使用JDK版本181,我将无法使用MS SQL Server JDBC驱动程序。我希望有更好的方法使用更多最新版本的JDK,但不幸的是,就是这样。您必须使用特定版本的JDK才能使其正常工作:181。如果我使用JDK版本181,我只能使其与MS SQL Server JDBC驱动程序保持一致。我希望如此有一种更好的方法可以使用JDK的最新版本,但不幸的是,就是这样。
NoSuchMethodError
==>库的编译/运行时版本不匹配NoSuchMethodError
=>库的编译/运行时版本不匹配我已降级。上面是完整的说明,作为我最初解释的补充。我已在浏览器中为和stll添加了一个安全异常,以获取相同的错误。我已降级。上面是完整的说明,作为我最初解释的补充。我已在浏览器中为和stll添加了一个安全异常,以获取相同的错误。