我使用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开发人员中的设置:
答案 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/...");