通过 oracle wallet 连接 jdbc

Connect jdbc via oracle wallet

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

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钱包中的参数。只要“@”之后的连接 URL 与钱包中的 db_connect_string 相匹配,这可能会消除对 tnsnames.ora 的需求。

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

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

您可以将与钱包相关的连接属性作为连接的一部分传递 URL。您可以跳过使用 tnsnames.ora。 有关示例,请参阅 JDBC developer's guide