Я испытываю StackOverflowErrors
со всеми запросами к последней версии приложения на GAE.Я отследил Проблема № 3588 , но она была закрыта, потому что репортер обвинил ее в сторонней библиотеке, а инженер Google не хотел смотреть дальше.В моем случае нет сторонней библиотеки, чтобы обвинить.Я просто делаю некоторые базовые jsp: include в шаблоне моей страницы.
Зарегистрированная ошибка начинается следующим образом:
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 поднял проблему, о которой говорилось выше, но больше ничего.Следующие мои шаги будут направлены на то, чтобы выделить точное изменение, вызвавшее это, но любое понимание, которое могут дать другие, было бы очень полезно.