当前位置: 首页 > 面试题库 >

为什么jsp:include(有时)会在Google App Engine上引起StackOverflowErrors?

阎令
2023-03-14
问题内容

StackOverflowErrors在GAE上遇到对应用程序最新版本的所有请求。我跟踪了问题#3588,但由于记者将其归咎于第三方库,并且Google工程师不想再查找了,因此已关闭。在我的情况下,没有第三方库要怪。我只是在页面模板中做一些非常基本的jsp:includes。

记录的错误开始如下:

java.lang.StackOverflowError
at java.util.HashMap.removeEntryForKey(HashMap.java:565)
at java.util.HashMap.remove(HashMap.java:555)
at org.mortbay.util.AttributesMap.removeAttribute(AttributesMap.java:51)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:441)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.removeAttribute(Dispatcher.java:461)
at org.mortbay.jetty.servlet.Dispatcher$IncludeAttributes.setAttribute(Dispatcher.java:549)
at org.mortbay.jetty.servlet.Dispatcher$IncludeAttributes.removeAttribute(Dispatcher.java:569)
at org.mortbay.jetty.servlet.Dispatcher$IncludeAttributes.setAttribute(Dispatcher.java:549)
at org.mortbay.jetty.servlet.Dispatcher$IncludeAttributes.removeAttribute(Dispatcher.java:569)
at org.mortbay.jetty.servlet.Dispatcher$IncludeAttributes.setAttribute(Dispatcher.java:549)
at org.mortbay.jetty.servlet.Dispatcher$IncludeAttributes.removeAttribute(Dispatcher.java:569)

Get / setAttribute调用重复一段时间,然后…

at org.mortbay.jetty.servlet.Dispatcher.include(Dispatcher.java:145)
at com.google.apphosting.runtime.jetty.ResourceFileServlet.serveWelcomeFileAsForward(ResourceFileServlet.java:340)
at com.google.apphosting.runtime.jetty.ResourceFileServlet.maybeServeWelcomeFile(ResourceFileServlet.java:281)
at com.google.apphosting.runtime.jetty.ResourceFileServlet.doGet(ResourceFileServlet.java:142)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.servlet.Dispatcher.include(Dispatcher.java:192)
at

并且该块也重复。

问题3588的记者和我都认为这与jsp:include有关。我的应用程序的先前版本可以使用并使用jsp:include,但该较新版本也使用jsp:param和某些EL语法。这些可能与问题有关,也可能与问题无关。这一切都在开发中。该问题仅在部署到GAE后才显现出来,此时所有页面请求均导致500个服务器错误,并且日志显示此StackOverflowError。没有记录的堆栈跟踪在任何地方提及我的任何代码。

堆栈跟踪还提到了也许ServeWelcomeFile和serveWelcomeFileAsForward。最新版本的web.xml中的欢迎文件定义没有任何变化。

Google搜索显示了上面链接的问题,但仅此而已。我的下一步将尝试找出导致此问题的确切变化,但是其他人可以提供的任何见解将非常有帮助。


问题答案:

此错误是由jsp:引起的,包括服务器上不存在的文件。参见问题#5564。当我部署到Google
App Engine时,开发环境中存在的某些文件不会以某种方式上传( 更新:
另请参见问题#5565)。



 类似资料:
  • 问题内容: 为什么要成功恢复惊慌的goroutine调用,而不能成功调用呢? 作为一个简单的示例,此代码不会出现紧急情况 但是,用直接恢复紧急情况代替匿名功能 问题答案: 该处理恐慌部分提到, 两个内置函数和,可帮助报告和处理运行时紧急情况 该功能允许程序管理恐慌性goroutine的行为。 假设一个函数 推迟了要调用 的函数 ,并且在执行该函数的同一个goroutine上的函数中出现了a 。 当

  • 问题内容: 我正在阅读有关ConcurrentModificationException以及如何避免它的信息。找到了一篇文章。该文章中的第一个清单具有与以下相似的代码,这显然会导致异常: 然后,它继续以各种建议解释如何解决该问题。 当我尝试重现它时,我没有遇到异常! 为什么我没有得到例外? 问题答案: 根据JavaAPI文档,Iterator.hasNext不会抛出。 检查后,您从列表中删除了一个

  • 问题内容: 我有一个带有关系的实体,我想通过一个查询来检索它,因此使用。有时,Hibernate不尊重它,而是发出N + 1 秒。随着 有时 我的意思是,因为我不知道是什么触发它,我有案件对不同的查询,这可能发生,或者不一样的类。 这是带有我使用的注释的简化实体: 用 我希望单个查询能够同时获取其及其内容,例如 相反,我得到了第一选择所有N S和那么N 献给所有S(考虑没有缓存)。 我发现了许多类

  • 问题内容: 在我的一种方法中,我实例化了一个DOM,并且自从我使用以下方法转储它以来,似乎已正确初始化了它: 它输出应该存在的SOAP消息的有效和当前内容。 但是只有一个语句(之前和之后)显示为: 它们之间都显示完全 有效的内容 。 这对我来说没有意义…我想念什么? 根据评论中的建议进行更新:我将日志语句更改为 输出为: INFO:doc BEFORE = [#document:null],[#d

  • 问题内容: 我遇到了一个问题,即使它可以与他人正常工作,也无法使java.util.Scanner读取保存在记事本中的文本文件。基本上,当它尝试读取问题文件时,它完全是空手的- hasNextLine()为false,缓冲区为空,等等。我将其范围缩小到一个事实,即如果存在,它甚至不会读取第一行是文件中 任何地方 的卷曲报价。没有异常被抛出。请注意,同一文件上的BufferedReader没问题。

  • 问题内容: 我遵循了“ 导航抽屉 ”教程,除小故障外,其他所有内容都像魅力一样。我将尽力解释,如果仍然不清楚,我将尝试上传有关该问题的视频。 尝试打开抽屉时只会发生问题,仅在打开时会发生问题,并且有时(并非总是)发生问题。就是说,当我开始打开它时,它会出现毛刺并冻结,打开大约4毫米,并且始终保持相同的距离。然后,如果我向后移动手指,它就不会继续打开或关闭,放开时它会关闭。 请注意: 我已经在多种设

  • 问题内容: 想要改善此职位? 提供有关此问题的详细答案,包括引文和为什么您的答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我在Arch Linux,i7-5930k 6核心CPU和64GB DDR4 RAM上运行,并且正在使用IntelliJ IDEA 14。 几天前,IDEA对我来说还算不错,但是有一天,突然间,它在“索引”阶段打开项目后就开始挂起。我没有更新IDEA,并且我的项目没有