Tomcatの設定6:例外エラー発生時の独自エラー画面の方法
Tomcatで運用する場合で、いくつか考慮した方が良い設定・情報を記載します。
GeneXusが予期しない例外エラーについてはJavaのエラーがそのまま表示されます。
※予期しない例外とは、プログラムエラーやミドルウェアのエラーなどです。
GeneXusの画面やプロシージャでError_Handlerが設定してあれば、「DBからの例外エラー」はある程度対処することが出来ますが、プログラムミスによる例外エラーや、TomcatからのメモリオーバーフローなどはそのままJavaのエラー画面が出ることになります。
error_handler コマンド
Javaのエラー画面をそのまま表示することはセキュリティ的にも避けたほうが良く、その対処は、TomcatのErrorPage設定で行います。
※詳細のサーバー情報をユーザーに見せないように防止することが望ましい
Tomcat\webapps\<アプリケーションディレクトリ>\WEB-INF\web.xml
記述場所は<web-app> ~ </web-app>の間
<error-page>
<error-code>505</error-code>
<location>/error_page.html</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error_page.html</location>
</error-page>
この設定で、例外エラーが発生した場合にはerror_page.htmlに遷移します。
遷移先をGeneXusの画面にするのはやめておいた方が良いです。
DB接続でエラーになったのに、GeneXusの画面を実行したら、さらにDB接続でエラーになってしまいますので。
GeneXusが予期しない例外エラーについてはJavaのエラーがそのまま表示されます。
※予期しない例外とは、プログラムエラーやミドルウェアのエラーなどです。
GeneXusの画面やプロシージャでError_Handlerが設定してあれば、「DBからの例外エラー」はある程度対処することが出来ますが、プログラムミスによる例外エラーや、TomcatからのメモリオーバーフローなどはそのままJavaのエラー画面が出ることになります。
error_handler コマンド
Javaのエラー画面をそのまま表示することはセキュリティ的にも避けたほうが良く、その対処は、TomcatのErrorPage設定で行います。
※詳細のサーバー情報をユーザーに見せないように防止することが望ましい
Tomcat\webapps\<アプリケーションディレクトリ>\WEB-INF\web.xml
記述場所は<web-app> ~ </web-app>の間
<error-page>
<error-code>505</error-code>
<location>/error_page.html</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error_page.html</location>
</error-page>
この設定で、例外エラーが発生した場合にはerror_page.htmlに遷移します。
遷移先をGeneXusの画面にするのはやめておいた方が良いです。
DB接続でエラーになったのに、GeneXusの画面を実行したら、さらにDB接続でエラーになってしまいますので。
※追記
返信削除例では505とExceptionだけの記載になってますが、
401、403、404、500は入れておいた方が良さそうです。
こちらの内容も有効ですね。
https://t246osslab.wordpress.com/2018/08/14/%E6%84%8F%E5%A4%96%E3%81%A8%E7%9F%A5%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%80%81tomcat%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E3%83%90%E3%83%BC/