什么是LDAP类型的数据源URL

时间:2016-10-28 20:27:52

标签: java spring oracle jdbc ldap

我使用Spring jdbc api连接到Oracle数据库。只为该特定数据库提供了LDAP样式的连接,并且我成功地从Oracle的数据库客户端SQL开发人员建立了连接。

对我来说,有一点似乎很奇怪的是连接字符串的格式:

xyz.loc.biz.com:4050:4049

它在SQL开发人员中应用时有效,但你会注意到有两个数字可能代表端口号,但为什么有两个呢?

尽管如此,我在我的代码中使用了上面的url,它看起来像:

@Bean
public DataSource getDataSource(){
    SimpleDriverDataSource ds = new SimpleDriverDataSource();
    ds.setUrl("jdbc:oracle:thin:@ldap://xyz.loc.biz.com:4050:4049/...");

    ds.setDriver(new OracleDriver());
    ds.setUsername("xxxxxx");
    ds.setPassword("yyyyyy");

    try(Connection conn = ds.getConnection()){
        log.info("conn={}",conn);
    }catch(Exception e){
        e.printStackTrace();
    };
    return ds;
}

毫不奇怪,它显示的错误如下:

java.lang.NumberFormatException: For input string: "4050:4049"

任何人都可以提供帮助吗?

SQL开发人员中的设置:

enter image description here

1 个答案:

答案 0 :(得分:1)

似乎如果指定两个端口号,第一个用于ldap协议,第二个用于ldaps协议(在http://yong321.freeshell.org/oranotes/OracleConnectionSetup.html找到提示,以下是更多权威:http://docs.oracle.com/cd/B28359_01/network.111/b28317/ldap.htm)。

可能是Oracle JDBC驱动程序不理解这种语法。如果其中一个替代连接字符串适合您,请尝试:

ds.setUrl("jdbc:oracle:thin:@ldap://xyz.loc.biz.com:4050/...");
ds.setUrl("jdbc:oracle:thin:@ldaps://xyz.loc.biz.com:4049/...");