【问题标题】:JNDI NameNotFoundException after Tomcat 8 upgradeTomcat 8 升级后的 JNDI NameNotFoundException
【发布时间】:2015-11-04 02:05:22
【问题描述】:

我从 Tomcat 8.0.18 升级到 8.0.23,突然之间我遇到了 JNDI 问题。我查看了更改日志Tomcat 8 Changelogs,我看到了三个 JNDI 更改,但我觉得没有一个更改会破坏以前的工作配置。

针对错误 49785、57587 和 8.0.19 下“其他”下的条目进行了与 JNDI 相关的更改。

当我使用 8.0.23 启动 Tomcat 时收到此异常:

javax.naming.NameNotFoundException: Name [jdbc/MyCluster] is not bound in this Context. Unable to find [jdbc].

在我的网络应用程序中,我定义了一个资源链接:

<Context>
   <ResourceLink name="jdbc/MyCluster" global="jdbc/MyCluster" auth="Container" type="javax.sql.DataSource" />
</Context>

我已经配置了 Tomcat:

<Resource name="jdbc/MyCluster" global="jdbc/MyCluster" ......./>

我被难住了...我不知道是什么让我的代码在我从 18 升级到 23 后中断:(

【问题讨论】:

    标签: java tomcat ant jndi tomcat8


    【解决方案1】:

    如果有人好奇从 Tomcat 8.0.18 升级到 8.0.24 真的会导致 JNDI 搞砸,答案就在 ANT 中。

    ANT Copy documentation

    我自己和其他一些工程师不知道如果您尝试覆盖的文件具有较新的时间戳,ANT Copy 不会执行任何操作......谁知道副本有如此复杂的条件!?!我相信这就是为什么我和很多人从未看过文档的原因,这是一种出乎意料的行为。

    无论如何,通过升级到更新版本的 Tomcat,我的 context.xml 包含资源链接 jdbc/MyCluster 未能覆盖 Tomcat 默认 context.xml 的更新和更新时间戳!一旦覆盖标志设置为 true,JNDI 就会再次工作:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-22
      • 2013-07-29
      • 1970-01-01
      • 2014-04-26
      • 2018-12-11
      • 2019-11-07
      • 2018-12-20
      • 1970-01-01
      相关资源
      最近更新 更多