備忘録‎ > ‎

[playframework][tomcat7]Tomcat7 + playframeworkで不具合

2013/06/23 23:18 に ly copins が投稿
warファイルを作成してTomcat7で公開したら、何かの条件でHTMLソースファイルが出力されてしまう不具合が発生。
IE8とかだと無理やりHTMLとして解釈して崩れたページを表示してくれるが、chromeだと真っ白な画面となる。
内容は本来表示する予定だったHTMLの途中までと、InternalErrorページがくっついたHTMLソース。
ログには下記のような内容が出力されるが、どこでエラーが発生しているのかわからない。warでのみ発生するのでこれ以上のログは期待できない。
25 2 2013 15:42:03,239 ERROR ~
@6de65b752
Internal Server Error (500)
Oops: ArrayIndexOutOfBoundsException
An unexpected error occured caused by exception ArrayIndexOutOfBoundsException: null
play.exceptions.UnexpectedException: Unexpected Error
at play.Invoker$Invocation.onException(Invoker.java:244)
at play.Invoker$Invocation.run(Invoker.java:286)
at play.server.ServletWrapper$ServletInvocation.run(ServletWrapper.java:552)
at play.Invoker.invokeInThread(Invoker.java:68)
at play.server.ServletWrapper.service(ServletWrapper.java:143)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ArrayIndexOutOfBoundsException
調査の結果、flashスコープに大量のデータを詰め込んだことが原因でした。
flashスコープはcookieの仕組みを利用しているため、4KBのサイズ制限があります。
ローカル環境(playサービス)で動かしているときは、サイズオーバーしてもエラーにならないのですが、tomcat7ではこれをチェックしているためにエラーとなっていました。
 
playサービスではエラーにならないとは言っても、4KBを超えるcookieはブラウザ側では受けきれないのでデータが切り捨てられてしまうことになります。
 
 
Comments