Tomcat7.0部署war包失败,出现JNDI相关报错该如何排查
Tomcat7 部署war包JNDI报错排查方案
你遇到的报错核心原因是Tomcat在卸载/加载应用上下文时,无法找到绑定的JNDI comp/env 上下文,可按照以下步骤逐一排查:
- 检查Tomcat全局JNDI配置:打开
conf/server.xml,查找对应Host节点下的Context配置,确认没有设置disableNaming="true",该参数会关闭JNDI功能,Tomcat7默认该参数不启用,若手动添加需删除或修改为false。 - 核对应用JNDI配置:检查应用包内
WEB-INF/web.xml的配置,以及Tomcat Context专属配置( conf/Catalina/localhost/[应用上下文路径].xml)中的资源配置,确认资源名、类型、属性没有拼写错误,引用的全局资源在server.xml的中已正确声明。 - 清理缓存重试:如果是热部署场景触发的报错,先停止Tomcat进程,依次清空
work/Catalina/localhost/下对应应用的缓存、temp目录下的临时文件,删除webapps下对应的应用目录和war包,重新上传war包后启动Tomcat,排除旧上下文残留的影响。 - 排查应用代码逻辑:检查应用代码是否存在上下文销毁后仍然访问JNDI资源的逻辑,或者手动释放JNDI上下文的错误代码,这类逻辑会导致JNDI上下文已被回收后再次触发查找请求。
- 验证版本兼容性:确认当前使用的JDK版本符合Tomcat7的运行要求,Tomcat7支持的JDK版本范围为1.6~1.8,若使用更高版本JDK可切换到JDK8验证是否为版本兼容问题。
Sep 09, 2021 10:56:27 AM org.apache.catalina.startup.HostConfig undeploy INFO: Undeploying context [/sbmvnoapp_schas] Sep 09, 2021 10:56:27 AM org.apache.catalina.deploy.NamingResources cleanUp WARNING: Failed to retrieve JNDI naming context for container [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sbmvnoapp_schas]] so no cleanup was performed for that container javax.naming.NameNotFoundException: Name [comp/env] is not bound in this Context. Unable to find [comp]. at org.apache.naming.NamingContext.lookup(NamingContext.java:819) at org.apache.naming.NamingContext.lookup(NamingContext.java:167) at org.apache.catalina.deploy.NamingResources.cleanUp(NamingResources.java:986) at org.apache.catalina.deploy.NamingResources.stopInternal(NamingResources.java:968) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5729) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:272) at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1040) at org.apache.catalina.startup.HostConfig.undeploy(HostConfig.java:1547) at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1474) at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1695) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:333) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1373) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1545) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1555) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1523) at java.lang.Thread.run(Thread.java:748)
内容的提问来源于stack exchange,提问作者MARVEL
相关产品推荐
相关产品推荐

