Author: buildbot
Date: Sat Feb 9 21:48:54 2013
New Revision: 850062
Log:
Staging update by buildbot for sling
Modified:
websites/staging/sling/trunk/content/ (props changed)
websites/staging/sling/trunk/content/documentation/the-sling-engine/errorhandling.html
Propchange: websites/staging/sling/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sat Feb 9 21:48:54 2013
@@ -1 +1 @@
-1436447
+1444445
Modified:
websites/staging/sling/trunk/content/documentation/the-sling-engine/errorhandling.html
==============================================================================
---
websites/staging/sling/trunk/content/documentation/the-sling-engine/errorhandling.html
(original)
+++
websites/staging/sling/trunk/content/documentation/the-sling-engine/errorhandling.html
Sat Feb 9 21:48:54 2013
@@ -89,6 +89,31 @@
<p>The Sling Engine includes support for handling uncaught
<code>Throwable</code> as well as rendering custom HTTP status code pages. This
is implemented by expecting a (single)
<code>org.apache.sling.engine.servlets.ErrorHandler</code> service to which
handling of uncaught <code>Throwable</code> and HTTP status responses are
delegated.</p>
<p>The Sling Servlet Resolver bundle implements this interface by providing an
elaborate mechanism to find the correct error handling script or servlet using
the same algorithms as are used to select the scripts or servlets to handle
regular requests.</p>
<p>This page provides more information on how error handler scripts are
selected and what is provided out of the box.</p>
+<div class="toc">
+<ul>
+<li><a href="#resetting-the-response">Resetting the Response</a></li>
+<li><a href="#http-status-codes">HTTP Status Codes</a></li>
+<li><a href="#uncaught-throwables">Uncaught Throwables</a></li>
+<li><a href="#default-handler">Default Handler</a></li>
+</ul>
+</div>
+<h2 id="resetting-the-response">Resetting the Response</h2>
+<p>Errorhandler scripts and servlets are script with the current response.
Before setting
+the status and writing to the response such handlers should do the
following:</p>
+<ul>
+<li>Check whether the response has already been committed</li>
+<li>If the response has been committed:<ul>
+<li>Reset the response</li>
+<li>Set the status code (use <code>HttpServletResponse.setStatus</code>)</li>
+<li>Set the response content type and character encoding (provided text data
is sent back)</li>
+</ul>
+</li>
+<li>If the response has already been committed:<ul>
+<li>Do not try to reset since this would cause an
<code>IllegalStateException</code>. Also the writer may not be available.</li>
+<li>The best that might be done in this case is just log a message at warning
or error level along with information about the failure.</li>
+</ul>
+</li>
+</ul>
<h2 id="http-status-codes">HTTP Status Codes</h2>
<p>The Sling engine implements the <code>HttpServletResponse.sendError</code>
methods by calling the <code>ErrorHandler.handleError(int status, String
message, SlingHttpServletRequest request, SlingHttpServletResponse
response)</code> method.</p>
<p>The Servlet Resolver bundle implementation looks up a script to handle the
status code as follows:</p>
@@ -116,7 +141,7 @@ To register a catch-all handler for any
<p>Starting with Sling Servlet Resolver version 2.0.10 the default error
handler servlet is looked up using the string <code>default</code> as the
request extension and the provided default servlet is registered as
<code><prefix>/sling/servlet/errorhandler/default.servlet</code> where
<prefix> is the last entry in the resource resolver search path,
<code>/libs</code> by default.</p>
<p>Thus to overwrite the default error handler servlet provide a servlet or
script for the <code>default</code> extension, for example
<code>/apps/sling/servlet/errorhandler/default.groovy</code>.</p>
<div class="timestamp" style="margin-top: 30px; font-size: 80%;
text-align: right;">
- Rev. 1341376 by fmeschbe on Tue, 22 May 2012 09:41:06 +0000
+ Rev. 1444445 by fmeschbe on Sat, 9 Feb 2013 21:48:40 +0000
</div>
<div class="trademarkFooter">
Apache Sling, Sling, Apache, the Apache feather logo, and the Apache
Sling project