私は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
そして、そのブロックも繰り返されます。
issue 3588 のレポーターも私も、これは何らかの形で jsp:include に関係していると思います。私のアプリケーションの以前のバージョンは動作し、jsp:include を使用していましたが、この新しいバージョンでは jsp:param といくつかの EL 構文も使用しています。それらは問題に関連している場合もあれば、そうでない場合もあります。これはすべて開発中に機能します。この問題は、GAE にデプロイした後にのみ現れます。この時点で、すべてのページ リクエストで 500 サーバー エラーが発生し、ログにこの StackOverflowError が表示されます。ログに記録されたスタック トレースのいずれにも、私のコードはどこにも言及されていません。
スタック トレースには、maybeServeWelcomeFile と serveWelcomeFileAsForward も記載されています。この最新バージョンでは、web.xml のウェルカム ファイルの定義に変更はありません。
Google 検索では、上記のリンクの問題が見つかりましたが、他には何もありませんでした。私の次のステップでは、これを引き起こした正確な変更を特定しようとしますが、他の人が提供できる洞察は非常に役立ちます.