Oracle 来自Jython的JDBC连接

Oracle 来自Jython的JDBC连接,oracle,jdbc,jython,wallet,Oracle,Jdbc,Jython,Wallet,从Jython脚本调用JDBC连接器时遇到问题 我想使用Wallet连接到Oracle服务器。这是连接部分: walletLocation=str(os.environ['HOME']+"./oracle") System.setProperty("oracle.net.tns_admin", str(os.environ['TNS_ADMIN'])) System.setProperty("oracle.net.wallet_location", str("(SOURCE=(METHOD=f

从Jython脚本调用JDBC连接器时遇到问题

我想使用Wallet连接到Oracle服务器。这是连接部分:

walletLocation=str(os.environ['HOME']+"./oracle")
System.setProperty("oracle.net.tns_admin",  str(os.environ['TNS_ADMIN']))
System.setProperty("oracle.net.wallet_location", str("(SOURCE=(METHOD=file)(METHOD_DATA=(DIRECTORY="+walletLocation+")))"))
url = "jdbc:oracle:thin:/@myService";
ods = OracleDataSource()
ods.setURL(url)
ocon = ods.getConnection()
结果是: java.sql.SQLException:ORA-01017:用户名/密码无效;拒绝登录

  • TNS_ADMIN已设置,tnsnames.ora包含myService的定义
  • sqlnet.ora包含钱包位置
  • 我可以使用以下命令连接到Oracle服务器:sqlplus/@myService
现在,如果我将这些属性添加到我的连接中:

walletProperties.put("user","oracle_user")
walletProperties.put("password","1234")
ods.setConnectionProperties(walletProperties)
连接正常。。因此JDBC正确地读取了tnsnames.ora中的“myService”

我的感觉是“oracle.net.wallet\u location”属性没有被使用

有人能解开这个谜吗


非常感谢

中的信息有帮助吗?您好,我可以添加哪种附加信息?我试图用oci替换精简jdbc。。。而且它是有效的。但我不明白为什么thin connector不起作用..这应该也适用于thin。您是否在类路径中添加了oraclepki.jar?这个jar需要能够用java打开钱包,而驱动程序需要它。