SSL DB2连接失败

时间:2015-09-04 12:15:20

标签: java ssl db2 ibm-cloud

我正在尝试使用IBM Bluemix上的SSL连接到DB2数据库。

当我第一次尝试连接时没有使用SSL,它不起作用。阅读完文档后,我意识到它已启用SSL连接到数据库。

我尝试使用以下代码将其连接到数据库:

public boolean connect() {
  try {
    String url = "jdbc:db2://" + serverName + ":" + port + "/" + dbName+
                 ":securityMechanism=9";    

    connection = DriverManager.getConnection(url, userName, passWord);
    st = connection.createStatement();
    return true;
  } catch (Exception e) {
    System.err.println(e.getMessage());
  }

  return false;
}

我仍然不太确定如何使用上面代码提供的SSL证书。

我尝试搜索示例,但大多数解释都不清楚或用于其他数据库系统。

3 个答案:

答案 0 :(得分:1)

根据SQLDB documentation,如果您使用最新的 com.ibm.db2.jcc.DB2Driver 与JDBC连接,当前的SSL证书与驱动程序捆绑在一起不需要手动安装。

以下代码段显示了如何使用VCAP_SERVICES中提供的连接详细信息通过SSL连接到SQLDB。

public class SSLTEST { 
/**
* @param args
*/
public static void main(String[] args) { 
        String ServerName = "hostname or IP address";
        int PortNumber = 50001;
        String DatabaseName = "SQLDB";
        String user = "your_user_id_from_VCAP_SERVICES";
        String userPassword = "your_password_from_VCAP_SERVICES";

java.util.Properties properties = new java.util.Properties(); properties.put("user", "user ID that has access to SQLDB"); properties.put("password", "password for the user ID that has access to SQLDB"); properties.put("sslConnection", "true"); String url = "jdbc:db2://" + ServerName + ":"+ PortNumber + "/" + DatabaseName + ":" + traceFileLocation + ";"; java.sql.Connection con = null; try { Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance(); } catch ( Exception e ) { System.out.println("Error: failed to load Db2 jcc driver."); } try { System.out.println("url: " + url); con = java.sql.DriverManager.getConnection(url, properties); if (con != null) { System.out.println("Success"); } else { System.out.println("Failed to make the connection"); } con.close(); } catch (Exception e) { if (con != null) { try { con.close(); } catch (Exception e2) { e2.printStackTrace(); } } e.printStackTrace(); } }

答案 1 :(得分:1)

如果您使用Liberty,则会为您生成数据源,您可以使用jndi查找。

 mle2(A~dskellam2(gmlambda=exp(logmu),ldiff=exp(logs), data=mydata,
      parameters=list(logmu~B+C+D),
      start=list(logmu=0,logs=0)))

" MYDB"是SQLDB服务的名称

https://developer.ibm.com/bluemix/2014/02/07/java-db2-10-minutes/

答案 2 :(得分:0)

最后我使用datasource连接数据库。 Context ic = new InitialContext(); DataSource db =(DataSource)context.lookup(" jdbc / MyDatabase");