現在表示中:

CQ には、HTTP エラーを処理するための標準エラーハンドラーが搭載されています。例えば、次のようなメッセージを表示できます。

chlimage_1

エラーコードに応答するシステム提供のスクリプトが(/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 以下にある)デフォルトのページをオーバーレイします。

注意:

詳しくは、オーバーレイの使用方法を参照してください。

  1. リポジトリ内で、デフォルトスクリプトをコピーします。

    • コピー元:/libs/sling/servlet/errorhandler/
    • コピー先:/apps/sling/servlet/errorhandler/

    コピー先のパスはデフォルトでは存在しないので、最初は作成する必要があります。

  2. /apps/sling/servlet/errorhandler に移動します。次のどちらかを実行します。

    • 既存のスクリプトを編集し、必要な情報を追加します。
    • 必要とするコード用に新しいスクリプトを作成し、編集します。
  3. 変更を保存し、テストします。

警告:

404.jsp および 403.jsp ハンドラーは、CQ5 認証に合わせて設計されています。特に、これらのエラーの発生時にシステムログインができるようになっています。

そのため、これらの 2 つのハンドラーを置き換える際には十分に気をつけて作業してください。

HTTP 500 エラーへの応答のカスタマイズ

HTTP 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 は、有効として設定されている場合も含めて常に無効になります。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー