1 回答
TA贡献1906条经验 获得超10个赞
如果您需要更多信息,请告诉我。
在询问有关 Tomcat 的问题时,指定您使用的确切版本(xyz)很重要。希望你的Tomcat 7.0.z版本不是n年。
当 Tomcat 尝试启动我的 webapp 时,它导致我的 webapp 失败。
错误消息说它是由方法“org.apache.catalina.deploy.NamingResources cleanUp”记录的。正如您从名称中猜到的那样,它不会在启动时发生,而是在关闭时发生。
日志文件和另一个日志文件(特别是 localhost.log)中的其他消息是什么?
我的猜测是其他原因阻止它启动,而清理错误只是其后果。
静态记录器日志
为什么是“静态”?仅当您有此类的多个实例(并希望跨实例共享记录器)时,这才有意义。如果只有一个实例(一个 Servlet,一个 Controller 通常作为单个实例存在),使用实例字段更有意义。
一般注意事项:
常见故障排除技巧。您可以尝试在 NamingResources 类中放置一个断点并查看它是如何启动的。您可以尝试在 StandardContext 类中放置一个断点并查看它是如何启动的。JNDI 在 StandardContext 启动序列的某个步骤初始化。
您可以尝试简化 Log4J 的配置。(以确保它不在其配置中使用 JNDI)。
通常通过创建 InitialContext 并通过它进行查找来访问 JNDI。InitialContext 根据它在其中运行的 Web 应用程序选择 JNDI 树。这是通过查看当前线程(又名 TCCL)的 Thread.getContextClassLoader() 来完成的。如果 TCCL 错误,JNDI 将无法访问。( NamingResources 类是一个例外,因为它可以访问 Tomcat 内部结构)。
添加回答
举报