我从Tomcat 8.0.18升级到8.0.23,突然间我有一个JNDI问题。我查看了更改日志,Tomcat 8更改日志,我看到了三个JNDI更改,尽管没有一个会破坏以前的工作配置。
JNDI相关的更改是针对bug 49785、57587和8.0.19下的"Other"条目进行的。
我收到这个异常,当我启动Tomcat与8.0.23:
javax.naming.NameNotFoundException: Name [jdbc/MyCluster] is not bound in this Context. Unable to find [jdbc].
在我的web应用程序我有一个资源链接定义:
<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:(
如果有人对从Tomcat 8.0.18升级到8.0.24如何真正导致JNDI出错感到好奇,那么答案就在ANT中。
ANT复制文档
我和其他一些工程师不知道如果你试图覆盖的文件有一个较新的时间戳,ANT Copy什么也不做…谁知道副本有这么复杂的情况!?我相信这就是为什么我和很多人从来没有看过文档,这是一个意想不到的行为。
无论如何,通过升级到Tomcat的新版本,我的包含resourcelink jdbc/MyCluster的context.xml无法覆盖Tomcat的默认context.xml的更新和最近的时间戳!一旦覆盖标志被设置为true, JNDI将再次工作:)