通过oracle钱包连接jdbc



基于oracle文档,我创建了一个钱包

mkstore -wrl /tmp/wl -create

添加凭证

mkstore -wrl /tmp/wl -createCredential localhost:1521/myservice user pass

在我的java应用程序中,我想通过这个钱包连接到数据库

public static void main(String... args) throws Exception { 
Class.forName("oracle.jdbc.driver.OracleDriver"); 
System.setProperty("oracle.net.wallet_location", "/tmp/wl");
Connection connection = DriverManager.getConnection("WHAT TO PUT HERE?");
}

但我不知道如何填充连接字符串。我不想使用tnsnames.ora感谢

根据我的经验,使用钱包进行身份验证时需要使用tnsnames.ora,即使是JDBC瘦连接也是如此。tnsnames.ora中的连接别名与钱包中的连接昵称匹配,为给定的连接提供正确的凭据。

也就是说,最新的文档似乎表明,您可以沿着myhost:1521/myservice(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myhost-scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=myservice)))的行输入一个连接字符串,作为钱包中的db_connect_string参数。这可能会否定对tnsnames.ora的需求,只要你的连接URL在"@"匹配钱包中的db_connect_string。

你的连接URL看起来像这样:

jdbc:oracle:thin:@myhost:1521/myservice

您可以将与钱包相关的连接属性作为连接URL的一部分进行传递。您可以跳过使用tnsnames.ora。有关一些示例,请参阅JDBC开发人员指南。

最新更新