繁体   English   中英

java.lang.stackoverflowerror 上 jsf 应用程序与 tomcat

[英]java.lang.stackoverflowerror on jsf application with tomcat

嗨,我正在尝试找出 stackoverflow 错误。

我所知道的是错误来自

org.apache.catalina.core.ApplicationDispatcher.setAttribute 在第 278 行

但我不知道是什么原因造成的。

跟踪错误的最佳方法是什么? 这就像在干草堆中找到一根针,因为有 50 多个班级。

我怎么知道哪个方法调用它来获取错误? (比如我想打开调试模式来跟踪这个stackoverflow)。

如果不查看堆栈跟踪并解释/理解重复模式,就很难确定真正的原因。

但是,可能导致 JSF Web 应用程序中的StackOverflowError的最常见的初学者错误如下:

  • 无效的FacesServlet映射。 例如映射到*.jsp而视图本身已经是*.jsp 您应该将 map 放在其他东西上,例如*.jsf 当您将 JSF2 与 Facelets 一起使用时,这不是必需的。 视图和映射都可以是*.xhtml

  • 带有无效文件扩展名的 JSF 视图文件。 例如,实际上有一个page.jsf文件而不是page.jsppage.xhtml ,而FacesServlet映射到*.jsf上。

我敢打赌,您的问题是由其中任何一个原因引起的。 其他可能的原因通常归结为支持 bean 类中的错误代码,但通常不会在跟踪的重复部分涉及容器的内部类,例如org.apache.catalina.core.ApplicationDispatcher

跟踪错误的最佳方法是查看堆栈跟踪,可能存在递归,您的跟踪可能会有重复的方法调用序列。

我遇到了这个问题,对我来说这似乎是一个错误 - 创建一个空的 faces-config.xml 使它远离 go (是解决方法)。 CDI 也被配置/安装。

TOMCAT_HOME/logs/文件夹(Tomcat 6 和 7)中,有一个catalina.yyyy-mm-dd.log文件,其中包含所有记录的消息(包括应用程序抛出的异常)。 获取最新的(今天的)日志文件并查看引发异常的位置(通常是最近发生错误的时间)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM