Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Glassfish与MS SQL server数据库的连接_Java_Sql Server_Jakarta Ee_Glassfish - Fatal编程技术网

Java Glassfish与MS SQL server数据库的连接

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

我安装了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;集成安全性=真


用于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添加了一个安全异常,以获取相同的错误。