Java:运行不存在的servlet构建的StackOverflowError

时间:2016-07-03 19:08:14

标签: java tomcat servlets

这个令我困惑。正常工作,当我尝试将servlet作为项目的一部分运行时突然间,我在输出日志中得到无限循环错误;

03-Jul-2016 18:43:59.464 SEVERE [http-apr-8080-exec-72] org.apache.catalina.core.ApplicationDispatcher.invoke Servlet.service() for servlet xyz threw exception
 java.lang.StackOverflowError
    at javax.servlet.ServletRequestWrapper.getCharacterEncoding(ServletRequestWrapper.java:96)

还有更多;

at org.tuckey.web.filters.urlrewrite.UrlRewriter.decodeRequestString(UrlRewriter.java:142)
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.getPathWithinApplication(UrlRewriter.java:104)
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.getNewChain(UrlRewriter.java:171)
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90)
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318)
    at org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
    at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
    at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)

错误持续了一段时间。它们只在我停止运行Tomcat时停止。

奇怪的是,列出的servlet不再存在。首次抛出错误后,我将其删除,然后错误仍然存​​在。似乎servlet文件xyz已经卡在了Tomcat的某个地方而且它没有更新。

有任何想法如何调试这样的问题?我似乎已经尝试了一切。

IDE:Netbeans 8.0.2

此致 迈克尔

2 个答案:

答案 0 :(得分:0)

好的,这是我见过的最奇怪的问题。不得不重新安装Tomcat以使其再次运行。看起来Tomcat的内裤有点扭曲。好吧,这花费了几个小时...调试和重新安装

如果有人知道是什么原因造成了这样的随机事情,那么对我自己来说会很有意思,而且对于其他将来会遇到类似事情的人也很有信心。

编辑 最后得出结论,作为URLRewriteFilter的urlrewrite.xml文件的一部分的重写规则使用From URL的正则表达式。提示,请确保在URL的末尾添加起始^和结束$字符,并确保URL明显不同。我有一个规则来自" / abc / 123 /" to" / xyz / abc /?p = $"导致重定向循环,Tomcat进入无限循环,你无法退出 - 根本没有重新安装。来自应该是" ^ / abc / 123 / $"确保它不匹配。

答案 1 :(得分:0)

100%,您必须重新安装Tomcat。我花了2个小时进行调试,以找到此解决方案,但我对它的印象并不深刻。

Here是一个很好的教程,介绍了如何为那些想知道的人重新安装。之后,您必须右键单击您的项目并解决缺少的Web服务器。