Skip to main content
summaryrefslogtreecommitdiffstats
blob: b0dfb41d982aded23ad02320808811cbbe179c45 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Rewrite Handler</title><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><meta name="keywords" content="jetty, servlet, servlet-api, cometd, http, websocket, eclipse, maven, java, server, software"><link rel="home" href="index.html" title="Jetty"><link rel="up" href="advanced-extras.html" title="Chapter&nbsp;18.&nbsp;Provided Servlets, Filters, and Handlers"><link rel="prev" href="error-handler.html" title="Error Handler"><link rel="next" href="runner.html" title="Chapter&nbsp;19.&nbsp;Jetty Runner"><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"><link rel="stylesheet" href="css/highlighter/foundation.css"><script src="js/highlight.pack.js"></script><script>
      hljs.initHighlightingOnLoad();
    </script><link type="text/css" rel="stylesheet" href="css/font-awesome/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.4.5-SNAPSHOT</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">Rewrite Handler</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="error-handler.html"><i class="fa fa-chevron-left" aria-hidden="true"></i> Previous</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;18.&nbsp;Provided Servlets, Filters, and Handlers<br><a accesskey="p" href="index.html"><i class="fa fa-home" aria-hidden="true"></i> Home</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="runner.html">Next <i class="fa fa-chevron-right" aria-hidden="true"></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/">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 for sponsored feature development
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="rewrite-handler"></a>Rewrite Handler</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="rewrite-handler.html#rewrite-handler-metadata">Info</a></span></dt><dt><span class="section"><a href="rewrite-handler.html#_usage">Usage</a></span></dt><dt><span class="section"><a href="rewrite-handler.html#rewrite-rules">Rules</a></span></dt></dl></div><p>The <code class="literal">RewriteHandler</code> matches a request against a set of rules, and modifies the request accordingly for any rules that match.
The most common use is to rewrite request URIs, but it is capable of much more: rules can also be configured to redirect the response, set a cookie or response code on the response, modify the header, etc.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="rewrite-handler-metadata"></a>Info</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">Classname: org.eclipse.jetty.rewrite.handler.RewriteHandler</li><li class="listitem">Maven artifact: org.eclipse.jetty:jetty-rewrite</li><li class="listitem">Javadoc: <a class="link" href="http://www.eclipse.org/jetty/javadoc/9.4.5-SNAPSHOT/org/eclipse/jetty/rewrite/handler/RewriteHandler.html" target="_top">http://www.eclipse.org/jetty/javadoc/9.4.5-SNAPSHOT/org/eclipse/jetty/rewrite/handler/RewriteHandler.html</a></li><li class="listitem">Xref: <a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/RewriteHandler.html" target="_top">http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/RewriteHandler.html</a></li></ul></div><p>The standard Jetty distribution bundle contains the <code class="literal">jetty-rewrite</code> <a class="link" href="startup-modules.html" title="Managing Startup Modules">module</a>, so all you need to do is to enable it using one of the <a class="link" href="start-jar.html" title="Using start.jar">module commands</a>, eg:</p><div class="screenexample"><pre class="screen">$ java -jar start.jar --add-to-start=rewrite</pre></div><div class="blockquote"><blockquote class="blockquote"><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="fa fa-asterisk" aria-hidden="true"></i> Note</h3><p>If you are running the standard Jetty distribution with the sample test webapp, there will be a demo of the rewrite module at <a class="link" href="http://localhost:8080/test/rewrite/" target="_top">http://localhost:8080/test/rewrite/</a></p></div></blockquote></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_usage"></a>Usage</h3></div></div></div><p>The rewrite module enables the following Jetty xml config file on the execution path:</p><pre 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"><code>&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd"&gt;

&lt;Configure id="Server" class="org.eclipse.jetty.server.Server"&gt;

  &lt;!-- =========================================================== --&gt;
  &lt;!-- configure rewrite handler                                   --&gt;
  &lt;!-- =========================================================== --&gt;
  &lt;Call name="insertHandler"&gt;
    &lt;Arg&gt;
      &lt;New class="org.eclipse.jetty.rewrite.handler.RewriteHandler"&gt;
	&lt;Set name="rewriteRequestURI"&gt;&lt;Property name="jetty.rewrite.rewriteRequestURI" deprecated="rewrite.rewriteRequestURI" default="true"/&gt;&lt;/Set&gt;
	&lt;Set name="rewritePathInfo"&gt;&lt;Property name="jetty.rewrite.rewritePathInfo" deprecated="rewrite.rewritePathInfo" default="false"/&gt;&lt;/Set&gt;
	&lt;Set name="originalPathAttribute"&gt;&lt;Property name="jetty.rewrite.originalPathAttribute" deprecated="rewrite.originalPathAttribute" default="requestedPath"/&gt;&lt;/Set&gt;

	&lt;!-- Set DispatcherTypes  --&gt;
	&lt;Set name="dispatcherTypes"&gt;
	  &lt;Array type="javax.servlet.DispatcherType"&gt;
	    &lt;Item&gt;&lt;Call class="javax.servlet.DispatcherType" name="valueOf"&gt;&lt;Arg&gt;REQUEST&lt;/Arg&gt;&lt;/Call&gt;&lt;/Item&gt;
	    &lt;Item&gt;&lt;Call class="javax.servlet.DispatcherType" name="valueOf"&gt;&lt;Arg&gt;ASYNC&lt;/Arg&gt;&lt;/Call&gt;&lt;/Item&gt;
	  &lt;/Array&gt;
	&lt;/Set&gt;

        &lt;Get id="Rewrite" name="ruleContainer"/&gt;

	&lt;!-- see rewrite-compactpath.xml for example how to add a rule --&gt;

      &lt;/New&gt;
    &lt;/Arg&gt;
  &lt;/Call&gt;
&lt;/Configure&gt;</code></pre><p>As the commented out code shows, you configure the <code class="literal">RewriteHandler</code> by adding various rules.</p><p>There is an example of <a class="link" href="rewrite-handler.html#rewrite-rules" title="Rules">rules</a> configuration in the standard distribution in the <code class="literal">demo-base/etc/demo-rewrite-rules.xml</code> file:</p><pre 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"><code>&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd"&gt;

&lt;!-- =============================================================== --&gt;
&lt;!-- Configure the demos                                             --&gt;
&lt;!-- =============================================================== --&gt;
&lt;Configure id="Server" class="org.eclipse.jetty.server.Server"&gt;

  &lt;!-- ============================================================= --&gt;
  &lt;!-- Add rewrite rules                                             --&gt;
  &lt;!-- ============================================================= --&gt;
  &lt;Ref refid="Rewrite"&gt;
      &lt;!-- Add rule to protect against IE ssl bug --&gt;
      &lt;Call name="addRule"&gt;
        &lt;Arg&gt;
          &lt;New class="org.eclipse.jetty.rewrite.handler.MsieSslRule"/&gt;
        &lt;/Arg&gt;
      &lt;/Call&gt;

      &lt;!-- protect favicon handling --&gt;
      &lt;Call name="addRule"&gt;
        &lt;Arg&gt;
          &lt;New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule"&gt;
            &lt;Set name="pattern"&gt;/favicon.ico&lt;/Set&gt;
            &lt;Set name="name"&gt;Cache-Control&lt;/Set&gt;
            &lt;Set name="value"&gt;Max-Age=3600,public&lt;/Set&gt;
            &lt;Set name="terminating"&gt;true&lt;/Set&gt;
          &lt;/New&gt;
        &lt;/Arg&gt;
      &lt;/Call&gt;

      &lt;!-- redirect from the welcome page to a specific page --&gt;
      &lt;Call name="addRule"&gt;
        &lt;Arg&gt;
          &lt;New class="org.eclipse.jetty.rewrite.handler.RewritePatternRule"&gt;
            &lt;Set name="pattern"&gt;/test/rewrite/&lt;/Set&gt;
            &lt;Set name="replacement"&gt;/test/rewrite/info.html&lt;/Set&gt;
          &lt;/New&gt;
        &lt;/Arg&gt;
      &lt;/Call&gt;

      &lt;!-- replace the entire request URI --&gt;
      &lt;Call name="addRule"&gt;
        &lt;Arg&gt;
          &lt;New class="org.eclipse.jetty.rewrite.handler.RewritePatternRule"&gt;
            &lt;Set name="pattern"&gt;/test/some/old/context&lt;/Set&gt;
            &lt;Set name="replacement"&gt;/test/rewritten/newcontext&lt;/Set&gt;
          &lt;/New&gt;
        &lt;/Arg&gt;
      &lt;/Call&gt;

      &lt;!-- replace the beginning of the request URI --&gt;
      &lt;Call name="addRule"&gt;
        &lt;Arg&gt;
          &lt;New class="org.eclipse.jetty.rewrite.handler.RewritePatternRule"&gt;
            &lt;Set name="pattern"&gt;/test/rewrite/for/*&lt;/Set&gt;
            &lt;Set name="replacement"&gt;/test/rewritten/&lt;/Set&gt;
          &lt;/New&gt;
        &lt;/Arg&gt;
      &lt;/Call&gt;

      &lt;!-- reverse the order of the path sections --&gt;
      &lt;Call name="addRule"&gt;
        &lt;Arg&gt;
          &lt;New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule"&gt;
            &lt;Set name="regex"&gt;(.*?)/reverse/([^/]*)/(.*)&lt;/Set&gt;
            &lt;Set name="replacement"&gt;$1/reverse/$3/$2&lt;/Set&gt;
          &lt;/New&gt;
        &lt;/Arg&gt;
      &lt;/Call&gt;

      &lt;!-- add a cookie to each path visited --&gt;
      &lt;Call name="addRule"&gt;
        &lt;Arg&gt;
          &lt;New class="org.eclipse.jetty.rewrite.handler.CookiePatternRule"&gt;
            &lt;Set name="pattern"&gt;/*&lt;/Set&gt;
            &lt;Set name="name"&gt;visited&lt;/Set&gt;
            &lt;Set name="value"&gt;yes&lt;/Set&gt;
          &lt;/New&gt;
        &lt;/Arg&gt;
      &lt;/Call&gt;

      &lt;!--  actual redirect, instead of internal rewrite --&gt;
      &lt;Call name="addRule"&gt;
        &lt;Arg&gt;
          &lt;New class="org.eclipse.jetty.rewrite.handler.RedirectPatternRule"&gt;
            &lt;Set name="pattern"&gt;/test/redirect/*&lt;/Set&gt;
            &lt;Set name="location"&gt;/test/redirected&lt;/Set&gt;
          &lt;/New&gt;
        &lt;/Arg&gt;
      &lt;/Call&gt;

      &lt;!-- add a response rule --&gt;
      &lt;Call name="addRule"&gt;
        &lt;Arg&gt;
           &lt;New class="org.eclipse.jetty.rewrite.handler.ResponsePatternRule"&gt;
             &lt;Set name="pattern"&gt;/400Error&lt;/Set&gt;
             &lt;Set name="code"&gt;400&lt;/Set&gt;
             &lt;Set name="reason"&gt;ResponsePatternRule Demo&lt;/Set&gt;
          &lt;/New&gt;
        &lt;/Arg&gt;
      &lt;/Call&gt;
  &lt;/Ref&gt;
&lt;/Configure&gt;</code></pre><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_embedded_example_2"></a>Embedded Example</h4></div></div></div><p>This is an example for embedded Jetty, which does something similar to the configuration file example above:</p><pre 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"><code>  Server server = new Server();

  RewriteHandler rewrite = new RewriteHandler();
  rewrite.setRewriteRequestURI(true);
  rewrite.setRewritePathInfo(false);
  rewrite.originalPathAttribute("requestedPath");

  RedirectPatternRule redirect = new RedirectPatternRule();
  redirect.setPattern("/redirect/*");
  redirect.setReplacement("/redirected");
  rewrite.addRule(redirect);

  RewritePatternRule oldToNew = new RewritePatternRule();
  oldToNew.setPattern("/some/old/context");
  oldToNew.setReplacement("/some/new/context");
  rewrite.addRule(oldToNew);

  RewriteRegexRule reverse = new RewriteRegexRule();
  reverse.setRegex("/reverse/([^/]*)/(.*)");
  reverse.setReplacement("/reverse/$2/$1");
  rewrite.addRule(reverse);

  server.setHandler(rewrite);</code></pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="rewrite-rules"></a>Rules</h3></div></div></div><p>There are several types of rules that are written extending useful base rule classes.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_patternrule"></a>PatternRule</h4></div></div></div><p>Matches against the request URI using the servlet pattern syntax.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/CookiePatternRule.html" target="_top">CookiePatternRule</a></span></dt><dd>Adds a cookie to the response.</dd><dt><span class="term"><a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/HeaderPatternRule.html" target="_top">HeaderPatternRule</a></span></dt><dd>Adds/modifies a header in the response.</dd><dt><span class="term"><a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/RedirectPatternRule.html" target="_top">RedirectPatternRule</a></span></dt><dd>Redirects the response.</dd><dt><span class="term"><a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/ResponsePatternRule.html" target="_top">ResponsePatternRule</a></span></dt><dd>Sends the response code (status or error).</dd><dt><span class="term"><a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/RewritePatternRule.html" target="_top">RewritePatternRule</a></span></dt><dd>Rewrite the URI by replacing the matched request path with a fixed string.</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_regexrule"></a>RegexRule</h4></div></div></div><p>Matches against the request URI using regular expressions.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/RedirectRegexRule.html" target="_top">RedirectRegexRule</a></span></dt><dd>Redirect the response.</dd><dt><span class="term"><a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/RewriteRegexRule.html" target="_top">RewriteRegexRule</a></span></dt><dd>Rewrite the URI by matching with a regular expression.
(The replacement string may use <code class="literal">Template:$n</code> to replace the nth capture group.)</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_headerrule"></a>HeaderRule</h4></div></div></div><p>Match against request headers. Match either on a header name and specific value, or on the presence of a header (with any value).</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/ForwardedSchemeHeaderRule.html" target="_top">ForwardedSchemaHeaderRule</a></span></dt><dd>Set the scheme on the request (defaulting to HTTPS).</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_others"></a>Others</h4></div></div></div><p>Extra rules that defy standard classification.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/MsieSslRule.html" target="_top">MsieSslRule</a></span></dt><dd>Disables the keep alive for SSL from IE5 or IE6.</dd><dt><span class="term"><a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/LegacyRule.html" target="_top">LegacyRule</a></span></dt><dd>Implements the legacy API of RewriteHandler</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_rulecontainer"></a>RuleContainer</h4></div></div></div><p>Groups rules together.
The contained rules will only be processed if the conditions for the <code class="literal">RuleContainer</code> evaluate to true.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a class="link" href="http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/rewrite/handler/VirtualHostRuleContainer.html" target="_top">VirtualHostRuleContainer</a></span></dt><dd>Groups rules that apply only to a specific virtual host or a set of virtual hosts</dd></dl></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="error-handler.html"><i class="fa fa-chevron-left" aria-hidden="true"></i> Previous</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="advanced-extras.html"><i class="fa fa-chevron-up" aria-hidden="true"></i> Top</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="runner.html">Next <i class="fa fa-chevron-right" aria-hidden="true"></i></a></td></tr><tr><td width="40%" align="left" valign="top">Error Handler&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html"><i class="fa fa-home" aria-hidden="true"></i> Home</a></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;19.&nbsp;Jetty Runner</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/eclipse/jetty.project">Contribute to this documentation at
                <span class="website"><i class="fa fa-github" aria-hidden="true"></i> Github!</span></a></span><span style="float: right"><i>(Generated: 2017-04-20)</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>

Back to the top