Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Jetty/Howto/Custom Error Pages"

< Jetty‎ | Howto
Line 26: Line 26:
 
Context files are normally located in <jetty.home>/contexts/ (see [[Jetty/Feature/ContextDeployer]] for more details). Context files can be used to configure the default error handler provided for a context with more flexibility than is available with web.xml, specifically with the support of error code ranges:
 
Context files are normally located in <jetty.home>/contexts/ (see [[Jetty/Feature/ContextDeployer]] for more details). Context files can be used to configure the default error handler provided for a context with more flexibility than is available with web.xml, specifically with the support of error code ranges:
  
<?xml version="1.0"  encoding="ISO-8859-1"?>
+
<source lang=xml>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
+
<?xml version="1.0"  encoding="ISO-8859-1"?>
 +
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
  
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
+
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <Set name="contextPath">/test</Set>
+
  <Set name="contextPath">/test</Set>
  <Set name="war">
+
  <Set name="war">
    <SystemProperty name="jetty.home" default="."/>/webapps/test
+
    <SystemProperty name="jetty.home" default="."/>/webapps/test
  </Set>
+
  </Set>
  
  <!-- by Code -->
+
  <!-- by Code -->
  <Get name="errorHandler">
+
  <Get name="errorHandler">
    <Call name="addErrorPage">
+
    <Call name="addErrorPage">
      <Arg type="int">404</Arg>
+
      <Arg type="int">404</Arg>
      <Arg type="String">/jspsnoop/ERROR/404</Arg>
+
      <Arg type="String">/jspsnoop/ERROR/404</Arg>
    </Call>
+
    </Call>
  </Get>
+
  </Get>
  
  <!-- by Exception -->
+
  <!-- by Exception -->
  <Get name="errorHandler">
+
  <Get name="errorHandler">
    <Call name="addErrorPage">
+
    <Call name="addErrorPage">
      <Arg type="java.lang.Class">java.io.IOException</Arg>
+
      <Arg type="java.lang.Class">java.io.IOException</Arg>
      <Arg type="String">/jspsnoop/IOException</Arg>
+
      <Arg type="String">/jspsnoop/IOException</Arg>
    </Call>
+
    </Call>
  </Get>
+
  </Get>
  
  <!-- by Code Range -->
+
  <!-- by Code Range -->
  <Get name="errorHandler">
+
  <Get name="errorHandler">
    <Call name="addErrorPage">
+
    <Call name="addErrorPage">
      <Arg type="int">500</Arg>
+
      <Arg type="int">500</Arg>
      <Arg type="int">599</Arg>
+
      <Arg type="int">599</Arg>
      <Arg type="String">/dump/errorCodeRangeMapping</Arg>
+
      <Arg type="String">/dump/errorCodeRangeMapping</Arg>
    </Call>
+
    </Call>
  </Get>
+
  </Get>
</Configure>
+
</Configure>
 +
</source>
  
 
h2. 3. Custom error handle class.
 
h2. 3. Custom error handle class.
Line 103: Line 105:
 
| snippets = (optional) - for chunks of code that are too big to go into the Steps section, or screenshots
 
| snippets = (optional) - for chunks of code that are too big to go into the Steps section, or screenshots
 
| more = (optional) - links, additional references
 
| more = (optional) - links, additional references
| category = (optional) - categor(ies) to use for this page. If blank, will use the template name as a default category
+
| category = [[Jetty:Howto]]
Example: [[Category:Category 1]] [[Category:Category 2]]
+
 
}}
 
}}

Revision as of 09:08, 10 February 2010



Introduction

There are three ways to create custom error pages that are described below.

Define error pages in web.xml

The standard webapp configuration file located in <webapp>/WEB-INF/web.xml can be used to map errors to specific URLs with the <error-page> element. This element creates a mapping between the error-code or exception-type to the location of a resource in the web application.

  • error-code - integer value
  • exception-type - fully qualified class name of a Java Exception type
  • location - location of the resource in webapp relative to the root of the web application. Value should start with "/".

Error code example:

<error-page>
  <error-code>404</error-code>
  <location>/jspsnoop/ERROR/404</location>
</error-page>

Exception example:

<error-page>
  <exception-type>java.io.IOException</exception-type>
  <location>/jspsnoop/IOException</location>
</error-page>

Context file configuration

Context files are normally located in <jetty.home>/contexts/ (see Jetty/Feature/ContextDeployer for more details). Context files can be used to configure the default error handler provided for a context with more flexibility than is available with web.xml, specifically with the support of error code ranges:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
 
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <Set name="contextPath">/test</Set>
  <Set name="war">
    <SystemProperty name="jetty.home" default="."/>/webapps/test
  </Set>
 
  <!-- by Code -->
  <Get name="errorHandler">
    <Call name="addErrorPage">
      <Arg type="int">404</Arg>
      <Arg type="String">/jspsnoop/ERROR/404</Arg>
    </Call>
  </Get>
 
  <!-- by Exception -->
  <Get name="errorHandler">
    <Call name="addErrorPage">
      <Arg type="java.lang.Class">java.io.IOException</Arg>
      <Arg type="String">/jspsnoop/IOException</Arg>
    </Call>
  </Get>
 
  <!-- by Code Range -->
  <Get name="errorHandler">
    <Call name="addErrorPage">
      <Arg type="int">500</Arg>
      <Arg type="int">599</Arg>
      <Arg type="String">/dump/errorCodeRangeMapping</Arg>
    </Call>
  </Get>
</Configure>

h2. 3. Custom error handle class.

A context may be configured with a custom error handler class that extends [ErrorHandler



Tips, Hints, and Warnings

(optional)

Examples

(optional)

Snippets and Screenshots

(optional) - for chunks of code that are too big to go into the Steps section, or screenshots

Additional Resources

(optional) - links, additional references

Jetty:Howto

Back to the top