我尝试使用SSL连接MSSQL服务器和JDBC,但希望模拟重用会话。我打开了第一个连接,并成功地看到了SSL握手。 在关闭第一个客户端时,我从同一个客户端(IP,端口)打开了一个新的,并期望看到重用会话(短暂握手)。但实际上结果是2次握手。我是否需要发送一些要求连接某个会话ID的URL属性,还是有其他方法? 吼我的代码。在连接2连接后我的调试打印中我得到:
%% No cached client session
*** ClientHello,TLSv1.2 RandomCookie:GMT:1465392528 bytes = {43,89,208,221,13,215,236,167,68,88,125,134,95,233,198,226,193,180,250,181,38, 62,144,35,162,215,71,59} 会话ID:{}
表示我被认可为新客户。
我正在使用Win7 Java 8,MSSQL server2012
非常感谢。 public void connect() throws SQLException, NoSuchAlgorithmException {
System.setProperty("java.library.path",System.getProperty("java.library.path")+";C:\\Users\\aviva\\Desktop\\JDBC\\sqljdbc_6.0\\enu\\auth\\x86\\sqljdbc_auth.dll;C:\\Users\\aviva\\Desktop\\JDBC\\sqljdbc_6.0\\enu\\auth\\x64\\sqljdbc_auth.dll");
String connectionUrl2 = "jdbc:sqlserver://<IP>:<PORT>;databaseName=master;EncryptionMethod=loginSSL";
try {
Connection conn1;
Connection conn2;
String queryString = "select * from sysobjects where type='u'";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn1 = DriverManager.getConnection(connectionUrl2, "user", "password");
System.out.println("con1 is connected...");
Statement statement1 = conn1.createStatement();
ResultSet rs1 = statement1.executeQuery(queryString);
System.out.println("1 results");
while (rs1.next()) {
System.out.println(rs1.getString(1));
}
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn2 = DriverManager.getConnection(connectionUrl2, "user", "password");
System.out.println("con2 is connected...");
Statement statement2 = conn2.createStatement();
ResultSet rs2 = statement2.executeQuery(queryString);
System.out.println("2 results");
while (rs2.next()) {
System.out.println(rs2.getString(1));
}
conn1.close();
conn2.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}