无法将 Glassfish 5.1.0 上的 Java 8 (291) Web 应用程序连接到 SQL Server 2014 实例



我有一个JSF web应用程序,它在Java 6、Glassfish 4.1、SQL Server 2012、Nebeans 8下运行,但我在Java 8、Glassfish5.1.0、SQL Server 2014、Netbeans 12下收到一个错误。它有一些不同,但通常是找不到的握手、套接字或类(集中在servlet上(。

手抖动错误:

java.lang.NoClassDefFoundError: sun/security/ssl/HandshakeStateManager
at sun.security.ssl.Handshaker.init(Handshaker.java:282)
at sun.security.ssl.Handshaker.<init>(Handshaker.java:242)
at sun.security.ssl.ClientHandshaker.<init>(ClientHandshaker.java:160)
at sun.security.ssl.SSLSocketImpl.initHandshaker(SSLSocketImpl.java:1297)
at sun.security.ssl.SSLSocketImpl.doneConnect(SSLSocketImpl.java:671)
at sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:551)
at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:110)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1606)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1324)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:992)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:828)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at Database.DAO.openConnection(DAO.java:48)

所有东西都在同一台机器上,我在没有打开防火墙的情况下尝试过,所以我不认为这是端口问题,尽管glassfish服务器日志显示它已连接,但在某些配置下端口已关闭。

我也尝试过帕亚拉,但在那里失败了。

代码看起来很简单,所以很可能是配置/库的问题,但我还没能解决。

public Connection openConnection(){
//This try/catch should not be necessary, but the driver is not found here
try{
Class.forName(dbi.getDriver());
}catch (ClassNotFoundException e){
System.out.println("Could not load the driver");
}

try{
connect = DriverManager.getConnection((dbi.getUrl()+dbi.getDbName()), dbi.getDbUsername(), dbi.getDbPassword());
}catch(Exception e){
e.printStackTrace();  //Point of failure: connect is null
}

return connect;
}
public DbInfo(){
driver      = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
url         = "jdbc:sqlserver://localhost";
dbName      = ";DatabaseName=Test";
dbUsername  = "user";
dbPassword  = "pass";
}

这不是一个很大的答案,但当有疑问时,用核武器摧毁一切,然后重新开始。

我删除并删除了ODBC驱动程序、SSMS、Netbeans和Glassfish,并重新安装了每个组件。我确保TCP/UDP 1433-1434上的防火墙是打开的,并且所有SQL Server服务都在运行。

我确保ODBC驱动程序在建议的程序文件目录中可用。我确保启用SQL Server和Windows授权,sa登录已启用,允许远程连接。

我复制了已安装的ODBC驱动程序sqljdbc42.jar,使其可用于项目。我最小化了每个项目引用的jar的数量,并包含了Java 8 API和Java 8 Web API库。

我把阳光文件夹从玻璃鱼里那只黏糊糊的罐子里拿了出来。

在每个项目开始在问题项目中工作之前,我对其进行了清理、构建和部署。

相关内容

最新更新