blob: 8138bcdaa4f192089e5b290b63c896d1ee350042 [file] [log] [blame]
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Chapter&nbsp;8.&nbsp;Configuring JSP Support</title><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><meta name="keywords" content="jetty, servlet-api, cometd, http, spdy, eclipse, maven, java, software"><link rel="home" href="index.html" title="Jetty : The Definitive Reference"><link rel="up" href="configuring.html" title="Part&nbsp;II.&nbsp;Jetty Configuration Guide"><link rel="prev" href="overlay-deployer.html" title="Overlay WebApp Deployer"><link rel="next" href="configuring-logging.html" title="Chapter&nbsp;9.&nbsp;Jetty Logging"><link xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" rel="shortcut icon" href="images/favicon.ico"><script type="text/javascript" src="js/shCore.js"></script><script type="text/javascript" src="js/shBrushJava.js"></script><script type="text/javascript" src="js/shBrushXml.js"></script><script type="text/javascript" src="js/shBrushBash.js"></script><script type="text/javascript" src="js/shBrushJScript.js"></script><script type="text/javascript" src="js/shBrushSql.js"></script><script type="text/javascript" src="js/shBrushProperties.js"></script><script type="text/javascript" src="js/shBrushPlain.js"></script><link type="text/css" rel="stylesheet" href="css/shCore.css"><link type="text/css" rel="stylesheet" href="css/shThemeEclipse.css"><link type="text/css" rel="stylesheet" href="css/font-awesome.min.css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><tr><td style="width: 25%"><a href="http://www.eclipse.org/jetty"><img src="images/jetty-header-logo.png" alt="Jetty Logo"></a><br><span style="font-size: small">
Version: 9.0.6.v20130930</span></td><td style="width: 50%"><script type="text/javascript"> (function() {
var cx = '016459005284625897022:obd4lsai2ds';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script><gcse:search></gcse:search></td></tr></table><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter&nbsp;8.&nbsp;Configuring JSP Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="overlay-deployer.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><th width="60%" align="center">Part&nbsp;II.&nbsp;Jetty Configuration Guide<br><a accesskey="p" href="index.html"><i class="icon-home"></i> Home</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="configuring-logging.html">Next <i class="icon-chevron-right"></i></a></td></tr></table><hr></div><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="jetty-callout"><h5 class="callout"><a href="http://www.webtide.com/support.jsp">Contact the core Jetty developers at
<span class="website">www.webtide.com</span></a></h5><p>
private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ...
scalability guidance for your apps and Ajax/Comet projects ... development services from 1 day to full product delivery
</p></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="configuring-jsp"></a>Chapter&nbsp;8.&nbsp;Configuring JSP Support</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="configuring-jsp.html#jsp-support">Configuring JSP</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="jsp-support"></a>Configuring JSP</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="configuring-jsp.html#compiling-jsps">Compiling JSPs</a></span></dt><dt><span class="section"><a href="configuring-jsp.html#configuring-jsp-for-jetty">Configuring JSP for Jetty</a></span></dt><dt><span class="section"><a href="configuring-jsp.html#modifying-configuration">Modifying the Configuration</a></span></dt><dt><span class="section"><a href="configuring-jsp.html#using-jstl-taglibs-for-jetty7-jetty8">Using JSTL Taglibs</a></span></dt><dt><span class="section"><a href="configuring-jsp.html#using-jsf-taglibs">Using JSF Taglibs</a></span></dt></dl></div><p>This document provides information about configuring JSP.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="compiling-jsps"></a>Compiling JSPs</h3></div></div></div><p>To compile <code class="filename">.jsp</code> files into Java classes, you
need a Java compiler. You can acquire a Java compiler from the JVM if you
are using a full JDK, or from a third party Jar.</p><p>By default, the jsp engine used by Jetty will try to use the
compiler that is part of the JDK. <span class="bold"><strong>NOTE:</strong></span>
when using the JDK compiler, your class files will
<span class="emphasis"><em>not</em></span> be saved to disk unless you use the
<code class="code">saveBytecode</code> init-param as described below.</p><p>If you do not have a full JDK, then you can configure the jsp engine
to use the Eclipse Java Compiler that Jetty ships in the distro in
$JETTY_HOME/lib/jsp/org.eclipse.jdt.core-3.7.1.jar. You will need to
define a SystemProperty that prevents the jsp engine from defaulting to
the in-JVM compiler.</p><p>Here's the property definition to add to
$JETTY_HOME/start.ini:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: plain;toolbar: false">
<![CDATA[
-Dorg.apache.jasper.compiler.disablejsr199=true
]]>
</script></div><p>Alternatively, you can define this SystemProperty in a
$JETTY_HOME/etc/jetty.xml file:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[
<Call class="java.lang.System" name="setProperty">
<Arg>org.apache.jasper.compiler.disablejsr199</Arg>
<Arg>true</Arg>
</Call>
]]>
</script></div><p>If you are using the <a class="link" href="jetty-maven-plugin.html" title="Configuring the Jetty Maven Plugin">Maven Jetty
Plugin</a>, then you have a number of options:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>define the SystemProperty inside the pom.xml of your webapp
using either the <a class="link" href="http://mojo.codehaus.org/properties-maven-plugin/" target="_top">Properties
Maven Plugin</a> or the <a class="link" href="jetty-maven-plugin.html" title="Configuring the Jetty Maven Plugin">Maven
Jetty Plugin's</a> own <a class="link" href="jetty-maven-plugin.html#setting-system-properties" title="Setting System Properties">system properties
configuration</a></p></li><li class="listitem"><p>add a jetty.xml config file and define the SystemProperty in
there</p></li><li class="listitem"><p>add the SystemProperty definition to maven's <a class="link" href="http://maven.apache.org/download.cgi" target="_top">MAVEN_OPTS</a>
environment variable</p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="configuring-jsp-for-jetty"></a>Configuring JSP for Jetty</h3></div></div></div><p>The JSP engine has many configuration parameters. Some parameters
affect only precompilation, and some affect runtime recompilation
checking. Parameters also differ between the various versions of the JSP
engine. This page lists the configuration parameters, their meanings and
their default settings. All parameters are set on the
<code class="code">org.apache.jasper.JspServlet</code> instance defined in the <a class="link" href="webdefault-xml.html" title="webdefault.xml">webdefault.xml</a> file.</p><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title"><i class="icon-asterisk"></i> Note</h3><p>Be careful: for all of the parameters below, if the value you set
doesn't take effect, try using all lower case instead of camel case, or
capitalizing only some of the words in the name, as JSP is inconsistent
in its parameter naming strategy.</p></div><div class="table"><a name="d0e5663"></a><p class="title"><b>Table&nbsp;8.1.&nbsp;Understanding JSP Parameters</b></p><div class="table-contents"><table summary="Understanding JSP Parameters" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th align="left">init param</th><th align="left">Description</th><th align="left">Default</th><th align="left">webdefault.xml</th></tr></thead><tbody><tr><td>development</td><td><code class="code">development=true</code>, recompilation checks occur
on each request. See also <code class="code">
modificationTestInterval</code>.</td><td>TRUE</td><td>&#8211;</td></tr><tr><td>fork</td><td>Should Ant fork its java compiles of JSP pages?</td><td>TRUE</td><td>FALSE</td></tr><tr><td>keepgenerated</td><td>Do you want to keep the generated Java files
around?</td><td>FALSE</td><td>&#8211;</td></tr><tr><td>saveBytecode</td><td>If class files are generated as byte arrays, should they be
saved to disk at the end of compilations?</td><td>FALSE</td><td>&#8211;</td></tr><tr><td>trimSpaces</td><td>Should white spaces between directives or actions be
trimmed?</td><td>FALSE</td><td>&#8211;</td></tr><tr><td>enablePooling</td><td>Determines whether tag handler pooling is enabled.</td><td>TRUE</td><td>&#8211;</td></tr><tr><td>mappedFile</td><td>Support for mapped Files. Generates a servlet that has a
print statement per line of the JSP file./</td><td>TRUE</td><td>&#8211;</td></tr><tr><td>sendErrorToClient</td><td>If false, stack traces, etc., are sent to std error instead
of the client's browser.</td><td>FALSE</td><td>&#8211;</td></tr><tr><td>classdebuginfo</td><td>Include debugging info in class file.</td><td>TRUE</td><td>&#8211;</td></tr><tr><td>checkInterval</td><td>Interval in seconds between background recompile checks.
Only relevant if <code class="code"> development=false</code>.</td><td>0</td><td>&#8211;</td></tr><tr><td>suppressSmap</td><td>Generation of SMAP info for JSR45 debugging.</td><td>FALSE</td><td>&#8211;</td></tr><tr><td>dumpSmap</td><td>Dump SMAP JSR45 info to a file.</td><td>FALSE</td><td>&#8211;</td></tr><tr><td>genStrAsCharArray</td><td>Option for generating Strings.</td><td>FALSE</td><td>&#8211;</td></tr><tr><td>genStrAsByteArray</td><td>Option for generating Strings.</td><td>TRUE</td><td>&#8211;</td></tr><tr><td>defaultBufferNone</td><td>&nbsp;</td><td>FALSE</td><td>&#8211;</td></tr><tr><td>errorOnUseBeanInvalidClassAttribute</td><td>&nbsp;</td><td>FALSE</td><td>&#8211;</td></tr><tr><td>scratchDir</td><td>Directory where servlets are generated. Jetty sets this
value according to the [/display/JETTY/Temporary+Directories work
dir] settings for the webapp.</td><td>&#8211;</td><td>&#8211;</td></tr><tr><td>compiler</td><td>Determined at runtime. For Jetty this is the Eclipse jdt
compiler.</td><td>&#8211;</td><td>&#8211;</td></tr><tr><td>compilerTargetVM</td><td>Target vm to compile for.</td><td>1.5</td><td>&#8211;</td></tr><tr><td>compilerSourceVM</td><td>Sets source compliance level for the jdt compiler.</td><td>1.5</td><td>&#8211;</td></tr><tr><td>javaEncoding</td><td>Pass through the encoding to use for the
compilation.</td><td>UTF8</td><td>&#8211;</td></tr><tr><td>modificationTestInterval</td><td>If <code class="code">development=true</code>, interval between
recompilation checks, triggered by a request.</td><td>0</td><td>&#8211;</td></tr><tr><td>xpoweredBy</td><td>Generate an X-Powered-By response header.</td><td>FALSE</td><td>FALSE</td></tr><tr><td>usePrecompiled/use-precompiled</td><td>&nbsp;</td><td>FALSE</td><td>&#8211;</td></tr><tr><td>validating/enableTldValidation</td><td>Whether or not to validate tag files against the
schema.</td><td>FALSE</td><td>&#8211;</td></tr><tr><td>reload-interval</td><td>If <code class="code">reload-interval=0</code>, then no runtime checking
of JSP, otherwise sets the checking interval for both
<code class="code">development=true</code> and
<code class="code">development=false</code>.</td><td>&#8211;</td><td>&#8211;</td></tr><tr><td>initial-capacity/initialCapacity</td><td>The initial capacity of the hash maps mapping the name of
the JSP to class and JSP file.</td><td>&#8211;</td><td>&#8211;</td></tr></tbody></table></div></div><br class="table-break"><p>Much confusion generally ensues about the <code class="code">development</code>,
<code class="code">checkInterval</code> and <code class="code"> modificationTestInterval</code>
parameters and JSP runtime recompilation. Here is a factoring out of the
various options:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Check the JSP files for possible recompilation on every request:
</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[
<init-param>
<param-name>development></param-name>
<param-value>true></param-value>
</init-param>
]]>
</script></div></li><li class="listitem"><p>Only check approximately every N seconds, where a request will
trigger the time-lapse calculation. This example checks every 60
seconds: </p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[
<init-param>
<param-name>development></param-name>
<param-value>true></param-value>
</init-param>
<init-param>
<param-name>modificationTestInterval></param-name>
<param-value>60></param-value>
</init-param>
]]>
</script></div></li><li class="listitem"><p>Do no checking whatsoever, but still compile the JSP on the very
first hit. (Note: this ''reload-interval'' parameter is shorthand for
a ''development=false'' and ''checkInterval=0'' combination.):
</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[
<init-param>
<param-name>reload-interval></param-name>
<param-value>-1></param-value>
</init-param>
]]>
</script></div></li><li class="listitem"><p>Don't do any request-time checking, but instead start a
background thread to do checks every N seconds. This example checks
every 60 seconds: </p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[
<init-param>
<param-name>development></param-name>
<param-value>false></param-value>
</init-param>
<init-param>
<param-name>checkInterval></param-name>
<param-value>60></param-value>
</init-param>
]]>
</script></div></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="modifying-configuration"></a>Modifying the Configuration</h3></div></div></div><p>There are several options for modifying the JspServlet
configuration.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="overriding-webdefault.xml"></a>Overriding <code class="filename">webdefault.xml</code></h4></div></div></div><p>You can make a copy of the <a class="link" href="webdefault-xml.html" title="webdefault.xml">$JETTY_HOME/etc/webdefault.xml</a> that
ships with Jetty, apply your changes, and use it instead of the shipped
version. The example below shows how to do this when using the Jetty
Maven plugin.</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<webApp>
<defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor>
</webApp>
</plugin>
]]>
</script></div><p>If you're using the Jetty distro, and you want to change the JSP
settings for just one or a few of your webapps, copy the
<code class="filename">$<a class="link" href="webdefault-xml.html" title="webdefault.xml">JETTY_HOME/etc/webdefault.xml</a></code>
file somewhere, modify it, and then use a <a class="link" href="quickstart-config-what.html#intro-jetty-configuration-contexts" title="Configuring Contexts">context xml</a> file to
set this file as the defaultsDescriptor for your webapp. Here's a
snippet:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[
<Configure class=>"org.eclipse.jetty.webapp.WebAppContext">
<Set name=>"contextPath">/foo</Set>
<Set name=>"war"><SystemProperty name=>"jetty.home" >default=>"."/>/webapps/foobar.war</Set>
<Set name=>"defaultsDescriptor">/home/smith/dev/webdefault.xml</Set>
</Configure>
]]>
</script></div><p>If you want to change the JSP settings for all webapps, edit
the<code class="filename"> $JETTY_HOME/etc/webdefaults.xml</code> file directly
instead.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="configuring-jsp-servlet-in-web.xml"></a>Configuring the JSP Servlet in
<code class="filename">web.xml</code></h4></div></div></div><p>Another option is to add an entry for the JSPServlet to the
<code class="filename">WEB-INF/web.xml</code> file of your webapp. You can use
the entry in <a class="link" href="webdefault-xml.html" title="webdefault.xml">$JETTY_HOME/etc/webdefault.xml</a> as a
starting point.</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[
<servlet id=>"jsp">
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>logVerbosityLevel</param-name>
<param-value>DEBUG</param-value>
</init-param>
<init-param>
<param-name>fork</param-name>
<param-value>>false</param-value>
</init-param>
<init-param>
<param-name>keepgenerated</param-name>
<param-value>>true</param-value>
</init-param>
...
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspf</url-pattern>
<url-pattern>*.jspx</url-pattern>
<url-pattern>*.xsp</url-pattern>
<url-pattern>*.JSP</url-pattern>
<url-pattern>*.JSPF</url-pattern>
<url-pattern>*.JSPX</url-pattern>
<url-pattern>*.XSP</url-pattern>
</servlet-mapping>
<servlet id=>"my-servlet">
<servlet-name>myServlet</servlet-name>
<servlet-class>com.acme.servlet.MyServlet</servlet-class>
...
]]>
</script></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="using-jstl-taglibs-for-jetty7-jetty8"></a>Using JSTL Taglibs</h3></div></div></div><p>The JavaServer Pages Standlard Tag Library (JSTL) is part of the
jetty distribution (in <code class="code">$JETTY_HOME/lib/jsp</code>) and is
automatically on the classpath.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="using-jsf-taglibs"></a>Using JSF Taglibs</h3></div></div></div><p>The following sections provide information about using JSF taglibs
with Jetty Standalone and the Jetty Maven Plugin.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="using-jsf-taglibs-with-jetty-standalone"></a>Using JSF Taglibs with Jetty Distribution</h4></div></div></div><p>If you want to use JSF with your webapp, you need to copy the jsf
implementation Jar (whichever Jar contains the
<code class="filename">META-INF/*.tld</code> files from your chosen JSF
implementation) into <code class="filename"> $JETTY_HOME/lib/jsp</code>. This is
because the version of the jsp engine from Glassfish that we are using
<span class="emphasis"><em>requires</em></span> that the JSF tags are on the container's
classpath, and <span class="emphasis"><em>not</em></span> on the webapp's
classpath.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="using-jsf-taglibs-with-jetty-maven-plugin"></a>Using JSF Taglibs with Jetty Maven Plugin</h4></div></div></div><p>The version of the JSP engine from Glassfish that we are using
requires that the JSF tags be on the container classpath, and not on the
webapp classpath, so you need to make your JSF jars dependencies of the
plugin and <span class="emphasis"><em>not</em></span> the webapp itself. For
example:</p><div class="informalexample"><script type="syntaxhighlighter" class="brush: xml;toolbar: false">
<![CDATA[
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<webApp>
<contextPath>/jetty-documentation</contextPath>
</webApp>
<scanIntervalSeconds>5</scanIntervalSeconds>
</configuration>
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.0.8</version>
</dependency>
</dependencies>
</plugin>
]]>
</script></div></div></div></div></div><script type="text/javascript">
SyntaxHighlighter.all()
</script><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="overlay-deployer.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="configuring.html"><i class="icon-chevron-up"></i> Top</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="configuring-logging.html">Next <i class="icon-chevron-right"></i></a></td></tr><tr><td width="40%" align="left" valign="top">Overlay WebApp Deployer&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html"><i class="icon-home"></i> Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;9.&nbsp;Jetty Logging</td></tr></table></div><p xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><div class="jetty-callout">
See an error or something missing?
<span class="callout"><a href="http://github.com/jetty-project/jetty-documentation">Contribute to this documentation at
<span class="website"><i class="icon-github"></i> Github!</span></a></span><span style="float: right"><i>(Generated: 2013-10-30T13:20:21-05:00)</i></span></div></p><script xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1149868-7']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script></body></html>