gpt4 book ai didi

WebSphere:JNDI 上下文查找失败

转载 作者:行者123 更新时间:2023-12-03 23:44:18 24 4
gpt4 key购买 nike

我有以下...

Context aContext = = new InitialContext(settings);
aContext.lookup("java:comp/env/DB2_DB");

也试过...
aContext.lookup("DB2_DB");

web.xml
<resource-ref>
<description>
</description>
<res-ref-name>DB2_DB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Application</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
<mapped-name>DB2_DB</mapped-name>
</resource-ref>

然后在我的 ibm-web-bnd.xml 中...
<resource-ref name="DB2_DB" binding-name="jdbc/DB2DB" />

在 Websphere 中,我在 resources>JDBC>Data Sources 中看到绑定(bind)名称

但是当我运行我的应用程序时,我看到...

Caused by: javax.naming.NameNotFoundException: Context: Node04Cell/nodes/Node04/servers/server1, name: DB2_DB: First component in name DB2_DB not found. [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]^M



这是 WAS6-8.5 的一个端口项目

最佳答案

好吧,这个问题已经很老了,我看到还没有公认的答案,所以。

这是真正发生的事情:

  • 您的代码对 java:comp/env/DB2_DB 执行 JNDI 查找。 .
  • WebSphere 使用 WAS 专有的部署描述符 (ibm-web-bnd.xml) 来“翻译”应用程序绑定(bind) DB2_DB到 WebSphere JNDI 树中的真实名称 (jdbc/DB2DB)。
  • WebSphere 查找 jdbc/DB2DB并将其返回给调用者。

  • 您将收到 NameNotFoundException第一个 查找 - java:comp/env/DB2_DB 的查找.问题不在于找到 jdbc/DB2DB ;它与查找 DB2_DB在组件的环境中。

    您的部署描述符对我来说看起来不错,所以我猜您的问题的原因是这样的:
    Context aContext = new InitialContext(settings);

    您正在构建 InitialContext实例通过提供 Hashtable . Hashtable当您需要为构造提供特殊参数时通常很有用, 但是你必须知道什么时候使用它,什么时候避免它 .在 JavaEE 容器内运行并且需要简单访问容器的 JNDI 树的代码 很少 ,如果有的话,应该提供任何 HashtableInitialContext构造函数。

    如果那些 settings 我不会感到惊讶你传递给 InitialContext例如,包含 PROVIDER_URL指示查找发生在某个遥远的外部 JNDI 树上的键。

    因此,我将从废弃该参数开始:
    Context aContext = new InitialContext();

    然后再试一次。

    如果仍然失败,请使用 WebSphere 的 dumpNamespace实用程序来清楚地了解 WebSphere 的 JNDI 树。

    关于WebSphere:JNDI 上下文查找失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953295/

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