DefaultDataSource.getConnection(userID, password) 失败

Posted

技术标签:

【中文标题】DefaultDataSource.getConnection(userID, password) 失败【英文标题】:DefaultDataSource.getConnection(userID, password) Failing 【发布时间】:2014-11-10 13:14:47 【问题描述】:

我正在从事 WAS 6.1 到 WAS 8.5.5 迁移项目(也将 JDK 1.5 迁移到 1.7)并且在 WAS 8.5.5 上切换项目时面临数据库连接问题。

connection = defaultDataSource.getConnection(userID, password); Failing
java.sql.SQLException: ORA-01017: invalid username/password; logon denied DSRA0010E: SQL State = 72000, Error Code = 1,017

DataSource get Connection(userID, password) - 当我们传递 DB 连接用户 ID 和密码(我们在 JAAS 中使用的 - 服务器上的 J2C 身份验证数据)时,连接变得正确。 但是当我们传递门户用户 ID 和密码时失败。 相同的代码在 WAS 6.1 上运行,没有任何异常。

与 DataSource 正确连接。 WAS 8.5.5 上的 getConnection() 方法 相同的代码在不同的环境中工作,但在这种情况下,当我调用 getConnection(userID, password) 时出现异常。数据源是 WAS 具有正确的身份验证别名集,并且在测试连接时,它从 WAS 端工作正常

我使用了 OJDBC6.jar(支持 WAS 8.5.5 的 odbc4.1),但它应用程序从 JRE 库的 rt.jar 引用 DataSource 对象。

你能指导我解决这个问题吗?

【问题讨论】:

【参考方案1】:

数据源的范围是什么?如果可能,您能否附加或提供数据源范围内的 security.xml 文件和 resources.xml。听起来他们是 security.xml 和管理控制台中显示的信息之间的同步问题。

请注意,测试连接可能会根据数据源的范围提供不同的结果。

测试连接操作发生的数据源范围JVM 单元管理器进程 Node 节点代理进程(相关节点的) 集群 包含集群成员的每个节点的节点代理 服务器服务器;如果服务器不可用,则在节点代理中为包含应用程序服务器的节点重试测试连接操作。

如果您有一个集群范围的数据源,那么测试连接实际上是在节点代理上执行的。因此,服务器级别的故障(可能是您的情况)未被测试。

来源:Knowledge Center

为了解决问题,我建议停止 JVM 并使用 syncNode 命令执行手动同步。

【讨论】:

以上是关于DefaultDataSource.getConnection(userID, password) 失败的主要内容,如果未能解决你的问题,请参考以下文章