繁体   English   中英

Glassfish与MS SQL Server数据库的连接

[英]Glassfish connection to MS SQL server database

我安装了附带数据库AdventureWorks2016的MS SQL Server评估版,并在localhost:4848上运行了Glassfish。 TCP / IP连接被允许SQL服务器(配置管理器)和TCP端口为1433。我已经下载了Microsoft JDBC驱动程序7.0从SQL Server 的Microsoft JDBC驱动程序 ,并用C解压缩它:\\并设置CLASSPATH变量指向它,已将其副本放置在C:\\ Program Files \\ glassfish5 \\ glassfish \\ domains \\ domain1 \\ lib中。 我使用Windows身份验证连接到MS SQL Server。 我使用所有默认值创建了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 / String; I )

我想念什么? Java JDK是Java 8(jdk1.8.0_191)和Glassfish 5.0。

我已降级为java8u151。 现在,当我执行ping操作时,错误是:

对于AdventureWorks2016,Ping连接池失败。 无法分配连接,因为:驱动程序无法通过使用安全套接字层(SSL)加密建立到SQL Server的安全连接。 错误:“不支持的curveId:29”。 ClientConnectionId:ebe27ff7-0ce1-4e9d-95fd-52133be8ee01请查看server.log以获取更多详细信息。

就像我说过的,我在服务器上使用Windows身份验证,因为我在笔记本电脑上不需要任何其他东西,并且在我安装MS SQL Server时它首先起作用。 现在我尝试

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

URL属性,但没有效果。

解决了问题“不支持的curveId:29”。

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

见图片: 在此处输入图片说明

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

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

我上次回答这个问题开始

解决方案是将Java版本降级到8u161以下版本

我在另一个答案中对此做了更详细的回答,但是,如果您不喜欢降级Java的想法,则可以每晚使用最新的GlassFish 5.0.1切换到Payara 5,后者是从GlassFish派生的,并且应该在在大多数情况下。

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

您必须使用特定版本的JDK才能工作:181.如果我使用JDK版本181,则只能使其与MS SQL Server JDBC驱动程序保持一致。我希望有一种更好的方法来使用更多版本的JDK。 JDK的最新版本,但是很遗憾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM