gpt4 book ai didi

java - 查找 InitialContext.lookup 检索的数据源在哪里定义?

转载 作者:行者123 更新时间:2023-12-01 09:00:12 29 4
gpt4 key购买 nike

我有一些其他人编写的 Java 代码(早已不在,无法联系他们),在我正在调试的 JBoss 服务器上运行。它使用以下一行代码获取 javax.sql.DataSource:

DataSource ds = new InitialContext().lookup("java:/jdbc/WPDS");

但是,当他们在下一行使用 ds.getConnection() 时,这会显示在日志中:

...

javax.resource.ResourceException: Unable to get managed connection for jdbc/WPDS

...

Caused by: org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.sql.SQLException: ORA-01017: invalid username/password; logon denied)

我环顾四周,发现了一个名为 oracle-xa-ds.xml 的文件。它包含以下内容:

<datasources>
<xa-datasource>
<jndi-name>jdbc/WPDS</jndi-name>
<!-- uncomment to enable interleaving <interleaving/> -->
<isSameRM-override-value>false</isSameRM-override-value>
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
<xa-datasource-property name="URL">jdbc:oracle:thin:@hostname.hidden.com:1621:HIDE</xa-datasource-property>
<xa-datasource-property name="User">hidden</xa-datasource-property>
<xa-datasource-property name="Password">hidden</xa-datasource-property>
<!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool -->
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>
<!-- Checks the Oracle error codes and messages for fatal errors -->
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<!-- Oracles XA datasource cannot reuse a connection outside a transaction once enlisted in a global transaction and vice-versa -->
<no-tx-separate-pools/>

<max-pool-size>50</max-pool-size>

<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</xa-datasource>

<mbean code="org.jboss.resource.adapter.jdbc.vendor.OracleXAExceptionFormatter"
name="jboss.jca:service=OracleXAExceptionFormatter">
<depends optional-attribute-name="TransactionManagerService">jboss:service=TransactionManager</depends>
</mbean>

</datasources>

我已经验证所有这些设置都是正确的。我可以使用此文件中给出的主机名、端口、SID、用户名和密码连接到数据库。

我怀疑它可能是从其他地方加载DataSource,但我不知道如何检查该理论(如果是真的,我如何找出它实际上从哪里获取它来自?)是否可以启用某种 JNDI 日志记录,或者也许我可以以某种方式让它告诉我它试图使用什么用户名/密码(这样我就可以查看它是否使用文件中的内容?)

最佳答案

ORA-01017: 无效的用户名/密码;登录被拒绝

原因:

  • 尝试登录 Oracle 时输入了无效的用户名或密码。用户名和密码必须与 GRANT CONNECT 语句中指定的用户名和密码相同。如果用户名和密码一起输入,格式为:用户名/密码。

  • ORA-01017 错误的核心问题是无效的用户 ID 和密码组合,但除了密码错误之外,还存在用户 ID 问题

  • 用户 ID 对于目标系统可能无效 - 用户 ID 作为 dba_users View 中的用户名列存在。

  • 检查您的 $ORACLE_SID 环境参数。如果您的 $ORACLE_SID 设置为错误的系统 ID,那么您可能会收到 ORA-01017 错误,因为您连接到了错误的数据库。

  • 检查 tnsnames.ora 以确保 TNS 服务名称指向正确的服务器和实例名称。如果您指定了不正确的 tnsnames.ora 服务名称,则该数据库中可能不存在该用户 ID 和密码。

行动:

  • 以正确的格式输入有效的用户名和密码组合。

  • 用户名和密码绝对不正确。

  • 尝试更改系统设置 SEC_CASE_SENSITIVE_LOGON = FALSE;并更改密码。

http://oracle-base.com/articles/11g/case-sensitive-passwords-11gr1.php

关于java - 查找 InitialContext.lookup 检索的数据源在哪里定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41732782/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com