这个让我很困惑。正常工作,突然之间,当我尝试将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
问候,迈克尔。
好吧,这是我见过的最奇怪的问题。必须重新安装Tomcat才能使其再次工作。看来雄猫的内裤出问题了。好吧,那几个小时过得很愉快……调试和重新安装
如果有人知道是什么原因导致这样随机的事情,对我自己来说会很有趣,我相信对未来经历过类似事情的其他人来说也是如此。
编辑
最后得到了这个的底部,重写规则作为URLRewriteFilter
的urlrewrite.xml
文件的一部分使用正则表达式的From URL。
提示,请确保在url的末尾添加了开始的^
和结束的$
字符,并确保url有明显的不同。我有一个规则,从"/abc/123/"
到"/xyz/abc/?p=$"
,导致重定向循环和Tomcat进入一个无尽的循环,你不能退出-没有重新安装。from应该是"^/abc/123/$"
,以确保它不匹配。
100%必须重新安装Tomcat。为了找到这个解决方案,我花了2个小时进行调试,但结果并不令人满意。
这里有一个关于如何重新安装的很好的教程。在那之后,你必须右键单击你的项目和解决缺失的web服务器。