
エラーコードに応答するシステム提供のスクリプトが(/libs/sling/servlet/errorhandler の下に)あります。標準の CQ インスタンスでは、デフォルトで次のスクリプトを使用できます。
- 403.jsp
- 404.jsp
注意:
CQ は Apache Sling に基づいています。Sling エラー処理について詳しくは、http://sling.apache.org/site/errorhandling.html を参照してください。
注意:
オーサーインスタンスでは、CQ WCM Debug Filter がデフォルトで有効です。このフィルターは常に応答コード 200 を返します。デフォルトのエラーハンドラーは、応答に対してフルスタックトレースを書き込むことで応答します。
パブリッシュインスタンスでは、CQ WCM Debug Filter は、有効として設定されている場合も含めて常に無効になります。
独自のスクリプトを開発して、エラーが発生したときにエラーハンドラーによって表示されるページをカスタマイズできます。カスタマイズしたページは /apps 以下に作成され、(/libs 以下にある)デフォルトのページをオーバーレイします。
注意:
詳しくは、オーバーレイの使用方法を参照してください。
警告:
404.jsp および 403.jsp ハンドラーは、CQ5 認証に合わせて設計されています。特に、これらのエラーの発生時にシステムログインができるようになっています。
そのため、これらの 2 つのハンドラーを置き換える際には十分に気をつけて作業してください。
HTTP 500 エラーはサーバー側の例外によって発生します。
- 500 内部サーバーエラー
サーバーで予期しない状況が発生したので、要求を処理できません。
要求の処理によって例外が発生した場合、Apache Sling フレームワーク(CQ の基盤)は次の処理を実行します。
- 例外をロギングします。
- 次を返します。
- HTTP 応答コード 500
- 例外スタックトレース
エラーハンドラーによって表示されるページをカスタマイズすることで、500.jsp スクリプトを作成できます。ただし、このスクリプトは HttpServletResponse.sendError(500) が明示的に(例外キャッチャーから)実行される場合に限り使用されます。
それ以外の場合は、応答コードは 500 に設定されますが、500.jsp スクリプトは実行されません。
500 エラーを処理するには、エラーハンドラースクリプトの名前を例外クラス(またはスーパークラス)と同じにする必要があります。これらの例外をすべて処理するために、スクリプト /apps/sling/servlet/errorhandler/Throwable.jsp または /apps/sling/servlet/errorhandler/Exception.jsp を作成できます。
警告:
オーサーインスタンスでは、CQ WCM Debug Filter がデフォルトで有効です。このフィルターは常に応答コード 200 を返します。デフォルトのエラーハンドラーは、応答に対してフルスタックトレースを書き込むことで応答します。
カスタムエラーハンドラーの場合、コード 500 を含む応答が必要です。そのため、CQ WCM Debug Filter を無効にする必要があります。そうすることで、応答コード 500 が返され、それによって正しい Sling エラーハンドラーがトリガーされます。
パブリッシュインスタンスでは、CQ WCM Debug Filter は、有効として設定されている場合も含めて常に無効になります。