【问题标题】:Glassfish connection to MS SQL server databaseGlassfish 连接到 MS SQL 服务器数据库
【发布时间】:2018-11-05 17:56:14
【问题描述】:

我安装了 MS SQL 服务器的评估副本,并附加了数据库 AdventureWorks2016,并在 localhost:4848 上运行了 Glassfish。 SQL 服务器(配置管理器)上允许 TCP/IP 连接,TCP 端口为 1433。我已经从 Microsoft JDBC Driver 下载了适用于 SQL Server 的 Microsoft JDBC Driver 7.0 并将其解压缩到 C:\ 并设置一个 CLASSPATH 变量指向它和已将其副本放入 C:\Program Files\glassfish5\glassfish\domains\domain1\lib.我使用 Windows 身份验证连接到 MS SQL 服务器。 我使用所有默认值创建 AdventureWorks2016 连接池。当我ping它时,我得到了

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/字符串;I)

我错过了什么? java jdk 是 java 8 (jdk1.8.0_191) 和 Glassfish 5.0。

我已降级到 java8u151。现在的错误,当我 ping 是:

AdventureWorks2016 的 Ping 连接池失败。无法分配连接,因为:驱动程序无法使用安全套接字层 (SSL) 加密建立与 SQL Server 的安全连接。错误:“不支持的曲线 ID:29”。 ClientConnectionId:ebe27ff7-0ce1-4e9d-95fd-52133be8ee01 请查看 server.log 了解更多详情。

正如我所说,我在服务器上使用 Windows 身份验证,因为我的笔记本电脑上不需要其他任何东西,而且当我安装 MS SQL Server 时,这首先起作用。现在我试试

jdbc:sqlserver://localhost;integratedSecurity=true;

对于 URL 属性,但它没有效果。

【问题讨论】:

  • NoSuchMethodError ==> 库的编译/运行时版本不匹配

标签: java sql-server jakarta-ee glassfish


【解决方案1】:

解决了“Unsupported curveId: 29”问题。

这是我在 Glassfish(Java8 build 152)中的设置:“-Dcom.sun.net.ssl.enableECC=false”。

看图:

【讨论】:

    【解决方案2】:

    您遇到了 GlassFish 5.0 和高于 8u161 的 Java 版本的已知问题。

    来自the last time I answered this problem

    解决方案是将您的 Java 版本降级为 低于 8u161 的版本

    I answered this in more detail in another answer 但是,如果你这样做 不喜欢降级 Java 的想法,您可以使用 the latest GlassFish 5.0.1 nightlyswitch to Payara 5, which is derived from GlassFish 并且在大多数情况下应该可以正常工作。

    编辑:请注意,在进行其中一项更改后,您仍需要添加安全例外,以便您的浏览器接受 自签名证书,但该页面不应再使用 问题;我自己用 Java 8u144 验证了这一点

    【讨论】:

    • 我降级了。完整的描述在上面,作为我最初解释的补充。
    • 我为localhost:4848/common/index.jsf 的浏览器添加了一个安全异常,但仍然出现同样的错误。
    【解决方案3】:

    @VinnhCC 给出的答案如果您将选项放在“server-config”而不是“default-config”中,则可以解决问题。

    【讨论】:

      【解决方案4】:

      您必须使用特定版本的 JDK 才能工作:181。如果我使用 JDK 版本 181,我只能让它与 MS SQL Server JDBC 驱动程序一致地工作。我希望有更好的使用方法JDK 的更新版本,但不幸的是它就是这样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-17
        • 1970-01-01
        • 2021-04-22
        • 1970-01-01
        • 2023-03-11
        • 2016-12-07
        • 2016-11-18
        相关资源
        最近更新 更多