我正在使用 GlassFish 5.0.0 开发 JavaEE 8 应用程序,并且我想访问驻留在 Microsoft SQL 服务器中的数据库。我在 Maven 中附加了 Microsoft SQL 驱动程序 7.0 jre8。
当我部署应用程序并尝试打开访问数据库的页面时,我崩溃了。下面的堆栈跟踪。
java.lang.NoSuchMethodError: sun.security.internal.spec.TlsMasterSecretParameterSpec.getExtendedMasterSecretSessionHash()[B
at com.sun.crypto.provider.TlsMasterSecretGenerator.engineGenerateKey(TlsMasterSecretGenerator.java:107)
at javax.crypto.KeyGenerator.generateKey(KeyGenerator.java:546)
at sun.security.ssl.Handshaker.calculateMasterSecret(Handshaker.java:1174)
at sun.security.ssl.Handshaker.calculateKeys(Handshaker.java:1120)
at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:1126)
触发崩溃的代码在这里:
public class DatabaseDatas {
private final static String sqlconn = "jdbc:sqlserver://<redacted>;" +
"databaseName=dbName";
/**
* Gets Lelang data in LelangList
* @return Data in LelangList table
*/
public static ResultSet getLelang(){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection sqlconnection = DriverManager.getConnection(sqlconn,"sa","password"); //this is the one which trigger the crash
sqlconnection.isValid(0); //ignore this
Statement sta = sqlconnection.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
String sql = "SELECT * FROM ListLelang";
return sta.executeQuery(sql);
} catch (ClassNotFoundException|SQLException e) {
e.printStackTrace();
}
return null;
}
我使用 Jetbrains Intellij IDEA 2018.2.3 作为 IDE,并将 JDK 1.8.0_151 设置为 Project SDK。我还在 GlassFish 5 管理面板的 JDBC 连接池中设置了 javax.sql.DataSource 和 java.sql.driver。
我不知道为什么会发生这种情况。我在互联网上的任何地方都找不到我的错误。请帮我解决这个问题。如果需要,我可以提供更多信息(只要不是个人信息)。谢谢你。
编辑:其实我忘了测试连接池。在我尝试通过 Glassfish 5 管理面板“ping”之后,我遇到了与上面堆栈跟踪中的错误相同的错误。
慕森王
相关分类