我正在使用 Spring jdbc api 连接到 Oracle 数据库。仅向该特定数据库提供 LDAP 样式的连接,并且我成功地从 Oracle 的数据库客户端 SQL 开发人员建立了连接。
有一点对我来说很奇怪,那就是连接字符串的格式:
xyz.loc.biz.com:4050:4049
它在 SQL Developer 中应用时有效,但是您会注意到有两个数字应该代表端口号,但为什么是两个?
尽管如此,我在代码中使用了上面的 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 Developer 中的设置:
最佳答案
似乎如果您指定两个端口号,第一个用于 ldap 协议(protocol),第二个用于 ldaps 协议(protocol)(在 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/...");
关于java - LDAP 类型的数据源 url 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40312773/