LoginSignup
4
2

More than 5 years have passed since last update.

GAE Javaでカスタムエラーページを表示させたい

Posted at

システム構成

Java + Slim3 で GAE/Java のウェブアプリ開発中・・

どのコントローラーも対応しないルートにリクエストが行ってしまった場合、GAEのデフォルトのエラー404ページが出る。

GAE & Javaでデフォルトのエラーページ

こんなん。↓
gae_default_404.png

さらっとしすぎでしょ・・
普通カスタマイズしますよね・・?

Slim3コントローラーの話

Slim3ではデフォルトのルーティングルールではイヤな場合、RouterImplを実装します。

例:

public class AppRouter extends RouterImpl {
public AppRouter() {
addRouting("/book/{key}/", "/book?key={key}");
}
}

みたいな感じ。
マッチングさせたいルールを記述するんですが、そもそもURL間違えられた場合にはどのコントローラーも対応しません・・状態になります。

では先ほどのさらっとしたエラーページ、誰が出力してんねん?てなりますよね。

さらっとしかエラー出力してくれないヤツ

犯人はログをみると出ています。

com.google.appengine.tools.development.LocalResourceFileServlet doGet
No file found for: /notexists/

この、LocalResourceFileServletさんがやってくれてるんですが・・
カスタマイズどうすんねん!

普通ならServletのweb.xmlですよね・・?

そう。Servletのエラーページと言えば、web.xmlの中で定義するのが定番。

web.xml
<error-page>
    <error-code>404</error-code>
    <location>/error/notFound</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/error</location>
</error-page>

GAEだって要はServletでしょ!と記述してみても、全く効かない・・・・
やっぱりさらっとした404ページしか出てくれません(涙)

困った時は公式ページ

英語ですが頑張って読みます。
The Deployment Descriptor: web.xml - Java — Google Cloud Platform

がしかし、驚愕の事実が・・

Note: At present, you cannot configure custom error handlers for some error conditions. Specifically, you cannot customize the 404 response page when no servlet mapping is defined for a URL, the 403 quota error page, or the 500 server error page that appears after an App Engine internal error.

404ページのカスタマイズ・・対応してないって・・・マジで??

公式よりあてになったstackoverflow

How to implement a custom 404 error page on App Engine, Java? - Stack Overflow

ここの情報に救われた。
なんと、web.xmlに記述したエラーページが効かないのは、ローカル開発環境のみらしい。
試しにさっきのコードでデプロイしてみたら、ちゃんと動きました。。

結論

  • GAE/Javaでエラーページをカスタマイズしたければweb.xmlに普通のServletと同じくエラーページの記述を追加する
  • ローカル開発環境では無視されるので、必ず本番環境にデプロイして動くことを確認

GAE、ローカルと本番で動き違いすぎ;;

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2