Update for 10.0.7 and 11.0.7 releases.
diff --git a/_jettyVersions.php b/_jettyVersions.php
index a3501bd..d72ac83 100644
--- a/_jettyVersions.php
+++ b/_jettyVersions.php
@@ -34,17 +34,17 @@
     'tgz.sha1' => 'fbbe459c6c686ae1e4b4db00bc93a854ecd243ec',
   ),
  'jetty_10.0' => array (
-    'version' => '10.0.6',
-    'zip.md5' => 'c190c4de24b2011c7496e0968469c5b1',
-    'zip.sha1' => '6faa9cc3edfd7bbd0614be2711c364584f758807',
-    'tgz.md5' => 'b822a3ff0b98804ff87615002d5bd7d9',
-    'tgz.sha1' => '7bfdc59fa56fb196a047bb6a0afe8d699519b1e4',
+    'version' => '10.0.7',
+    'zip.md5' => '1372d07b3497c7b3e3a8b142087a2562',
+    'zip.sha1' => 'b8a11176f73ea85449654cd94c8c33d887822935',
+    'tgz.md5' => 'c523f8893a36eb7d92801e8812b44917',
+    'tgz.sha1' => 'ac25294fd61e10e8f17f89aaec9fc4a2bc8886df',
   ),
  'jetty_11.0' => array (
-    'version' => '11.0.6',
-    'zip.md5' => 'c9acdebbfe5adcdad3a839fb9ec38d2d',
-    'zip.sha1' => '852631f3e7b70bdc952912119d36dcea6e639740',
-    'tgz.md5' => '966e640143179b98a0f9107f6d487aac',
-    'tgz.sha1' => 'bc551afc85bba36f7507157bf6dcfdb246645b85',
+    'version' => '11.0.7',
+    'zip.md5' => '938f23ff6f8c957db25863d1044102a9',
+    'zip.sha1' => '6176a7282c8e662eee4998d7b76b1bc28fe3ca26',
+    'tgz.md5' => 'b37a168e3e7240a013c922c8adc85767',
+    'tgz.sha1' => 'af3675855ba6aa20c5f3a8d1a9635df77b02d9d7',
   )
 );
diff --git a/_jettyVersions.txt b/_jettyVersions.txt
index b6f1c6d..d6e8d0e 100644
--- a/_jettyVersions.txt
+++ b/_jettyVersions.txt
@@ -1,5 +1,5 @@
-11.0.6
-10.0.6
+11.0.7
+10.0.7
 9.4.44.v20210927
 9.3.29.v20201019
 9.2.30.v20200428
diff --git a/documentation/contribution-guide/asciidoctor.css b/documentation/contribution-guide/asciidoctor.css
index 9d9cc70..65ec3f3 100644
--- a/documentation/contribution-guide/asciidoctor.css
+++ b/documentation/contribution-guide/asciidoctor.css
@@ -37,7 +37,7 @@
 table{border-collapse:collapse;border-spacing:0}
 *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
 html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
 a:hover{cursor:pointer}
 img,object,embed{max-width:100%;height:auto}
 object,embed{height:100%}
@@ -52,10 +52,8 @@
 img,object,svg{display:inline-block;vertical-align:middle}
 textarea{height:auto;min-height:50px}
 select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.stretch{width:100%}
 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
 a{color:#2156a5;text-decoration:underline;line-height:inherit}
 a:hover,a:focus{color:#1d4b8f}
 a img{border:0}
@@ -86,28 +84,28 @@
 abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
 abbr{text-transform:none}
 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite::before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
 h1{font-size:2.75em}
 h2{font-size:2.3125em}
 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
 h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
 table thead,table tfoot{background:#f7f8f7}
 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
 table tr.even,table tr.alt{background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
 .clearfix::after,.float-group::after{clear:both}
-:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
-:not(pre)>code.nobreak{word-wrap:normal}
-:not(pre)>code.nowrap{white-space:nowrap}
+:not(pre).nobreak{word-wrap:normal}
+:not(pre).nowrap{white-space:nowrap}
+:not(pre).pre-wrap{white-space:pre-wrap}
+:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
 pre>code{display:block}
@@ -172,7 +170,7 @@
 #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
 #content #toc>:first-child{margin-top:0}
 #content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
+#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
 #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
 #content{margin-bottom:.625em}
 .sect1{padding-bottom:.625em}
@@ -195,7 +193,7 @@
 .admonitionblock>table td.icon{text-align:center;width:80px}
 .admonitionblock>table td.icon img{max-width:none}
 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
 .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
 .exampleblock>.content>:first-child{margin-top:0}
@@ -205,7 +203,7 @@
 .sidebarblock>:last-child{margin-bottom:0}
 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
 .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
@@ -250,22 +248,21 @@
 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
-.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
-table.tableblock{max-width:100%;border-collapse:separate}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
 p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
-td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
-table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
-table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
-table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
-table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
-table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
-table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.grid-all>*>tr>*{border-width:1px}
+table.grid-cols>*>tr>*{border-width:0 1px}
+table.grid-rows>*>tr>*{border-width:1px 0}
 table.frame-all{border-width:1px}
+table.frame-ends{border-width:1px 0}
 table.frame-sides{border-width:0 1px}
-table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
+table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
+table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
+table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
 table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
 th.halign-left,td.halign-left{text-align:left}
 th.halign-right,td.halign-right{text-align:right}
@@ -274,7 +271,7 @@
 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
 th.valign-middle,td.valign-middle{vertical-align:middle}
 table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th{background:#f7f8f7}
 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
 p.tableblock>code:only-child{background:none;padding:0}
 p.tableblock{font-size:1em}
@@ -303,6 +300,7 @@
 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+td.hdlist2{word-wrap:anywhere}
 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
 .colist td:not([class]):first-child img{max-width:none}
@@ -375,7 +373,7 @@
 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
 .conum[data-value] *{color:#fff!important}
 .conum[data-value]+b{display:none}
 .conum[data-value]::after{content:attr(data-value)}
@@ -402,6 +400,7 @@
 svg{max-width:100%}
 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#header,#content,#footnotes,#footer{max-width:none}
 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
 body.book #header{text-align:center}
diff --git a/documentation/contribution-guide/index.html b/documentation/contribution-guide/index.html
index d0e8d7c..9e020b0 100644
--- a/documentation/contribution-guide/index.html
+++ b/documentation/contribution-guide/index.html
@@ -4,11 +4,12 @@
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 2.0.10">
+<meta name="generator" content="Asciidoctor 2.0.15">
 <title>Eclipse Jetty: Contribution Guide</title>
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
 <link rel="stylesheet" href="./asciidoctor.css">
 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </head>
 <body class="article toc2 toc-left">
 <div id="header">
@@ -16,8 +17,8 @@
 <div class="details">
 <span id="author" class="author">Jetty Developers</span><br>
 <span id="email" class="email"><a href="mailto:jetty-dev@eclipse.org">jetty-dev@eclipse.org</a></span><br>
-<span id="revnumber">version 10.0.6,</span>
-<span id="revdate">2021-06-29</span>
+<span id="revnumber">version 10.0.7,</span>
+<span id="revdate">2021-10-06</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Contribution Guide</div>
@@ -1094,10 +1095,9 @@
 </div>
 <div id="footer">
 <div id="footer-text">
-Version 10.0.6<br>
+Version 10.0.7<br>
 Last updated 2021-02-19 12:22:22 -0600
 </div>
 </div>
-<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </body>
 </html>
\ No newline at end of file
diff --git a/documentation/jetty-10/asciidoctor.css b/documentation/jetty-10/asciidoctor.css
index 9d9cc70..65ec3f3 100644
--- a/documentation/jetty-10/asciidoctor.css
+++ b/documentation/jetty-10/asciidoctor.css
@@ -37,7 +37,7 @@
 table{border-collapse:collapse;border-spacing:0}
 *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
 html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
 a:hover{cursor:pointer}
 img,object,embed{max-width:100%;height:auto}
 object,embed{height:100%}
@@ -52,10 +52,8 @@
 img,object,svg{display:inline-block;vertical-align:middle}
 textarea{height:auto;min-height:50px}
 select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.stretch{width:100%}
 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
 a{color:#2156a5;text-decoration:underline;line-height:inherit}
 a:hover,a:focus{color:#1d4b8f}
 a img{border:0}
@@ -86,28 +84,28 @@
 abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
 abbr{text-transform:none}
 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite::before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
 h1{font-size:2.75em}
 h2{font-size:2.3125em}
 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
 h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
 table thead,table tfoot{background:#f7f8f7}
 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
 table tr.even,table tr.alt{background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
 .clearfix::after,.float-group::after{clear:both}
-:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
-:not(pre)>code.nobreak{word-wrap:normal}
-:not(pre)>code.nowrap{white-space:nowrap}
+:not(pre).nobreak{word-wrap:normal}
+:not(pre).nowrap{white-space:nowrap}
+:not(pre).pre-wrap{white-space:pre-wrap}
+:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
 pre>code{display:block}
@@ -172,7 +170,7 @@
 #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
 #content #toc>:first-child{margin-top:0}
 #content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
+#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
 #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
 #content{margin-bottom:.625em}
 .sect1{padding-bottom:.625em}
@@ -195,7 +193,7 @@
 .admonitionblock>table td.icon{text-align:center;width:80px}
 .admonitionblock>table td.icon img{max-width:none}
 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
 .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
 .exampleblock>.content>:first-child{margin-top:0}
@@ -205,7 +203,7 @@
 .sidebarblock>:last-child{margin-bottom:0}
 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
 .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
@@ -250,22 +248,21 @@
 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
-.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
-table.tableblock{max-width:100%;border-collapse:separate}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
 p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
-td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
-table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
-table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
-table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
-table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
-table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
-table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.grid-all>*>tr>*{border-width:1px}
+table.grid-cols>*>tr>*{border-width:0 1px}
+table.grid-rows>*>tr>*{border-width:1px 0}
 table.frame-all{border-width:1px}
+table.frame-ends{border-width:1px 0}
 table.frame-sides{border-width:0 1px}
-table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
+table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
+table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
+table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
 table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
 th.halign-left,td.halign-left{text-align:left}
 th.halign-right,td.halign-right{text-align:right}
@@ -274,7 +271,7 @@
 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
 th.valign-middle,td.valign-middle{vertical-align:middle}
 table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th{background:#f7f8f7}
 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
 p.tableblock>code:only-child{background:none;padding:0}
 p.tableblock{font-size:1em}
@@ -303,6 +300,7 @@
 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+td.hdlist2{word-wrap:anywhere}
 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
 .colist td:not([class]):first-child img{max-width:none}
@@ -375,7 +373,7 @@
 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
 .conum[data-value] *{color:#fff!important}
 .conum[data-value]+b{display:none}
 .conum[data-value]::after{content:attr(data-value)}
@@ -402,6 +400,7 @@
 svg{max-width:100%}
 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#header,#content,#footnotes,#footer{max-width:none}
 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
 body.book #header{text-align:center}
diff --git a/documentation/jetty-10/contribution-guide/asciidoctor.css b/documentation/jetty-10/contribution-guide/asciidoctor.css
index 9d9cc70..65ec3f3 100644
--- a/documentation/jetty-10/contribution-guide/asciidoctor.css
+++ b/documentation/jetty-10/contribution-guide/asciidoctor.css
@@ -37,7 +37,7 @@
 table{border-collapse:collapse;border-spacing:0}
 *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
 html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
 a:hover{cursor:pointer}
 img,object,embed{max-width:100%;height:auto}
 object,embed{height:100%}
@@ -52,10 +52,8 @@
 img,object,svg{display:inline-block;vertical-align:middle}
 textarea{height:auto;min-height:50px}
 select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.stretch{width:100%}
 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
 a{color:#2156a5;text-decoration:underline;line-height:inherit}
 a:hover,a:focus{color:#1d4b8f}
 a img{border:0}
@@ -86,28 +84,28 @@
 abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
 abbr{text-transform:none}
 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite::before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
 h1{font-size:2.75em}
 h2{font-size:2.3125em}
 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
 h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
 table thead,table tfoot{background:#f7f8f7}
 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
 table tr.even,table tr.alt{background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
 .clearfix::after,.float-group::after{clear:both}
-:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
-:not(pre)>code.nobreak{word-wrap:normal}
-:not(pre)>code.nowrap{white-space:nowrap}
+:not(pre).nobreak{word-wrap:normal}
+:not(pre).nowrap{white-space:nowrap}
+:not(pre).pre-wrap{white-space:pre-wrap}
+:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
 pre>code{display:block}
@@ -172,7 +170,7 @@
 #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
 #content #toc>:first-child{margin-top:0}
 #content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
+#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
 #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
 #content{margin-bottom:.625em}
 .sect1{padding-bottom:.625em}
@@ -195,7 +193,7 @@
 .admonitionblock>table td.icon{text-align:center;width:80px}
 .admonitionblock>table td.icon img{max-width:none}
 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
 .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
 .exampleblock>.content>:first-child{margin-top:0}
@@ -205,7 +203,7 @@
 .sidebarblock>:last-child{margin-bottom:0}
 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
 .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
@@ -250,22 +248,21 @@
 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
-.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
-table.tableblock{max-width:100%;border-collapse:separate}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
 p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
-td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
-table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
-table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
-table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
-table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
-table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
-table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.grid-all>*>tr>*{border-width:1px}
+table.grid-cols>*>tr>*{border-width:0 1px}
+table.grid-rows>*>tr>*{border-width:1px 0}
 table.frame-all{border-width:1px}
+table.frame-ends{border-width:1px 0}
 table.frame-sides{border-width:0 1px}
-table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
+table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
+table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
+table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
 table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
 th.halign-left,td.halign-left{text-align:left}
 th.halign-right,td.halign-right{text-align:right}
@@ -274,7 +271,7 @@
 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
 th.valign-middle,td.valign-middle{vertical-align:middle}
 table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th{background:#f7f8f7}
 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
 p.tableblock>code:only-child{background:none;padding:0}
 p.tableblock{font-size:1em}
@@ -303,6 +300,7 @@
 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+td.hdlist2{word-wrap:anywhere}
 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
 .colist td:not([class]):first-child img{max-width:none}
@@ -375,7 +373,7 @@
 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
 .conum[data-value] *{color:#fff!important}
 .conum[data-value]+b{display:none}
 .conum[data-value]::after{content:attr(data-value)}
@@ -402,6 +400,7 @@
 svg{max-width:100%}
 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#header,#content,#footnotes,#footer{max-width:none}
 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
 body.book #header{text-align:center}
diff --git a/documentation/jetty-10/contribution-guide/index.html b/documentation/jetty-10/contribution-guide/index.html
index d0e8d7c..9e020b0 100644
--- a/documentation/jetty-10/contribution-guide/index.html
+++ b/documentation/jetty-10/contribution-guide/index.html
@@ -4,11 +4,12 @@
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 2.0.10">
+<meta name="generator" content="Asciidoctor 2.0.15">
 <title>Eclipse Jetty: Contribution Guide</title>
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
 <link rel="stylesheet" href="./asciidoctor.css">
 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </head>
 <body class="article toc2 toc-left">
 <div id="header">
@@ -16,8 +17,8 @@
 <div class="details">
 <span id="author" class="author">Jetty Developers</span><br>
 <span id="email" class="email"><a href="mailto:jetty-dev@eclipse.org">jetty-dev@eclipse.org</a></span><br>
-<span id="revnumber">version 10.0.6,</span>
-<span id="revdate">2021-06-29</span>
+<span id="revnumber">version 10.0.7,</span>
+<span id="revdate">2021-10-06</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Contribution Guide</div>
@@ -1094,10 +1095,9 @@
 </div>
 <div id="footer">
 <div id="footer-text">
-Version 10.0.6<br>
+Version 10.0.7<br>
 Last updated 2021-02-19 12:22:22 -0600
 </div>
 </div>
-<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </body>
 </html>
\ No newline at end of file
diff --git a/documentation/jetty-10/index.html b/documentation/jetty-10/index.html
index 3556969..ad5e954 100644
--- a/documentation/jetty-10/index.html
+++ b/documentation/jetty-10/index.html
@@ -4,7 +4,7 @@
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 2.0.10">
+<meta name="generator" content="Asciidoctor 2.0.15">
 <title>Eclipse Jetty Documentation</title>
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
 <link rel="stylesheet" href="./asciidoctor.css">
@@ -16,8 +16,8 @@
 <div class="details">
 <span id="author" class="author">Jetty Developers</span><br>
 <span id="email" class="email"><a href="mailto:jetty-dev@eclipse.org">jetty-dev@eclipse.org</a></span><br>
-<span id="revnumber">version 10.0.6,</span>
-<span id="revdate">2021-06-29</span>
+<span id="revnumber">version 10.0.7,</span>
+<span id="revdate">2021-10-06</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Table of Contents</div>
@@ -68,7 +68,7 @@
 </div>
 <div id="footer">
 <div id="footer-text">
-Version 10.0.6<br>
+Version 10.0.7<br>
 Last updated 2021-02-19 12:22:22 -0600
 </div>
 </div>
diff --git a/documentation/jetty-10/old_docs/asciidoctor.css b/documentation/jetty-10/old_docs/asciidoctor.css
index 9d9cc70..65ec3f3 100644
--- a/documentation/jetty-10/old_docs/asciidoctor.css
+++ b/documentation/jetty-10/old_docs/asciidoctor.css
@@ -37,7 +37,7 @@
 table{border-collapse:collapse;border-spacing:0}
 *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
 html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
 a:hover{cursor:pointer}
 img,object,embed{max-width:100%;height:auto}
 object,embed{height:100%}
@@ -52,10 +52,8 @@
 img,object,svg{display:inline-block;vertical-align:middle}
 textarea{height:auto;min-height:50px}
 select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.stretch{width:100%}
 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
 a{color:#2156a5;text-decoration:underline;line-height:inherit}
 a:hover,a:focus{color:#1d4b8f}
 a img{border:0}
@@ -86,28 +84,28 @@
 abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
 abbr{text-transform:none}
 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite::before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
 h1{font-size:2.75em}
 h2{font-size:2.3125em}
 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
 h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
 table thead,table tfoot{background:#f7f8f7}
 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
 table tr.even,table tr.alt{background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
 .clearfix::after,.float-group::after{clear:both}
-:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
-:not(pre)>code.nobreak{word-wrap:normal}
-:not(pre)>code.nowrap{white-space:nowrap}
+:not(pre).nobreak{word-wrap:normal}
+:not(pre).nowrap{white-space:nowrap}
+:not(pre).pre-wrap{white-space:pre-wrap}
+:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
 pre>code{display:block}
@@ -172,7 +170,7 @@
 #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
 #content #toc>:first-child{margin-top:0}
 #content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
+#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
 #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
 #content{margin-bottom:.625em}
 .sect1{padding-bottom:.625em}
@@ -195,7 +193,7 @@
 .admonitionblock>table td.icon{text-align:center;width:80px}
 .admonitionblock>table td.icon img{max-width:none}
 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
 .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
 .exampleblock>.content>:first-child{margin-top:0}
@@ -205,7 +203,7 @@
 .sidebarblock>:last-child{margin-bottom:0}
 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
 .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
@@ -250,22 +248,21 @@
 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
-.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
-table.tableblock{max-width:100%;border-collapse:separate}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
 p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
-td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
-table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
-table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
-table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
-table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
-table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
-table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.grid-all>*>tr>*{border-width:1px}
+table.grid-cols>*>tr>*{border-width:0 1px}
+table.grid-rows>*>tr>*{border-width:1px 0}
 table.frame-all{border-width:1px}
+table.frame-ends{border-width:1px 0}
 table.frame-sides{border-width:0 1px}
-table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
+table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
+table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
+table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
 table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
 th.halign-left,td.halign-left{text-align:left}
 th.halign-right,td.halign-right{text-align:right}
@@ -274,7 +271,7 @@
 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
 th.valign-middle,td.valign-middle{vertical-align:middle}
 table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th{background:#f7f8f7}
 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
 p.tableblock>code:only-child{background:none;padding:0}
 p.tableblock{font-size:1em}
@@ -303,6 +300,7 @@
 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+td.hdlist2{word-wrap:anywhere}
 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
 .colist td:not([class]):first-child img{max-width:none}
@@ -375,7 +373,7 @@
 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
 .conum[data-value] *{color:#fff!important}
 .conum[data-value]+b{display:none}
 .conum[data-value]::after{content:attr(data-value)}
@@ -402,6 +400,7 @@
 svg{max-width:100%}
 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#header,#content,#footnotes,#footer{max-width:none}
 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
 body.book #header{text-align:center}
diff --git a/documentation/jetty-10/old_docs/index.html b/documentation/jetty-10/old_docs/index.html
index 8b7b220..9fd3d28 100644
--- a/documentation/jetty-10/old_docs/index.html
+++ b/documentation/jetty-10/old_docs/index.html
@@ -4,11 +4,12 @@
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 2.0.10">
+<meta name="generator" content="Asciidoctor 2.0.15">
 <title>Eclipse Jetty: Old Documentation</title>
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
 <link rel="stylesheet" href="./asciidoctor.css">
 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </head>
 <body class="article toc2 toc-left">
 <div id="header">
@@ -16,8 +17,8 @@
 <div class="details">
 <span id="author" class="author">Jetty Developers</span><br>
 <span id="email" class="email"><a href="mailto:jetty-dev@eclipse.org">jetty-dev@eclipse.org</a></span><br>
-<span id="revnumber">version 10.0.6,</span>
-<span id="revdate">2021-06-29</span>
+<span id="revnumber">version 10.0.7,</span>
+<span id="revdate">2021-10-06</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Old Jetty Documentation</div>
@@ -987,6 +988,7 @@
 </ul>
 </li>
 <li><a href="#_authentication-and-authorization-with-embedded-jetty">Authentication and Authorization with Embedded Jetty</a></li>
+<li><a href="#_jsr-196-java-authentication-service-provider-interface-for-containers-jaspi">JSR 196: Java Authentication Service Provider Interface for Containers (JASPI)</a></li>
 </ul>
 </li>
 <li><a href="#configuring-form-size">Limiting Form Content</a>
@@ -1423,7 +1425,7 @@
 </div>
 <div class="paragraph">
 <p>Below is an example application that sets up the standard <code>test-spec.war</code> webapp from the distribution in embedded fashion.
-It can also be found in the Jetty GitHub repository on the examples/embedded page as <a href="https://github.com/eclipse/jetty.project/tree/master/examples/embedded/src/main/java/org/eclipse/jetty/embedded"><code>ServerWithAnnotations.java</code>.</a>
+It can also be found in the Jetty GitHub repository on the examples/embedded page as <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/examples/embedded/src/main/java/org/eclipse/jetty/embedded"><code>ServerWithAnnotations.java</code>.</a>
 Note that the <code>test-spec.war</code> uses not only annotations, but also <a href="#jndi">JNDI</a>, so this example also enables their processing (via the <a href="#jndi-configuration-classes">org.eclipse.jetty.plus.webapp.EnvConfiguration</a>, <a href="#jndi-configuration-classes">org.eclipse.jetty.plus.webapp.PlusConfiguration</a> and their related jars).</p>
 </div>
 <div class="listingblock">
@@ -1451,7 +1453,7 @@
 </div>
 </div>
 <div class="paragraph">
-<p>You will also need the <a href="http://asm.ow2.org/">asm</a> jar, which you can obtain from <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/org.objectweb.asm/3.3.1.v201105211655/org.objectweb.asm-3.3.1.v201105211655.jar">this link.</a></p>
+<p>You will also need the <a href="http://asm.ow2.org/">asm</a> jar, which you can obtain from <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/org.objectweb.asm/3.3.1.v201105211655/org.objectweb.asm-3.3.1.v201105211655.jar">this link.</a></p>
 </div>
 </div>
 <div class="sect3">
@@ -2828,7 +2830,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">[mybase] java -jar $JETTY_HOME/start.jar
 2017-08-31 10:19:58.855:INFO::main: Logging initialized @372ms to org.eclipse.jetty.util.log.StdErrLog
-2017-08-31 10:19:59.076:INFO:oejs.Server:main: jetty-10.0.6
+2017-08-31 10:19:59.076:INFO:oejs.Server:main: jetty-10.0.7
 2017-08-31 10:19:59.125:INFO:oejs.AbstractConnector:main: Started ServerConnector@421e98e0{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 2017-08-31 10:19:59.150:INFO:oejus.SslContextFactory:main: x509=X509@5315b42e(jetty,h=[jetty.eclipse.org],w=[]) for SslContextFactory@2ef9b8bc(file:///var/my-jetty-base/etc/keystore,file:///var/my-jetty-base/etc/keystore)
 2017-08-31 10:19:59.151:INFO:oejus.SslContextFactory:main: x509=X509@5d624da6(mykey,h=[],w=[]) for SslContextFactory@2ef9b8bc(file:///var/my-jetty-base/etc/keystore,file:///var/my-jetty-base/etc/keystore)
@@ -2897,7 +2899,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">[my-base]$ java -jar /path/to/jetty-home/start.jar
 2017-08-31 10:31:32.955:INFO::main: Logging initialized @366ms to org.eclipse.jetty.util.log.StdErrLog
-2017-08-31 10:31:33.109:INFO:oejs.Server:main: jetty-10.0.6
+2017-08-31 10:31:33.109:INFO:oejs.Server:main: jetty-10.0.7
 2017-08-31 10:31:33.146:INFO:oejs.AbstractConnector:main: Started ServerConnector@2ef9b8bc{HTTP/1.1,[http/1.1]}{0.0.0.0:5231}
 ...
 2017-08-31 10:31:33.263:INFO:oejs.Server:main: Started @675ms</code></pre>
@@ -2964,28 +2966,28 @@
 </div>
 <div class="dlist">
 <dl>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a></dt>
 <dd>
 <p>Instantiates a <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a> that accepts HTTP connections (that may be upgraded to WebSocket connections).</p>
 </dd>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-ssl.xml"><code>jetty-ssl.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-ssl.xml"><code>jetty-ssl.xml</code></a></dt>
 <dd>
 <p>Instantiates a <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a> that accepts SSL/TLS connections.
 On it&#8217;s own, this connector is not functional and requires one or more of the following files to also be configured to add  <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ConnectionFactory.html"><code>ConnectionFactories</code></a> to make the connector functional.</p>
 </dd>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a></dt>
 <dd>
 <p>Adds a <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/HttpConnectionFactory.html"><code>HttpConnectionFactory</code></a> to the <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a>  configured by <code>jetty-ssl.xml</code> which combine to provide support for HTTPS.</p>
 </dd>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-http-forwarded.xml"><code>jetty-http-forwarded.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-http-forwarded.xml"><code>jetty-http-forwarded.xml</code></a></dt>
 <dd>
 <p>Adds a <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ForwardedRequestCustomizer.html"><code>ForwardedRequestCustomizer</code></a>to the HTTP Connector to process forwarded-for style headers from a proxy.</p>
 </dd>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml"><code>jetty-http2.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml"><code>jetty-http2.xml</code></a></dt>
 <dd>
 <p>Adds a <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/http2/server/HTTP2ServerConnectionFactory.html"><code>Http2ServerConnectionFactory</code></a> to the  <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a> configured by <code>jetty-ssl.xml</code> to support the http2 protocol.</p>
 </dd>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-alpn/jetty-alpn-server/src/main/config/etc/jetty-alpn.xml"><code>jetty-alpn.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-alpn/jetty-alpn-server/src/main/config/etc/jetty-alpn.xml"><code>jetty-alpn.xml</code></a></dt>
 <dd>
 <p>Adds an <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/alpn/server/ALPNServerConnectionFactory.html"><code>ALPNServerConnectionFactory</code></a> to the <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a> configured by <code>jetty-ssl.xml</code> which allows the one SSL connector to support multiple protocols with the ALPN extension used to select the protocol to be used for each connection.</p>
 </dd>
@@ -2996,7 +2998,7 @@
 <h4 id="_constructing-a-serverconnector"><a class="anchor" href="#_constructing-a-serverconnector"></a><a class="link" href="#_constructing-a-serverconnector">Constructing a ServerConnector</a></h4>
 <div class="paragraph">
 <p>The services a <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a> instance uses are set by constructor injection and once instantiated cannot be changed.
-Many of the services may be defaulted with null or 0 values so that a reasonable default is used, thus for most purposes only the Server and the connection factories need to be passed to the connector constructor. In Jetty XML (that is, in <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a>) you can do this by:</p>
+Many of the services may be defaulted with null or 0 values so that a reasonable default is used, thus for most purposes only the Server and the connection factories need to be passed to the connector constructor. In Jetty XML (that is, in <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a>) you can do this by:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -3103,7 +3105,7 @@
 <div class="paragraph">
 <p>The <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/HttpConfiguration.html"><code>HttpConfiguration</code></a> class holds the configuration for <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/HttpChannel.html"><code>HttpChannel</code></a>s, which you can create 1:1 with each HTTP connection or 1:n on a multiplexed HTTP/2 connection.
 Thus a <code>HttpConfiguration</code> object is injected into both the HTTP and HTTP/2 connection factories.
-To avoid duplicate configuration, the standard Jetty distribution creates the common <code>HttpConfiguration</code> instance in <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty.xml"><code>jetty.xml</code></a>, which is a <code>Ref</code> element then used in <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a>, <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a> and in <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml"><code>jetty-http2.xml</code></a>.</p>
+To avoid duplicate configuration, the standard Jetty distribution creates the common <code>HttpConfiguration</code> instance in <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty.xml"><code>jetty.xml</code></a>, which is a <code>Ref</code> element then used in <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a>, <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a> and in <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml"><code>jetty-http2.xml</code></a>.</p>
 </div>
 <div class="paragraph">
 <p>A typical configuration of <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/HttpConfiguration.html">HttpConfiguration</a> is:</p>
@@ -3169,7 +3171,7 @@
 <div class="paragraph">
 <p>The SSL/TLS connectors for HTTPS and HTTP/2 require a certificate to establish a secure connection.
 Jetty holds certificates in standard JVM keystores and are configured as keystore and truststores on a <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/util/ssl/SslContextFactory.Server.html"><code>SslContextFactory.Server</code></a> instance that is injected into an <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/SslConnectionFactory.html"><code>SslConnectionFactory</code></a> instance.
-An example using the keystore distributed with Jetty (containing a self signed test certificate) is in <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a>.
+An example using the keystore distributed with Jetty (containing a self signed test certificate) is in <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a>.
 Read more about SSL keystores in <a href="#configuring-ssl">Configuring SSL</a>.</p>
 </div>
 </div>
@@ -5004,7 +5006,7 @@
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
     <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty<span class="tag">&lt;/groupId&gt;</span>
     <span class="tag">&lt;artifactId&gt;</span>jetty-quickstart<span class="tag">&lt;/artifactId&gt;</span>
-    <span class="tag">&lt;version&gt;</span>10.0.6<span class="tag">&lt;/version&gt;</span>
+    <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
 <span class="tag">&lt;/dependency&gt;</span></code></pre>
 </div>
 </div>
@@ -5173,7 +5175,7 @@
 <div class="paragraph">
 <p>Jetty is decomposed into many jars and dependencies to achieve a minimal footprint by selecting the minimal set of jars.
 Typically it is best to use something like <a href="#jetty-maven-helloworld">Maven</a> to manage jars, however this tutorial uses an aggregate Jar that contains all of the required Jetty classes in one Jar.
-You can manually download the aggregate <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/10.0.6/jetty-all-10.0.6-uber.jar"><code>jetty-all.jar</code></a> using <code>curl</code> or a browser.</p>
+You can manually download the aggregate <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/10.0.7/jetty-all-10.0.7-uber.jar"><code>jetty-all.jar</code></a> using <code>curl</code> or a browser.</p>
 </div>
 <div class="quoteblock">
 <blockquote>
@@ -5216,7 +5218,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">&gt; mkdir Demo
 &gt; cd Demo
-&gt; curl -o jetty-all-uber.jar https://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/10.0.6/jetty-all-10.0.6-uber.jar</code></pre>
+&gt; curl -o jetty-all-uber.jar https://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/10.0.7/jetty-all-10.0.7-uber.jar</code></pre>
 </div>
 </div>
 </div>
@@ -5225,7 +5227,7 @@
 <div class="paragraph">
 <p>The <a href="#embedding">Embedding Jetty</a> section contains many examples of writing against the Jetty API.
 This tutorial uses a simple HelloWorld handler with a main method to run the server.
-You can either <a href="https://github.com/eclipse/jetty.project/tree/master/examples/embedded/src/main/java/org/eclipse/jetty/embedded/HelloWorld.java">download</a> or create in an editor the file <code>HelloWorld.java</code> with the following content:</p>
+You can either <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/examples/embedded/src/main/java/org/eclipse/jetty/embedded/HelloWorld.java">download</a> or create in an editor the file <code>HelloWorld.java</code> with the following content:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -5597,36 +5599,36 @@
 <div class="paragraph">
 <p>The typical way to configure an instance of the Jetty server is via <code>jetty.xml</code> and associated configuration files.
 However the Jetty XML configuration format is just a simple rendering of what you can do in code; it is very simple to write embedded code that does precisely what the jetty.xml configuration does.
-The <a href="https://github.com/eclipse/jetty.project/tree/master/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java">LikeJettyXml example</a> following renders in code the behavior obtained from the configuration files:</p>
+The <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java">LikeJettyXml example</a> following renders in code the behavior obtained from the configuration files:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty.xml">jetty.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty.xml">jetty.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-jmx/src/main/config/etc/jetty-jmx.xml">jetty-jmx.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-jmx/src/main/config/etc/jetty-jmx.xml">jetty-jmx.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-http.xml">jetty-http.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-http.xml">jetty-http.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-https.xml">jetty-https.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-https.xml">jetty-https.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-deploy/src/main/config/etc/jetty-deploy.xml">jetty-deploy.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-deploy/src/main/config/etc/jetty-deploy.xml">jetty-deploy.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-stats.xml">jetty-stats.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-stats.xml">jetty-stats.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-requestlog.xml">jetty-requestlog.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-requestlog.xml">jetty-requestlog.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-lowresources.xml">jetty-lowresources.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-lowresources.xml">jetty-lowresources.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/test-realm.xml">test-realm.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/test-realm.xml">test-realm.xml</a></p>
 </li>
 </ul>
 </div>
@@ -9865,7 +9867,7 @@
 <pre class="CodeRay highlight"><code data-lang="screen">[2093] java -jar start.jar
 
 2013-07-26 15:47:53.480:INFO:oejs.Server:main: jetty-9.0.4.v20130625
-2013-07-26 15:47:53.549:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/home/user/jetty-home-10.0.6/webapps/] at interval 1
+2013-07-26 15:47:53.549:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/home/user/jetty-home-10.0.7/webapps/] at interval 1
 Jul 26, 2013 3:47:53 PM com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextInitialized
 INFO: WSSERVLET12: JAX-WS context listener initializing
 Jul 26, 2013 3:47:56 PM com.sun.xml.ws.server.MonitorBase createRoot
@@ -9899,7 +9901,7 @@
 It also provides a Quick Start guide on how to get Jetty up and running as well as an overview of how and what to configure in Jetty.</p>
 </li>
 <li>
-<p>The <a href="../operations-guide/index.html">Operations Guide</a> details configuring Jetty as a distributed package at a more granular level.
+<p>The <a href="{OPGUIDE}">Operations Guide</a> details configuring Jetty as a distributed package at a more granular level.
 From server startup to session management, logging, HTTP/2 support and Jetty optimization, these chapters will help administrators get the most out of their distributed Jetty server instances.
 This section also covers configuring many of the most common servlet container features such as JNDI and JMX.</p>
 </li>
@@ -9910,7 +9912,7 @@
 This section also includes a guide on using the Jetty Maven plugin as well as information on debugging Jetty.</p>
 </li>
 <li>
-<p>The <a href="#../contribution-guide/index.html">Contribution Guide</a> is aimed at those who want to contribute to the Jetty open source project.
+<p>The <a href="#{CONTRIBGUIDE}">Contribution Guide</a> is aimed at those who want to contribute to the Jetty open source project.
 It includes instructions on interacting with the community, how to raise bugs, and how to report security issues.
 In addition, it also details source control and build information for the project.</p>
 </li>
@@ -10649,7 +10651,7 @@
 <pre class="CodeRay highlight"><code data-lang="screen">$ java -jar start.jar
 2017-09-20 15:45:11.986:INFO::main: Logging initialized @683ms to org.eclipse.jetty.util.log.StdErrLog
 2017-09-20 15:45:12.197:WARN:oejs.HomeBaseWarning:main: This instance of Jetty is not running from a separate {jetty.base} directory, this is not recommended.  See documentation at https://www.eclipse.org/jetty/documentation/current/startup.html
-2017-09-20 15:45:12.243:INFO:oejs.Server:main: 10.0.6
+2017-09-20 15:45:12.243:INFO:oejs.Server:main: 10.0.7
 2017-09-20 15:45:12.266:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///installs/repository/jetty/webapps/] at interval 1
 2017-09-20 15:45:12.298:INFO:oejs.AbstractConnector:main: Started ServerConnector@39c0f4a{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 2017-09-20 15:45:12.298:INFO:oejs.Server:main: Started @995ms</code></pre>
@@ -10696,14 +10698,14 @@
 [my-base]$ java -jar /path/to/jetty-home/start.jar
 2017-09-20 16:23:03.563:INFO::main: Logging initialized @429ms to org.eclipse.jetty.util.log.StdErrLog
 2017-09-20 16:23:03.802:WARN::main: demo test-realm is deployed. DO NOT USE IN PRODUCTION!
-2017-09-20 16:23:03.804:INFO:oejs.Server:main: 10.0.6
+2017-09-20 16:23:03.804:INFO:oejs.Server:main: 10.0.7
 2017-09-20 16:23:03.819:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///installs/repository/jetty/demo-base/webapps/] at interval 1
 2017-09-20 16:23:04.098:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=102ms
 2017-09-20 16:23:04.103:WARN::main: async-rest webapp is deployed. DO NOT USE IN PRODUCTION!
 2017-09-20 16:23:04.267:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0
 2017-09-20 16:23:04.267:INFO:oejs.session:main: No SessionScavenger set, using defaults
 2017-09-20 16:23:04.268:INFO:oejs.session:main: Scavenging every 660000ms
-2017-09-20 16:23:04.306:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@371a67ec{/async-rest,[file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-5319296087878801290.dir/webapp/, jar:file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-5319296087878801290.dir/webapp/WEB-INF/lib/example-async-rest-jar-10.0.6.jar!/META-INF/resources],AVAILABLE}{/async-rest.war}
+2017-09-20 16:23:04.306:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@371a67ec{/async-rest,[file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-5319296087878801290.dir/webapp/, jar:file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-5319296087878801290.dir/webapp/WEB-INF/lib/example-async-rest-jar-10.0.7.jar!/META-INF/resources],AVAILABLE}{/async-rest.war}
 2017-09-20 16:23:04.429:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=53ms
 2017-09-20 16:23:04.432:WARN::main: test webapp is deployed. DO NOT USE IN PRODUCTION!
 2017-09-20 16:23:04.511:INFO:oejsh.ManagedAttributeListener:main: update PushFilter null-&gt;org.eclipse.jetty.servlets.PushCacheFilter@2362f559 on o.e.j.w.WebAppContext@35e2d654{/test,file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test.war-_test-any-6279588879522983394.dir/webapp/,STARTING}{/test.war}
@@ -10720,7 +10722,7 @@
 2017-09-20 16:23:05.098:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@506ae4d4{/test-jaas,file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test-jaas.war-_test-jaas-any-8067423971450448377.dir/webapp/,AVAILABLE}{/test-jaas.war}
 2017-09-20 16:23:05.182:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=37ms
 2017-09-20 16:23:05.184:WARN::main: test-spec webapp is deployed. DO NOT USE IN PRODUCTION!
-2017-09-20 16:23:05.243:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@45099dd3{/test-spec,[file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-1205866915335004234.dir/webapp/, jar:file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-1205866915335004234.dir/webapp/WEB-INF/lib/test-web-fragment-10.0.6.jar!/META-INF/resources],AVAILABLE}{/test-spec.war}
+2017-09-20 16:23:05.243:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@45099dd3{/test-spec,[file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-1205866915335004234.dir/webapp/, jar:file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-1205866915335004234.dir/webapp/WEB-INF/lib/test-web-fragment-10.0.7.jar!/META-INF/resources],AVAILABLE}{/test-spec.war}
 2017-09-20 16:23:05.247:INFO:oejsh.ContextHandler:main: Started o.e.j.s.h.MovedContextHandler@3e08ff24{/oldContextPath,null,AVAILABLE}
 2017-09-20 16:23:05.274:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=18ms
 2017-09-20 16:23:05.296:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@5ddeb7cb{/,file:///installs/repository/jetty/demo-base/webapps/ROOT/,AVAILABLE}{/ROOT}
@@ -10857,7 +10859,7 @@
 2015-06-04 11:10:16.460:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///tmp/mybase/webapps/] at interval 1
 2015-06-04 11:10:16.581:WARN::main: async-rest webapp is deployed. DO NOT USE IN PRODUCTION!
 2015-06-04 11:10:16.589:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
-2015-06-04 11:10:16.628:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@1a407d53{/,[file:///tmp/jetty-0.0.0.0-8080-ROOT.war-_-any-4510228025526425427.dir/webapp/, jar:file:///tmp/jetty-0.0.0.0-8080-ROOT.war-_-any-4510228025526425427.dir/webapp/WEB-INF/lib/example-async-rest-jar-10.0.6.jar!/META-INF/resources],AVAILABLE}{/ROOT.war}
+2015-06-04 11:10:16.628:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@1a407d53{/,[file:///tmp/jetty-0.0.0.0-8080-ROOT.war-_-any-4510228025526425427.dir/webapp/, jar:file:///tmp/jetty-0.0.0.0-8080-ROOT.war-_-any-4510228025526425427.dir/webapp/WEB-INF/lib/example-async-rest-jar-10.0.7.jar!/META-INF/resources],AVAILABLE}{/ROOT.war}
 2015-06-04 11:10:16.645:INFO:oejs.ServerConnector:main: Started ServerConnector@3abbfa04{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 2015-06-04 11:10:16.646:INFO:oejs.Server:main: Started @634ms</code></pre>
 </div>
@@ -12929,7 +12931,7 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-As of Jetty 10, the <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.mail.glassfish/1.4.1.v201005082020/javax.mail.glassfish-1.4.1.v201005082020.jar"><code>javax.mail</code></a> and  <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.activation/1.1.0.v201105071233/javax.activation-1.1.0.v201105071233.jar"><code>javax.activation</code></a> jar files are not included in the Jetty Distribution and will need to be downloaded separately from Maven Central.
+As of Jetty 10, the <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/javax.mail.glassfish/1.4.1.v201005082020/javax.mail.glassfish-1.4.1.v201005082020.jar"><code>javax.mail</code></a> and  <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/javax.activation/1.1.0.v201105071233/javax.activation-1.1.0.v201105071233.jar"><code>javax.activation</code></a> jar files are not included in the Jetty Distribution and will need to be downloaded separately from Maven Central.
 </td>
 </tr>
 </table>
@@ -13085,11 +13087,11 @@
 </div>
 <div class="paragraph">
 <p>If you are using transactions, you will also need the <code>javax.transaction</code> api.
-You can obtain this jar <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.transaction/1.1.1.v201105210645/javax.transaction-1.1.1.v201105210645.jar">here.</a></p>
+You can obtain this jar <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/javax.transaction/1.1.1.v201105210645/javax.transaction-1.1.1.v201105210645.jar">here.</a></p>
 </div>
 <div class="paragraph">
-<p>If you wish to use mail, you will also need the <code>javax.mail</code> api and implementation which <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.mail.glassfish/1.4.1.v201005082020/javax.mail.glassfish-1.4.1.v201005082020.jar">you can download here.</a>
-Note that this jar also requires the <code>javax.activation</code> classes, which is available <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.activation/1.1.0.v201105071233/javax.activation-1.1.0.v201105071233.jar">at this link.</a></p>
+<p>If you wish to use mail, you will also need the <code>javax.mail</code> api and implementation which <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/javax.mail.glassfish/1.4.1.v201005082020/javax.mail.glassfish-1.4.1.v201005082020.jar">you can download here.</a>
+Note that this jar also requires the <code>javax.activation</code> classes, which is available <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/javax.activation/1.1.0.v201105071233/javax.activation-1.1.0.v201105071233.jar">at this link.</a></p>
 </div>
 </div>
 <div class="sect3">
@@ -14217,7 +14219,7 @@
 <div class="sect3">
 <h4 id="selecting-log-framework"><a class="anchor" href="#selecting-log-framework"></a><a class="link" href="#selecting-log-framework">Selecting the Log Framework</a></h4>
 <div class="paragraph">
-<p>Configure the Jetty logging layer via the <code>org.eclipse.jetty.util.log.Log</code> class, following <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-util/src/main/java/org/eclipse/jetty/util/log/Log.java">these rules</a>.</p>
+<p>Configure the Jetty logging layer via the <code>org.eclipse.jetty.util.log.Log</code> class, following <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-util/src/main/java/org/eclipse/jetty/util/log/Log.java">these rules</a>.</p>
 </div>
 <div class="olist arabic">
 <ol class="arabic">
@@ -14262,7 +14264,7 @@
 </td>
 <td class="content">
 You can create your own custom logging by providing an implementation of the <a href="https://www.eclipse.org/jetty/javadoc/jetty-10org/eclipse/jetty/util/log/Logger.html">Jetty Logger API</a>.
-For an example of a custom logger, see <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-util/src/main/java/org/eclipse/jetty/util/log/JavaUtilLog.java">JavaUtilLog.java</a>.
+For an example of a custom logger, see <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-util/src/main/java/org/eclipse/jetty/util/log/JavaUtilLog.java">JavaUtilLog.java</a>.
 </td>
 </tr>
 </table>
@@ -14443,7 +14445,7 @@
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">2016-10-21 15:31:01.248:INFO::main: Logging initialized @332ms to org.eclipse.jetty.util.log.StdErrLog
-2016-10-21 15:31:01.370:INFO:oejs.Server:main: jetty-10.0.6
+2016-10-21 15:31:01.370:INFO:oejs.Server:main: jetty-10.0.7
 2016-10-21 15:31:01.400:INFO:oejs.AbstractConnector:main: Started ServerConnector@2c330fbc{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 2016-10-21 15:31:01.400:INFO:oejs.Server:main: Started @485ms</code></pre>
 </div>
@@ -14454,7 +14456,7 @@
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">2016-10-21 15:31:35.020:INFO::main: Logging initialized @340ms to org.eclipse.jetty.util.log.StdErrLog
-2016-10-21 15:31:35.144:INFO:org.eclipse.jetty.server.Server:main: jetty-10.0.6
+2016-10-21 15:31:35.144:INFO:org.eclipse.jetty.server.Server:main: jetty-10.0.7
 2016-10-21 15:31:35.174:INFO:org.eclipse.jetty.server.AbstractConnector:main: Started ServerConnector@edf4efb{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 2016-10-21 15:31:35.175:INFO:org.eclipse.jetty.server.Server:main: Started @495ms</code></pre>
 </div>
@@ -15187,7 +15189,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">[my-base]$ java -jar /path/to/jetty-home/start.jar
 419  [main] INFO  org.eclipse.jetty.util.log - Logging initialized @508ms to org.eclipse.jetty.util.log.Slf4jLog
-540  [main] INFO  org.eclipse.jetty.server.Server - jetty-10.0.6
+540  [main] INFO  org.eclipse.jetty.server.Server - jetty-10.0.7
 575  [main] INFO  o.e.jetty.server.AbstractConnector - Started ServerConnector@3c0ecd4b{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 575  [main] INFO  org.eclipse.jetty.server.Server - Started @668ms</code></pre>
 </div>
@@ -15624,8 +15626,8 @@
 Downloading JDK...
 Copying openjdk-1.7.0_21.tar.gz from the buildpack cache ...
 Unpacking JDK to .jdk
-Downloading Jetty: jetty-home-10.0.6.tar.gz
-Downloading jetty-home-10.0.6.tar.gz from http://repo2.maven.org/maven2/org/eclipse/jetty/jetty-home/10.0.0.v202012xx/ ...
+Downloading Jetty: jetty-home-10.0.7.tar.gz
+Downloading jetty-home-10.0.7.tar.gz from http://repo2.maven.org/maven2/org/eclipse/jetty/jetty-home/10.0.0.v202012xx/ ...
 Unpacking Jetty to .jetty
 -&gt; Uploading staged droplet (36M)
 -&gt; Uploaded droplet
@@ -16295,7 +16297,7 @@
 <p>Internally, configuring an authentication mechanism is done by setting an instance of a the <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/security/Authenticator.html">Authenticator</a> interface onto the <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/security/SecurityHandler.html">SecurityHandler</a> of the context, but in most cases it is done by declaring a <code>&lt;login-config&gt;</code> element in the standard web.xml descriptor or via annotations.</p>
 </div>
 <div class="paragraph">
-<p>Below is an example taken from the <a href="https://github.com/eclipse/jetty.project/tree/master/tests/test-webapps/test-jetty-webapp/src/main/webapp/WEB-INF/web.xml?h=release-9">jetty-test-webapp web.xml</a> that configures BASIC authentication:</p>
+<p>Below is an example taken from the <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jetty-webapp/src/main/webapp/WEB-INF/web.xml?h=release-9">jetty-test-webapp web.xml</a> that configures BASIC authentication:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -16306,7 +16308,7 @@
 </div>
 </div>
 <div class="paragraph">
-<p>The <a href="https://github.com/eclipse/jetty.project/tree/master/tests/test-webapps/test-jetty-webapp/src/main/webapp/WEB-INF/web.xml?h=release-9">jetty-test-webapp web.xml</a> also includes commented out examples of other DIGEST and FORM configuration:</p>
+<p>The <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jetty-webapp/src/main/webapp/WEB-INF/web.xml?h=release-9">jetty-test-webapp web.xml</a> also includes commented out examples of other DIGEST and FORM configuration:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -16322,7 +16324,7 @@
 </div>
 <div class="paragraph">
 <p>With FORM Authentication, you must also configure URLs of pages to generate a login form and handle errors.
-Below is a simple HTML form from the <a href="https://github.com/eclipse/jetty.project/tree/master/tests/test-webapps/test-jetty-webapp/src/main/webapp/logon.html?h=release-9">test webapp logon.html</a>:</p>
+Below is a simple HTML form from the <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jetty-webapp/src/main/webapp/logon.html?h=release-9">test webapp logon.html</a>:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -16888,6 +16890,26 @@
 </div>
 </div>
 </div>
+<div class="sect3">
+<h4 id="_jsr-196-java-authentication-service-provider-interface-for-containers-jaspi"><a class="anchor" href="#_jsr-196-java-authentication-service-provider-interface-for-containers-jaspi"></a><a class="link" href="#_jsr-196-java-authentication-service-provider-interface-for-containers-jaspi">JSR 196: Java Authentication Service Provider Interface for Containers (JASPI)</a></h4>
+<div class="paragraph">
+<p>Jetty can utilize portable authentication modules that implements the Jakarta Authentication specification. This requires the jetty-jaspi module.</p>
+</div>
+<div class="paragraph">
+<p>Only modules conforming to the ServerAuthModule interface in the <a href="https://www.jcp.org/en/jsr/detail?id=196">JASPI Spec</a> are supported. These modules must be configured before start-up.</p>
+</div>
+<div class="paragraph">
+<p>The following illustrates a jetty module setting up HTTP Basic Authentication using an Authentication module that comes packaged with the jetty-jaspi module: <code>org.eclipse.jetty.security.jaspi.modules.BasicAuthenticationAuthModule</code></p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml">Unresolved directive in security/authentication.adoc - include::/Users/joakim/Code/Jetty/jetty.project-10.0.x/documentation/jetty-documentation/../jetty-jaspi/src/main/config/etc/jaspi/jaspi-demo.xml[tags=documentation]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Given the portability goal of Jakarta Authentication, custom or 3rd party <code>ServerAuthModule</code> implementations may be configured instead here.</p>
+</div>
+</div>
 </div>
 <div class="sect2">
 <h3 id="configuring-form-size"><a class="anchor" href="#configuring-form-size"></a><a class="link" href="#configuring-form-size">Limiting Form Content</a></h3>
@@ -17089,7 +17111,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp lib/jetty-util-10.0.6.jar org.eclipse.jetty.util.security.Password
+<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp lib/jetty-util-10.0.7.jar org.eclipse.jetty.util.security.Password
 
 Usage - java org.eclipse.jetty.util.security.Password [&lt;user&gt;] &lt;password&gt;
 If the password is ?, the user will be prompted for the password</code></pre>
@@ -17100,7 +17122,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp ../lib/jetty-util-10.0.6.jar org.eclipse.jetty.util.security.Password username password
+<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp ../lib/jetty-util-10.0.7.jar org.eclipse.jetty.util.security.Password username password
 2017-12-13 11:19:27.928:INFO::main: Logging initialized @95ms to org.eclipse.jetty.util.log.StdErrLog
 password
 OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v
@@ -17141,7 +17163,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp ../lib/jetty-util-10.0.6.jar org.eclipse.jetty.util.security.Password username username:realm:password
+<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp ../lib/jetty-util-10.0.7.jar org.eclipse.jetty.util.security.Password username username:realm:password
 2017-12-13 11:34:33.263:INFO::main: Logging initialized @97ms to org.eclipse.jetty.util.log.StdErrLog
 username:realm:password
 OBF:1w281yf41v1x1z7e1xmi1v1p1tvv1v901c3j1x8k1ugo1ri71uh21x8a1c3j1v9m1tv71v2p1xms1z7o1v2h1yf21w1a
@@ -17913,7 +17935,7 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/tests/test-webapps/test-jaas-webapp">https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jaas-webapp</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jaas-webapp">https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jaas-webapp</a></p>
 </li>
 </ul>
 </div>
@@ -18284,24 +18306,24 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">[/opt/jetty]# tar -zxf /home/user/downloads/jetty-home-10.0.6.tar.gz
-[/opt/jetty]# cd jetty-home-10.0.6/
-[/opt/jetty/jetty-home-10.0.6]# ls
+<pre class="CodeRay highlight"><code data-lang="screen">[/opt/jetty]# tar -zxf /home/user/downloads/jetty-home-10.0.7.tar.gz
+[/opt/jetty]# cd jetty-home-10.0.7/
+[/opt/jetty/jetty-home-10.0.7]# ls
 bin        lib                         modules      resources  start.jar
 demo-base  license-eplv10-aslv20.html  notice.html  start.d    VERSION.txt
 etc        logs                        README.TXT   start.ini  webapps
 
-[/opt/jetty/jetty-home-10.0.6]# cp bin/jetty.sh /etc/init.d/jetty
-[/opt/jetty/jetty-home-10.0.6]# echo JETTY_HOME=`pwd` &gt; /etc/default/jetty
-[/opt/jetty/jetty-home-10.0.6]# cat /etc/default/jetty
-JETTY_HOME=/opt/jetty/jetty-home-10.0.6
+[/opt/jetty/jetty-home-10.0.7]# cp bin/jetty.sh /etc/init.d/jetty
+[/opt/jetty/jetty-home-10.0.7]# echo JETTY_HOME=`pwd` &gt; /etc/default/jetty
+[/opt/jetty/jetty-home-10.0.7]# cat /etc/default/jetty
+JETTY_HOME=/opt/jetty/jetty-home-10.0.7
 
-[/opt/jetty/jetty-home-10.0.6]# service jetty start
+[/opt/jetty/jetty-home-10.0.7]# service jetty start
 Starting Jetty: OK Wed Nov 20 10:26:53 MST 2013</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>From this demonstration we can see that Jetty started successfully as a Unix Service from the <code>/opt/jetty/jetty-home-10.0.6</code> directory.</p>
+<p>From this demonstration we can see that Jetty started successfully as a Unix Service from the <code>/opt/jetty/jetty-home-10.0.7</code> directory.</p>
 </div>
 <div class="paragraph">
 <p>This configuration works well but it is running Jetty as the root user.</p>
@@ -18409,9 +18431,9 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">[/opt/jetty]# tar -zxf /home/user/Downloads/jetty-home-10.0.6.tar.gz
+<pre class="CodeRay highlight"><code data-lang="screen">[/opt/jetty]# tar -zxf /home/user/Downloads/jetty-home-10.0.7.tar.gz
 [/opt/jetty]# ls -F
-jetty-home-10.0.6/
+jetty-home-10.0.7/
 [/opt/jetty]# mkdir /opt/jetty/temp</code></pre>
 </div>
 </div>
@@ -18447,7 +18469,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen"># cd /opt/web/mybase/
 [/opt/web/mybase]# ls
-[/opt/web/mybase]# java -jar /opt/jetty/jetty-home-10.0.6/start.jar \
+[/opt/web/mybase]# java -jar /opt/jetty/jetty-home-10.0.7/start.jar \
    --add-to-start=deploy,http,console-capture
    INFO  : webapp          transitively enabled, ini template available with --add-to-start=webapp
    INFO  : server          transitively enabled, ini template available with --add-to-start=server
@@ -18526,8 +18548,8 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen"># cp /opt/jetty/jetty-home-10.0.6/bin/jetty.sh /etc/init.d/jetty
-# echo &quot;JETTY_HOME=/opt/jetty/jetty-home-10.0.6&quot; &gt; /etc/default/jetty
+<pre class="CodeRay highlight"><code data-lang="screen"># cp /opt/jetty/jetty-home-10.0.7/bin/jetty.sh /etc/init.d/jetty
+# echo &quot;JETTY_HOME=/opt/jetty/jetty-home-10.0.7&quot; &gt; /etc/default/jetty
 # echo &quot;JETTY_BASE=/opt/web/mybase&quot; &gt;&gt; /etc/default/jetty
 # echo &quot;TMPDIR=/opt/jetty/temp&quot; &gt;&gt; /etc/default/jetty</code></pre>
 </div>
@@ -18540,32 +18562,32 @@
 <pre class="CodeRay highlight"><code data-lang="screen"># service jetty status
 Checking arguments to Jetty:
 START_INI      =  /opt/web/mybase/start.ini
-JETTY_HOME     =  /opt/jetty/jetty-home-10.0.6
+JETTY_HOME     =  /opt/jetty/jetty-home-10.0.7
 JETTY_BASE     =  /opt/web/mybase
-JETTY_CONF     =  /opt/jetty/jetty-home-10.0.6/etc/jetty.conf
+JETTY_CONF     =  /opt/jetty/jetty-home-10.0.7/etc/jetty.conf
 JETTY_PID      =  /var/run/jetty.pid
-JETTY_START    =  /opt/jetty/jetty-home-10.0.6/start.jar
+JETTY_START    =  /opt/jetty/jetty-home-10.0.7/start.jar
 CLASSPATH      =
 JAVA           =  /usr/bin/java
 JAVA_OPTIONS   =  -Djetty.state=/opt/web/mybase/jetty.state
        -Djetty.logs=/opt/web/mybase/logs
-       -Djetty.home=/opt/jetty/jetty-home-10.0.6
+       -Djetty.home=/opt/jetty/jetty-home-10.0.7
        -Djetty.base=/opt/web/mybase
        -Djava.io.tmpdir=/opt/jetty/temp
 JETTY_ARGS     =  console-capture.xml jetty-started.xml
 RUN_CMD        =  /usr/bin/java
        -Djetty.state=/opt/web/mybase/jetty.state
        -Djetty.logs=/opt/web/mybase/logs
-       -Djetty.home=/opt/jetty/jetty-home-10.0.6
+       -Djetty.home=/opt/jetty/jetty-home-10.0.7
        -Djetty.base=/opt/web/mybase
        -Djava.io.tmpdir=/opt/jetty/temp
-       -jar /opt/jetty/jetty-home-10.0.6/start.jar
+       -jar /opt/jetty/jetty-home-10.0.7/start.jar
        console-capture.xml
        jetty-started.xml</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>You now have a configured <code>${jetty.base}</code> in <code>/opt/web/mybase</code> and a <code>${jetty.home}</code> in <code>/opt/jetty/jetty-home-10.0.6</code>, along with the service level files necessary to start the service.</p>
+<p>You now have a configured <code>${jetty.base}</code> in <code>/opt/web/mybase</code> and a <code>${jetty.home}</code> in <code>/opt/jetty/jetty-home-10.0.7</code>, along with the service level files necessary to start the service.</p>
 </div>
 <div class="paragraph">
 <p>Test the service to make sure it starts up and runs successfully.</p>
@@ -18674,7 +18696,7 @@
 <p>Download a copy of the ZIP distribution from the <a href="#jetty-downloading">Official Eclipse Download Site</a></p>
 </div>
 <div class="paragraph">
-<p>Extract the contents of the <code>jetty-home-10.0.6</code> directory to <code>C:\opt\jetty</code></p>
+<p>Extract the contents of the <code>jetty-home-10.0.7</code> directory to <code>C:\opt\jetty</code></p>
 </div>
 <div class="paragraph">
 <p>Once complete, the contents of the <code>C:\opt\jetty</code> directory should look like this:</p>
@@ -19380,7 +19402,7 @@
 <div class="sect3">
 <h4 id="_remedy-2"><a class="anchor" href="#_remedy-2"></a><a class="link" href="#_remedy-2">Remedy</a></h4>
 <div class="paragraph">
-<p>To help offset the delay in systems like OSX, Jetty defaults the value for non-native implementations to a <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-util/src/main/java/org/eclipse/jetty/util/PathWatcher.java#L1431">time of 5000ms.</a>
+<p>To help offset the delay in systems like OSX, Jetty defaults the value for non-native implementations to a <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-util/src/main/java/org/eclipse/jetty/util/PathWatcher.java#L1431">time of 5000ms.</a>
 Using values lower than 5000ms is not recommended and has shown to frequently fail.</p>
 </div>
 </div>
@@ -19804,10 +19826,9 @@
 </div>
 <div id="footer">
 <div id="footer-text">
-Version 10.0.6<br>
+Version 10.0.7<br>
 Last updated 2021-02-19 12:22:22 -0600
 </div>
 </div>
-<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </body>
 </html>
\ No newline at end of file
diff --git a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-0f37d1d5b12f280e1587df6f3d528998.png.cache b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-0f37d1d5b12f280e1587df6f3d528998.png.cache
index 53e8ab8..70baea4 100644
--- a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-0f37d1d5b12f280e1587df6f3d528998.png.cache
+++ b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-0f37d1d5b12f280e1587df6f3d528998.png.cache
@@ -1 +1 @@
-{"checksum":"0f37d1d5b12f280e1587df6f3d528998","options":{"config":null},"width":363,"height":259}
\ No newline at end of file
+{"checksum":"0f37d1d5b12f280e1587df6f3d528998","options":{"size_limit":"4096"},"width":351,"height":245}
\ No newline at end of file
diff --git a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-176305f848d18dc8b0c4ef7bd331705d.png.cache b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-176305f848d18dc8b0c4ef7bd331705d.png.cache
index 780fcf0..2882c0a 100644
--- a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-176305f848d18dc8b0c4ef7bd331705d.png.cache
+++ b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-176305f848d18dc8b0c4ef7bd331705d.png.cache
@@ -1 +1 @@
-{"checksum":"176305f848d18dc8b0c4ef7bd331705d","options":{"config":null},"width":381,"height":281}
\ No newline at end of file
+{"checksum":"176305f848d18dc8b0c4ef7bd331705d","options":{"size_limit":"4096"},"width":374,"height":267}
\ No newline at end of file
diff --git a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-2830e38460d606111888c5df2a645163.png.cache b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-2830e38460d606111888c5df2a645163.png.cache
index 10ffe2e..a240360 100644
--- a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-2830e38460d606111888c5df2a645163.png.cache
+++ b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-2830e38460d606111888c5df2a645163.png.cache
@@ -1 +1 @@
-{"checksum":"2830e38460d606111888c5df2a645163","options":{"config":null},"width":336,"height":629}
\ No newline at end of file
+{"checksum":"2830e38460d606111888c5df2a645163","options":{"size_limit":"4096"},"width":332,"height":623}
\ No newline at end of file
diff --git a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-70817cc5c7137abc9759cdcd3edbb658.png.cache b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-70817cc5c7137abc9759cdcd3edbb658.png.cache
index 9a81721..a032db4 100644
--- a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-70817cc5c7137abc9759cdcd3edbb658.png.cache
+++ b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-70817cc5c7137abc9759cdcd3edbb658.png.cache
@@ -1 +1 @@
-{"checksum":"70817cc5c7137abc9759cdcd3edbb658","options":{"config":null},"width":225,"height":403}
\ No newline at end of file
+{"checksum":"70817cc5c7137abc9759cdcd3edbb658","options":{"size_limit":"4096"},"width":219,"height":397}
\ No newline at end of file
diff --git a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-7387dfbb6f9fb9cfa951a697aca488a8.png.cache b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-7387dfbb6f9fb9cfa951a697aca488a8.png.cache
index 185cc88..172db00 100644
--- a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-7387dfbb6f9fb9cfa951a697aca488a8.png.cache
+++ b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-7387dfbb6f9fb9cfa951a697aca488a8.png.cache
@@ -1 +1 @@
-{"checksum":"7387dfbb6f9fb9cfa951a697aca488a8","options":{"config":null},"width":140,"height":290}
\ No newline at end of file
+{"checksum":"7387dfbb6f9fb9cfa951a697aca488a8","options":{"size_limit":"4096"},"width":135,"height":284}
\ No newline at end of file
diff --git a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-792f4cd700f2b5af8fedd7b0249d25b4.png.cache b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-792f4cd700f2b5af8fedd7b0249d25b4.png.cache
index 90c49f3..cb6c307 100644
--- a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-792f4cd700f2b5af8fedd7b0249d25b4.png.cache
+++ b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-792f4cd700f2b5af8fedd7b0249d25b4.png.cache
@@ -1 +1 @@
-{"checksum":"792f4cd700f2b5af8fedd7b0249d25b4","options":{"config":null},"width":694,"height":177}
\ No newline at end of file
+{"checksum":"792f4cd700f2b5af8fedd7b0249d25b4","options":{"size_limit":"4096"},"width":686,"height":174}
\ No newline at end of file
diff --git a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-8a7fb4bb9c84453a4bf01a24558e8026.png.cache b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-8a7fb4bb9c84453a4bf01a24558e8026.png.cache
index 09e2f02..f0c6bf5 100644
--- a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-8a7fb4bb9c84453a4bf01a24558e8026.png.cache
+++ b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-8a7fb4bb9c84453a4bf01a24558e8026.png.cache
@@ -1 +1 @@
-{"checksum":"8a7fb4bb9c84453a4bf01a24558e8026","options":{"config":null},"width":421,"height":423}
\ No newline at end of file
+{"checksum":"8a7fb4bb9c84453a4bf01a24558e8026","options":{"size_limit":"4096"},"width":413,"height":420}
\ No newline at end of file
diff --git a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-9f323b812fd1edc8217715ca0c2ba8e9.png.cache b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-9f323b812fd1edc8217715ca0c2ba8e9.png.cache
index 7e9b92f..99cf2c8 100644
--- a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-9f323b812fd1edc8217715ca0c2ba8e9.png.cache
+++ b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-9f323b812fd1edc8217715ca0c2ba8e9.png.cache
@@ -1 +1 @@
-{"checksum":"9f323b812fd1edc8217715ca0c2ba8e9","options":{"config":null},"width":253,"height":414}
\ No newline at end of file
+{"checksum":"9f323b812fd1edc8217715ca0c2ba8e9","options":{"size_limit":"4096"},"width":247,"height":405}
\ No newline at end of file
diff --git a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-cb8a854642d32c964b17f0a090ef16e3.png.cache b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-cb8a854642d32c964b17f0a090ef16e3.png.cache
index 004d270..fcf8f5f 100644
--- a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-cb8a854642d32c964b17f0a090ef16e3.png.cache
+++ b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-cb8a854642d32c964b17f0a090ef16e3.png.cache
@@ -1 +1 @@
-{"checksum":"cb8a854642d32c964b17f0a090ef16e3","options":{"config":null},"width":450,"height":440}
\ No newline at end of file
+{"checksum":"cb8a854642d32c964b17f0a090ef16e3","options":{"size_limit":"4096"},"width":445,"height":430}
\ No newline at end of file
diff --git a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-e2488cc783b3434076c5a44ee7f19a2b.png.cache b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-e2488cc783b3434076c5a44ee7f19a2b.png.cache
index d3c802c..1bad91c 100644
--- a/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-e2488cc783b3434076c5a44ee7f19a2b.png.cache
+++ b/documentation/jetty-10/operations-guide/.asciidoctor/diagram/diag-e2488cc783b3434076c5a44ee7f19a2b.png.cache
@@ -1 +1 @@
-{"checksum":"e2488cc783b3434076c5a44ee7f19a2b","options":{"config":null},"width":384,"height":423}
\ No newline at end of file
+{"checksum":"e2488cc783b3434076c5a44ee7f19a2b","options":{"size_limit":"4096"},"width":376,"height":420}
\ No newline at end of file
diff --git a/documentation/jetty-10/operations-guide/.asciidoctorconfig b/documentation/jetty-10/operations-guide/.asciidoctorconfig
index 49b2a07..308cdcf 100644
--- a/documentation/jetty-10/operations-guide/.asciidoctorconfig
+++ b/documentation/jetty-10/operations-guide/.asciidoctorconfig
@@ -1,4 +1,5 @@
 // Asciidoctor IDE configuration file.
 // See https://github.com/asciidoctor/asciidoctor-intellij-plugin/wiki/Support-project-specific-configurations
 :experimental:
+:imagesdir: images
 :JETTY_HOME: ../../../../../../../jetty-home/target/jetty-home
diff --git a/documentation/jetty-10/operations-guide/asciidoctor.css b/documentation/jetty-10/operations-guide/asciidoctor.css
index 9d9cc70..65ec3f3 100644
--- a/documentation/jetty-10/operations-guide/asciidoctor.css
+++ b/documentation/jetty-10/operations-guide/asciidoctor.css
@@ -37,7 +37,7 @@
 table{border-collapse:collapse;border-spacing:0}
 *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
 html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
 a:hover{cursor:pointer}
 img,object,embed{max-width:100%;height:auto}
 object,embed{height:100%}
@@ -52,10 +52,8 @@
 img,object,svg{display:inline-block;vertical-align:middle}
 textarea{height:auto;min-height:50px}
 select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.stretch{width:100%}
 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
 a{color:#2156a5;text-decoration:underline;line-height:inherit}
 a:hover,a:focus{color:#1d4b8f}
 a img{border:0}
@@ -86,28 +84,28 @@
 abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
 abbr{text-transform:none}
 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite::before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
 h1{font-size:2.75em}
 h2{font-size:2.3125em}
 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
 h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
 table thead,table tfoot{background:#f7f8f7}
 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
 table tr.even,table tr.alt{background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
 .clearfix::after,.float-group::after{clear:both}
-:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
-:not(pre)>code.nobreak{word-wrap:normal}
-:not(pre)>code.nowrap{white-space:nowrap}
+:not(pre).nobreak{word-wrap:normal}
+:not(pre).nowrap{white-space:nowrap}
+:not(pre).pre-wrap{white-space:pre-wrap}
+:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
 pre>code{display:block}
@@ -172,7 +170,7 @@
 #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
 #content #toc>:first-child{margin-top:0}
 #content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
+#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
 #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
 #content{margin-bottom:.625em}
 .sect1{padding-bottom:.625em}
@@ -195,7 +193,7 @@
 .admonitionblock>table td.icon{text-align:center;width:80px}
 .admonitionblock>table td.icon img{max-width:none}
 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
 .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
 .exampleblock>.content>:first-child{margin-top:0}
@@ -205,7 +203,7 @@
 .sidebarblock>:last-child{margin-bottom:0}
 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
 .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
@@ -250,22 +248,21 @@
 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
-.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
-table.tableblock{max-width:100%;border-collapse:separate}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
 p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
-td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
-table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
-table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
-table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
-table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
-table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
-table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.grid-all>*>tr>*{border-width:1px}
+table.grid-cols>*>tr>*{border-width:0 1px}
+table.grid-rows>*>tr>*{border-width:1px 0}
 table.frame-all{border-width:1px}
+table.frame-ends{border-width:1px 0}
 table.frame-sides{border-width:0 1px}
-table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
+table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
+table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
+table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
 table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
 th.halign-left,td.halign-left{text-align:left}
 th.halign-right,td.halign-right{text-align:right}
@@ -274,7 +271,7 @@
 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
 th.valign-middle,td.valign-middle{vertical-align:middle}
 table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th{background:#f7f8f7}
 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
 p.tableblock>code:only-child{background:none;padding:0}
 p.tableblock{font-size:1em}
@@ -303,6 +300,7 @@
 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+td.hdlist2{word-wrap:anywhere}
 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
 .colist td:not([class]):first-child img{max-width:none}
@@ -375,7 +373,7 @@
 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
 .conum[data-value] *{color:#fff!important}
 .conum[data-value]+b{display:none}
 .conum[data-value]::after{content:attr(data-value)}
@@ -402,6 +400,7 @@
 svg{max-width:100%}
 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#header,#content,#footnotes,#footer{max-width:none}
 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
 body.book #header{text-align:center}
diff --git a/documentation/jetty-10/operations-guide/images/diag-0f37d1d5b12f280e1587df6f3d528998.png b/documentation/jetty-10/operations-guide/images/diag-0f37d1d5b12f280e1587df6f3d528998.png
new file mode 100644
index 0000000..cbaac46
--- /dev/null
+++ b/documentation/jetty-10/operations-guide/images/diag-0f37d1d5b12f280e1587df6f3d528998.png
Binary files differ
diff --git a/documentation/jetty-10/operations-guide/images/diag-176305f848d18dc8b0c4ef7bd331705d.png b/documentation/jetty-10/operations-guide/images/diag-176305f848d18dc8b0c4ef7bd331705d.png
new file mode 100644
index 0000000..c8cd925
--- /dev/null
+++ b/documentation/jetty-10/operations-guide/images/diag-176305f848d18dc8b0c4ef7bd331705d.png
Binary files differ
diff --git a/documentation/jetty-10/operations-guide/images/diag-2830e38460d606111888c5df2a645163.png b/documentation/jetty-10/operations-guide/images/diag-2830e38460d606111888c5df2a645163.png
new file mode 100644
index 0000000..4369313
--- /dev/null
+++ b/documentation/jetty-10/operations-guide/images/diag-2830e38460d606111888c5df2a645163.png
Binary files differ
diff --git a/documentation/jetty-10/operations-guide/images/diag-70817cc5c7137abc9759cdcd3edbb658.png b/documentation/jetty-10/operations-guide/images/diag-70817cc5c7137abc9759cdcd3edbb658.png
new file mode 100644
index 0000000..2f67b61
--- /dev/null
+++ b/documentation/jetty-10/operations-guide/images/diag-70817cc5c7137abc9759cdcd3edbb658.png
Binary files differ
diff --git a/documentation/jetty-10/operations-guide/images/diag-7387dfbb6f9fb9cfa951a697aca488a8.png b/documentation/jetty-10/operations-guide/images/diag-7387dfbb6f9fb9cfa951a697aca488a8.png
new file mode 100644
index 0000000..84c7c97
--- /dev/null
+++ b/documentation/jetty-10/operations-guide/images/diag-7387dfbb6f9fb9cfa951a697aca488a8.png
Binary files differ
diff --git a/documentation/jetty-10/operations-guide/images/diag-792f4cd700f2b5af8fedd7b0249d25b4.png b/documentation/jetty-10/operations-guide/images/diag-792f4cd700f2b5af8fedd7b0249d25b4.png
new file mode 100644
index 0000000..dba400e
--- /dev/null
+++ b/documentation/jetty-10/operations-guide/images/diag-792f4cd700f2b5af8fedd7b0249d25b4.png
Binary files differ
diff --git a/documentation/jetty-10/operations-guide/images/diag-8a7fb4bb9c84453a4bf01a24558e8026.png b/documentation/jetty-10/operations-guide/images/diag-8a7fb4bb9c84453a4bf01a24558e8026.png
new file mode 100644
index 0000000..37859ca
--- /dev/null
+++ b/documentation/jetty-10/operations-guide/images/diag-8a7fb4bb9c84453a4bf01a24558e8026.png
Binary files differ
diff --git a/documentation/jetty-10/operations-guide/images/diag-9f323b812fd1edc8217715ca0c2ba8e9.png b/documentation/jetty-10/operations-guide/images/diag-9f323b812fd1edc8217715ca0c2ba8e9.png
new file mode 100644
index 0000000..6f6202a
--- /dev/null
+++ b/documentation/jetty-10/operations-guide/images/diag-9f323b812fd1edc8217715ca0c2ba8e9.png
Binary files differ
diff --git a/documentation/jetty-10/operations-guide/images/diag-cb8a854642d32c964b17f0a090ef16e3.png b/documentation/jetty-10/operations-guide/images/diag-cb8a854642d32c964b17f0a090ef16e3.png
new file mode 100644
index 0000000..0bfa71e
--- /dev/null
+++ b/documentation/jetty-10/operations-guide/images/diag-cb8a854642d32c964b17f0a090ef16e3.png
Binary files differ
diff --git a/documentation/jetty-10/operations-guide/images/diag-e2488cc783b3434076c5a44ee7f19a2b.png b/documentation/jetty-10/operations-guide/images/diag-e2488cc783b3434076c5a44ee7f19a2b.png
new file mode 100644
index 0000000..c182024
--- /dev/null
+++ b/documentation/jetty-10/operations-guide/images/diag-e2488cc783b3434076c5a44ee7f19a2b.png
Binary files differ
diff --git a/documentation/jetty-10/operations-guide/images/jmc-server-dump.png b/documentation/jetty-10/operations-guide/images/jmc-server-dump.png
new file mode 100644
index 0000000..33cd929
--- /dev/null
+++ b/documentation/jetty-10/operations-guide/images/jmc-server-dump.png
Binary files differ
diff --git a/documentation/jetty-10/operations-guide/index.html b/documentation/jetty-10/operations-guide/index.html
index cebe178..7340dbd 100644
--- a/documentation/jetty-10/operations-guide/index.html
+++ b/documentation/jetty-10/operations-guide/index.html
@@ -4,11 +4,12 @@
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 2.0.10">
+<meta name="generator" content="Asciidoctor 2.0.15">
 <title>Eclipse Jetty: Operations Guide</title>
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
 <link rel="stylesheet" href="./asciidoctor.css">
 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+<link rel="stylesheet" href="./coderay-asciidoctor.css">
 <link rel="stylesheet" href="../styles.css">
 <link rel="stylesheet" href="../toc.css">
 <script src="../toc.js"></script>
@@ -19,8 +20,8 @@
 <div class="details">
 <span id="author" class="author">Jetty Developers</span><br>
 <span id="email" class="email"><a href="mailto:jetty-dev@eclipse.org">jetty-dev@eclipse.org</a></span><br>
-<span id="revnumber">version 10.0.6,</span>
-<span id="revdate">2021-06-29</span>
+<span id="revnumber">version 10.0.7,</span>
+<span id="revdate">2021-10-06</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Operations Guide</div>
@@ -114,7 +115,8 @@
 <li><a href="#og-modules-custom-create">Creating a New Module</a></li>
 </ul>
 </li>
-<li><a href="#og-modules-standard">Standard Modules</a>
+<li><a href="#og-modules-standard">Standard Modules</a></li>
+<li><a href="#og-module-alpn">Module <code>alpn</code></a>
 <ul class="sectlevel4">
 <li><a href="#og-module-bytebufferpool">Module <code>bytebufferpool</code></a></li>
 <li><a href="#og-module-deploy">Module <code>deploy</code></a></li>
@@ -128,6 +130,7 @@
 <li><a href="#og-module-http2c">Module <code>http2c</code></a></li>
 <li><a href="#og-module-http-forwarded">Module <code>http-forwarded</code></a></li>
 <li><a href="#og-module-https">Module <code>https</code></a></li>
+<li><a href="#og-module-jmx-remote">Module <code>jmx-remote</code></a></li>
 <li><a href="#og-module-server">Module <code>server</code></a>
 <ul class="sectlevel5">
 <li><a href="#og-module-server-http-config">HTTP Configuration Properties</a></li>
@@ -350,12 +353,12 @@
 </ul>
 </li>
 <li><a href="#og-jsp">Java Server Pages</a>
-<ul class="sectlevel4">
-<li><a href="#og-configuration-of-the-jsp-servlet">Configuration of the JSP servlet</a></li>
+<ul class="sectlevel3">
+<li><a href="#og-configuration-of-the-jsp-servlet">Configuration of the JSP Servlet</a></li>
 </ul>
 </li>
 <li><a href="#og-javaserver-pages-standard-tag-libraries">JavaServer Pages Standard Tag Libraries</a></li>
-<li><a href="#og-javaserver-faces-taglibs">JavaServer Faces Taglibs</a></li>
+<li><a href="#og-javaserver-faces-taglibs">JavaServer Faces TagLibs</a></li>
 <li><a href="#og-jndi">JNDI</a>
 <ul class="sectlevel3">
 <li><a href="#og-declaring-resources">Declaring resources</a>
@@ -395,6 +398,22 @@
 </li>
 </ul>
 </li>
+<li><a href="#og-jaspi">JASPI</a>
+<ul class="sectlevel3">
+<li><a href="#og-jaspi-configuration">Configuration</a>
+<ul class="sectlevel4">
+<li><a href="#og-jaspi-module">The <code>jaspi</code> module</a></li>
+<li><a href="#og-jaspi-xml">Configure JASPI</a>
+<ul class="sectlevel5">
+<li><a href="#og-jaspi-demo">JASPI Demo</a></li>
+</ul>
+</li>
+<li><a href="#og-integration-with-jetty-authentication-mechanisms">Integration with Jetty Authentication Mechanisms</a></li>
+<li><a href="#og-replacing-the-jetty-defaultauthconfigfactory">Replacing the Jetty DefaultAuthConfigFactory</a></li>
+</ul>
+</li>
+</ul>
+</li>
 <li><a href="#og-jmx">Eclipse Jetty Monitoring &amp; Management</a>
 <ul class="sectlevel3">
 <li><a href="#og-jmx-local">Enabling Local JMX Support</a></li>
@@ -554,7 +573,7 @@
 <div class="sect3">
 <h4 id="og-begin-install"><a class="anchor" href="#og-begin-install"></a><a class="link" href="#og-begin-install">Installing Jetty</a></h4>
 <div class="paragraph">
-<p>After the download, unpacking Eclipse Jetty will extract the files into a directory called <code>jetty-home-VERSION</code>, where <code>VERSION</code> is the version that you downloaded, for example <code>10.0.6</code>, so that the directory is called <code>jetty-home-10.0.6</code>.</p>
+<p>After the download, unpacking Eclipse Jetty will extract the files into a directory called <code>jetty-home-VERSION</code>, where <code>VERSION</code> is the version that you downloaded, for example <code>10.0.7</code>, so that the directory is called <code>jetty-home-10.0.7</code>.</p>
 </div>
 <div class="paragraph">
 <p>Unpack Eclipse Jetty compressed file in a convenient location, for example under <code>/opt</code>.</p>
@@ -675,9 +694,9 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 10:43:34.949:</strong>INFO :oejs.Server:main: jetty-10.0.6; built: 2021-06-29T15:28:56.259Z; git: 37e7731b4b142a882d73974ff3bec78d621bd674; jvm 11.0.9+11
-<strong>2021-06-29 10:43:35.018:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@4f6efd66<mark>{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}</mark>
-<strong>2021-06-29 10:43:35.041:</strong>INFO :oejs.Server:main: Started Server@24fcf36f{STARTING}[10.0.6,sto=5000] @1051ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 14:47:58.474:</strong>INFO :oejs.Server:main: jetty-10.0.7; built: 2021-10-06T19:34:02.766Z; git: da8a4553af9dd84080931fa0f8c678cd2d60f3d9; jvm 17+35
+<strong>2021-10-06 14:47:58.526:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@2fd05ff<mark>{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}</mark>
+<strong>2021-10-06 14:47:58.542:</strong>INFO :oejs.Server:main: Started Server@48524010{STARTING}[10.0.7,sto=5000] @800ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -763,9 +782,9 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 10:43:36.537:</strong>INFO :oejs.Server:main: jetty-10.0.6; built: 2021-06-29T15:28:56.259Z; git: 37e7731b4b142a882d73974ff3bec78d621bd674; jvm 11.0.9+11
-<strong>2021-06-29 10:43:36.606:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@46cdf8bd<mark>{HTTP/1.1, (http/1.1)}{0.0.0.0:9999}</mark>
-<strong>2021-06-29 10:43:36.631:</strong>INFO :oejs.Server:main: Started Server@24fcf36f{STARTING}[10.0.6,sto=5000] @1080ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 14:47:59.768:</strong>INFO :oejs.Server:main: jetty-10.0.7; built: 2021-10-06T19:34:02.766Z; git: da8a4553af9dd84080931fa0f8c678cd2d60f3d9; jvm 17+35
+<strong>2021-10-06 14:47:59.820:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@65d07359<mark>{HTTP/1.1, (http/1.1)}{0.0.0.0:9999}</mark>
+<strong>2021-10-06 14:47:59.835:</strong>INFO :oejs.Server:main: Started Server@48524010{STARTING}[10.0.7,sto=5000] @795ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -933,13 +952,13 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 10:43:40.003:</strong>INFO :oejs.Server:main: jetty-10.0.6; built: 2021-06-29T15:28:56.259Z; git: 37e7731b4b142a882d73974ff3bec78d621bd674; jvm 11.0.9+11
-<strong>2021-06-29 10:43:40.073:</strong>INFO :oejdp.ScanningAppProvider:main: Deployment monitor [file:///path/to/jetty.base/webapps/]
-<strong>2021-06-29 10:43:40.214:</strong>INFO :oejw.StandardDescriptorProcessor:main: NO JSP Support for /demo-simple, did not find org.eclipse.jetty.jsp.JettyJspServlet
-<strong>2021-06-29 10:43:40.230:</strong>INFO :oejss.DefaultSessionIdManager:main: Session workerName=node0
-<mark><strong>2021-06-29 10:43:40.277:</strong>INFO :oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@4bd31064{Simple Web Application,/demo-simple,file:///path/to/jetty.base/work/jetty-0_0_0_0-8080-demo-simple_war-_demo-simple-any-/webapp/,AVAILABLE}{/path/to/jetty.base/webapps/demo-simple.war}</mark>
-<strong>2021-06-29 10:43:40.304:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@4f23351d{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
-<strong>2021-06-29 10:43:40.334:</strong>INFO :oejs.Server:main: Started Server@5b799640{STARTING}[10.0.6,sto=5000] @1372ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 14:48:02.593:</strong>INFO :oejs.Server:main: jetty-10.0.7; built: 2021-10-06T19:34:02.766Z; git: da8a4553af9dd84080931fa0f8c678cd2d60f3d9; jvm 17+35
+<strong>2021-10-06 14:48:02.647:</strong>INFO :oejdp.ScanningAppProvider:main: Deployment monitor [file:///path/to/jetty.base/webapps/]
+<strong>2021-10-06 14:48:02.774:</strong>INFO :oejw.StandardDescriptorProcessor:main: NO JSP Support for /demo-simple, did not find org.eclipse.jetty.jsp.JettyJspServlet
+<strong>2021-10-06 14:48:02.785:</strong>INFO :oejss.DefaultSessionIdManager:main: Session workerName=node0
+<mark><strong>2021-10-06 14:48:02.818:</strong>INFO :oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@610f7aa{Simple Web Application,/demo-simple,file:///path/to/jetty.base/work/jetty-0_0_0_0-8080-demo-simple_war-_demo-simple-any-/webapp/,AVAILABLE}{/path/to/jetty.base/webapps/demo-simple.war}</mark>
+<strong>2021-10-06 14:48:02.831:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@72aa181d{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
+<strong>2021-10-06 14:48:02.849:</strong>INFO :oejs.Server:main: Started Server@10e31a9a{STARTING}[10.0.7,sto=5000] @1099ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -975,7 +994,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-cb8a854642d32c964b17f0a090ef16e3.png" alt="Diagram" width="450" height="440">
+<img src="images/diag-cb8a854642d32c964b17f0a090ef16e3.png" alt="Diagram" width="445" height="430">
 </div>
 </div>
 <div class="paragraph">
@@ -1552,11 +1571,25 @@
 <p>Since the module defines an <code>[exec]</code> section, it will fork <em>another</em> JVM when Jetty is started.</p>
 </div>
 <div class="paragraph">
-<p>This means that when you start Jetty, there will be <em>two</em> JVMs running: one spawned by you when you run <code>java -jar $JETTY_HOME/start.jar</code>, and another spawned by the Jetty start mechanism with the JVM options you specified (that cannot be applied to an already running JVM).</p>
+<p>This means that when you start Jetty, there will be <em>two</em> JVMs running: one created by you when you run <code>java -jar $JETTY_HOME/start.jar</code>, and another forked by the Jetty start mechanism with the JVM options you specified (that cannot be applied to an already running JVM).</p>
 </div>
 <div class="paragraph">
 <p>Again, you can <a href="#og-start-configure-dry-run">display the JVM command line</a> to verify that it is correct.</p>
 </div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The second JVM forked by the Jetty start mechanism when one of the modules requires forking, for example a module that contains an <code>[exec]</code> section, may not be desirable, and may be avoided as explained in <a href="#og-start-configure-dry-run">this section</a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
 </div>
 <div class="sect4">
 <h5 id="og-start-configure-display"><a class="anchor" href="#og-start-configure-display"></a><a class="link" href="#og-start-configure-display">Displaying the Configuration</a></h5>
@@ -1593,22 +1626,22 @@
 Java Environment:
 -----------------
  java.home = /path/to/java.home (null)
- java.vm.vendor = AdoptOpenJDK (null)
- java.vm.version = 11.0.9+11 (null)
+ java.vm.vendor = Eclipse Adoptium (null)
+ java.vm.version = 17+35 (null)
  java.vm.name = OpenJDK 64-Bit Server VM (null)
- java.vm.info = mixed mode (null)
+ java.vm.info = mixed mode, sharing (null)
  java.runtime.name = OpenJDK Runtime Environment (null)
- java.runtime.version = 11.0.9+11 (null)
+ java.runtime.version = 17+35 (null)
  java.io.tmpdir = /path/to/jetty.base/work (null)
  user.dir = /path/to/jetty.base (null)
  user.language = en (null)
  user.country = US (null)
 
 Jetty Environment:
------------------
- jetty.version = 10.0.6
- jetty.tag.version = jetty-10.0.6
- jetty.build = 37e7731b4b142a882d73974ff3bec78d621bd674
+------------------
+ jetty.version = 10.0.7
+ jetty.tag.version = jetty-10.0.7
+ jetty.build = da8a4553af9dd84080931fa0f8c678cd2d60f3d9
  jetty.home = /path/to/jetty.home
  jetty.base = /path/to/jetty.base
 
@@ -1618,8 +1651,8 @@
  ${jetty.base} -&gt; /path/to/jetty.base
  ${jetty.home} -&gt; /path/to/jetty.home
 
-JVM Arguments:
---------------
+Forked JVM Arguments:
+---------------------
  -Xmx1g
  -Xlog:gc*,gc+stats=off:file=logs/gc.log:time,level,tags
 
@@ -1629,11 +1662,11 @@
 
 Properties:
 -----------
- java.version = 11.0.9
- java.version.major = 11
- java.version.micro = 9
+ java.version = 17
+ java.version.major = 17
+ java.version.micro = 0
  java.version.minor = 0
- java.version.platform = 11
+ java.version.platform = 17
  jetty.base = /path/to/jetty.base
  jetty.base.uri = file:///path/to/jetty.base
  jetty.home = /path/to/jetty.home
@@ -1641,7 +1674,7 @@
  jetty.webapp.addServerClasses = org.eclipse.jetty.logging.,${jetty.home.uri}/lib/logging/,org.slf4j.
  postgresql-version = 42.2.18
  runtime.feature.alpn = true
- slf4j.version = 2.0.0-alpha1
+ slf4j.version = 2.0.0-alpha5
 
 Jetty Server Classpath:
 -----------------------
@@ -1649,14 +1682,14 @@
 Note: order presented here is how they would appear on the classpath.
       changes to the --module=name command line options will be reflected here.
  0:                    (dir) | ${jetty.base}/resources
- 1:             2.0.0-alpha1 | ${jetty.home}/lib/logging/slf4j-api-2.0.0-alpha1.jar
- 2:                   10.0.6 | ${jetty.home}/lib/logging/jetty-slf4j-impl-10.0.6.jar
+ 1:             2.0.0-alpha5 | ${jetty.home}/lib/logging/slf4j-api-2.0.0-alpha5.jar
+ 2:                   10.0.7 | ${jetty.home}/lib/logging/jetty-slf4j-impl-10.0.7.jar
  3:                    4.0.6 | ${jetty.home}/lib/jetty-servlet-api-4.0.6.jar
- 4:                   10.0.6 | ${jetty.home}/lib/jetty-http-10.0.6.jar
- 5:                   10.0.6 | ${jetty.home}/lib/jetty-server-10.0.6.jar
- 6:                   10.0.6 | ${jetty.home}/lib/jetty-xml-10.0.6.jar
- 7:                   10.0.6 | ${jetty.home}/lib/jetty-util-10.0.6.jar
- 8:                   10.0.6 | ${jetty.home}/lib/jetty-io-10.0.6.jar
+ 4:                   10.0.7 | ${jetty.home}/lib/jetty-http-10.0.7.jar
+ 5:                   10.0.7 | ${jetty.home}/lib/jetty-server-10.0.7.jar
+ 6:                   10.0.7 | ${jetty.home}/lib/jetty-xml-10.0.7.jar
+ 7:                   10.0.7 | ${jetty.home}/lib/jetty-util-10.0.7.jar
+ 8:                   10.0.7 | ${jetty.home}/lib/jetty-io-10.0.7.jar
  9:                  42.2.18 | ${jetty.base}/lib/postgresql-42.2.18.jar
 
 Jetty Active XMLs:
@@ -1664,8 +1697,7 @@
  ${jetty.home}/etc/jetty-bytebufferpool.xml
  ${jetty.home}/etc/jetty-threadpool.xml
  ${jetty.home}/etc/jetty.xml
- ${jetty.home}/etc/jetty-http.xml
- ${jetty.home}/etc/jetty-halt.xml</code></pre>
+ ${jetty.home}/etc/jetty-http.xml</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1705,8 +1737,68 @@
 <div class="paragraph">
 <p>To start Jetty without forking a second JVM, the <code>--dry-run</code> option can be used to generate a command line that is then executed so that starting Jetty only spawns one JVM.</p>
 </div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+You can use the <code>--dry-run</code> option as explained below to avoid forking a second JVM when using modules that have the <code>[exec]</code> section, or the <code>--exec</code> option, or when using the <code>--jpms</code> option.
+</td>
+</tr>
+</table>
+</div>
 <div class="paragraph">
-<p>The <code>--dry-run</code> option is quite flexible and below you can find a few examples of how to use it to generate scripts or to create an arguments file that can be passed to the <code>java</code> executable.</p>
+<p>For example, using the <code>--dry-run</code> option with the <code>jvm.mod</code> introduced in <a href="#og-start-configure-custom-module-exec">this section</a> produces the following command line:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ java -jar $JETTY_HOME/start.jar --dry-run</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight nowrap"><code>/path/to/java.home/bin/java \
+-Djava.io.tmpdir=/path/to/jetty.base/work \
+-Djetty.home=/path/to/jetty.home \
+-Djetty.base=/path/to/jetty.base \
+-Xmx1g \
+-Xlog:gc*,gc+stats=off:file=logs/gc.log:time,level,tags \
+--class-path \
+/path/to/jetty.base/resources:/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha5.jar:/path/to/jetty.home/lib/logging/jetty-slf4j-impl-10.0.7.jar:/path/to/jetty.home/lib/jetty-servlet-api-4.0.6.jar:/path/to/jetty.home/lib/jetty-http-10.0.7.jar:/path/to/jetty.home/lib/jetty-server-10.0.7.jar:/path/to/jetty.home/lib/jetty-xml-10.0.7.jar:/path/to/jetty.home/lib/jetty-util-10.0.7.jar:/path/to/jetty.home/lib/jetty-io-10.0.7.jar \
+org.eclipse.jetty.xml.XmlConfiguration \
+java.version=17 \
+java.version.major=17 \
+java.version.micro=0 \
+java.version.minor=0 \
+java.version.platform=17 \
+jetty.base=/path/to/jetty.base \
+jetty.base.uri=file:///path/to/jetty.base \
+jetty.home=/path/to/jetty.home \
+jetty.home.uri=file:///path/to/jetty.home \
+jetty.webapp.addServerClasses=org.eclipse.jetty.logging.,${jetty.home.uri}/lib/logging/,org.slf4j. \
+runtime.feature.alpn=true \
+slf4j.version=2.0.0-alpha5 \
+/path/to/jetty.home/etc/jetty-bytebufferpool.xml \
+/path/to/jetty.home/etc/jetty-threadpool.xml \
+/path/to/jetty.home/etc/jetty.xml \
+/path/to/jetty.home/etc/jetty-http.xml</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can then run the generated command line.</p>
+</div>
+<div class="paragraph">
+<p>For example, in the Linux <code>bash</code> shell you can run it by wrapping it into <code>$(...)</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ $(java -jar $JETTY_HOME/start.jar --dry-run)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The <code>--dry-run</code> option is quite flexible and below you can find a few examples of how to use it to avoid forking a second JVM, or generating scripts or creating an arguments file that can be passed to (a possibly alternative) <code>java</code> executable.</p>
 </div>
 <div class="paragraph">
 <p>To display the <code>java</code> executable used to start Jetty:</p>
@@ -1750,14 +1842,14 @@
 <div class="content">
 <pre class="CodeRay highlight nowrap"><code>--class-path \
 /path/to/jetty.base/resources:\
-/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha1.jar:\
-/path/to/jetty.home/lib/logging/jetty-slf4j-impl-10.0.6.jar:\
+/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha5.jar:\
+/path/to/jetty.home/lib/logging/jetty-slf4j-impl-10.0.7.jar:\
 /path/to/jetty.home/lib/jetty-servlet-api-4.0.6.jar:\
-/path/to/jetty.home/lib/jetty-http-10.0.6.jar:\
-/path/to/jetty.home/lib/jetty-server-10.0.6.jar:\
-/path/to/jetty.home/lib/jetty-xml-10.0.6.jar:\
-/path/to/jetty.home/lib/jetty-util-10.0.6.jar:\
-/path/to/jetty.home/lib/jetty-io-10.0.6.jar</code></pre>
+/path/to/jetty.home/lib/jetty-http-10.0.7.jar:\
+/path/to/jetty.home/lib/jetty-server-10.0.7.jar:\
+/path/to/jetty.home/lib/jetty-xml-10.0.7.jar:\
+/path/to/jetty.home/lib/jetty-util-10.0.7.jar:\
+/path/to/jetty.home/lib/jetty-io-10.0.7.jar</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1771,14 +1863,14 @@
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight nowrap"><code>--module-path \
-/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha1.jar:\
-/path/to/jetty.home/lib/logging/jetty-slf4j-impl-10.0.6.jar:\
+/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha5.jar:\
+/path/to/jetty.home/lib/logging/jetty-slf4j-impl-10.0.7.jar:\
 /path/to/jetty.home/lib/jetty-servlet-api-4.0.6.jar:\
-/path/to/jetty.home/lib/jetty-http-10.0.6.jar:\
-/path/to/jetty.home/lib/jetty-server-10.0.6.jar:\
-/path/to/jetty.home/lib/jetty-xml-10.0.6.jar:\
-/path/to/jetty.home/lib/jetty-util-10.0.6.jar:\
-/path/to/jetty.home/lib/jetty-io-10.0.6.jar \
+/path/to/jetty.home/lib/jetty-http-10.0.7.jar:\
+/path/to/jetty.home/lib/jetty-server-10.0.7.jar:\
+/path/to/jetty.home/lib/jetty-xml-10.0.7.jar:\
+/path/to/jetty.home/lib/jetty-util-10.0.7.jar:\
+/path/to/jetty.home/lib/jetty-io-10.0.7.jar \
 --class-path \
 /path/to/jetty.base/resources \
 --add-modules \
@@ -1825,23 +1917,22 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code>java.version=11.0.9 \
-java.version.major=11 \
-java.version.micro=9 \
+<pre class="CodeRay highlight nowrap"><code>java.version=17 \
+java.version.major=17 \
+java.version.micro=0 \
 java.version.minor=0 \
-java.version.platform=11 \
+java.version.platform=17 \
 jetty.base=/path/to/jetty.base \
 jetty.base.uri=file:///path/to/jetty.base \
 jetty.home=/path/to/jetty.home \
 jetty.home.uri=file:///path/to/jetty.home \
 jetty.webapp.addServerClasses=org.eclipse.jetty.logging.,${jetty.home.uri}/lib/logging/,org.slf4j. \
 runtime.feature.alpn=true \
-slf4j.version=2.0.0-alpha1 \
+slf4j.version=2.0.0-alpha5 \
 /path/to/jetty.home/etc/jetty-bytebufferpool.xml \
 /path/to/jetty.home/etc/jetty-threadpool.xml \
 /path/to/jetty.home/etc/jetty.xml \
-/path/to/jetty.home/etc/jetty-http.xml \
-/path/to/jetty.home/etc/jetty-halt.xml</code></pre>
+/path/to/jetty.home/etc/jetty-http.xml</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1857,7 +1948,15 @@
 </div>
 </div>
 <div class="paragraph">
-<p>Alternatively, they can be combined in a shell script:</p>
+<p>Using <code>--dry-run=opts,path,main,args</code> can be used to avoid that the Jetty start mechanism forks a second JVM when using modules that require forking:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ java $(java -jar $JETTY_HOME/start.jar --dry-run=opts,path,main,args)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The output of different <code>--dry-run</code> executions can be creatively combined in a shell script:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1905,7 +2004,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-0f37d1d5b12f280e1587df6f3d528998.png" alt="Diagram" width="363" height="259">
+<img src="images/diag-0f37d1d5b12f280e1587df6f3d528998.png" alt="Diagram" width="351" height="245">
 </div>
 </div>
 <div class="paragraph">
@@ -1918,7 +2017,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-176305f848d18dc8b0c4ef7bd331705d.png" alt="Diagram" width="381" height="281">
+<img src="images/diag-176305f848d18dc8b0c4ef7bd331705d.png" alt="Diagram" width="374" height="267">
 </div>
 </div>
 <div class="paragraph">
@@ -2160,10 +2259,10 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><mark>STOP.KEY=1v5k0wegvooao</mark>
-<strong>2021-06-29 10:43:59.239:</strong>INFO :oejs.Server:main: jetty-10.0.6; built: 2021-06-29T15:28:56.259Z; git: 37e7731b4b142a882d73974ff3bec78d621bd674; jvm 11.0.9+11
-<strong>2021-06-29 10:43:59.355:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@69e153c5{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
-<strong>2021-06-29 10:43:59.386:</strong>INFO :oejs.Server:main: Started Server@10d307f1{STARTING}[10.0.6,sto=5000] @1139ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><mark>STOP.KEY=2wb4vri7f2o0</mark>
+<strong>2021-10-06 14:48:18.126:</strong>INFO :oejs.Server:main: jetty-10.0.7; built: 2021-10-06T19:34:02.766Z; git: da8a4553af9dd84080931fa0f8c678cd2d60f3d9; jvm 17+35
+<strong>2021-10-06 14:48:18.168:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@bef2d72{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
+<strong>2021-10-06 14:48:18.180:</strong>INFO :oejs.Server:main: Started Server@6295d394{STARTING}[10.0.7,sto=5000] @823ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -3049,6 +3148,9 @@
 <p>This is necessary because JVM options such as <code>-Xmx</code> (that specifies the max JVM heap size) cannot be changed in a running JVM.
 For an example, see <a href="#og-start-configure-custom-module-exec">this section</a>.</p>
 </div>
+<div class="paragraph">
+<p>You can avoid that the Jetty start mechanism forks the second JVM, as explained in <a href="#og-start-configure-dry-run">this section</a>.</p>
+</div>
 </div>
 <div class="sect4">
 <h5 id="og-modules-directive-jpms"><a class="anchor" href="#og-modules-directive-jpms"></a><a class="link" href="#og-modules-directive-jpms">[jpms]</a></h5>
@@ -3380,7 +3482,7 @@
 This custom auditing component should measure the HTTP request processing times and record them (how they are recorded is irrelevant here&#8201;&#8212;&#8201;could be in a local log file or sent via network to an external service).</p>
 </div>
 <div class="paragraph">
-<p>The Jetty libraries already provide a way to measure HTTP request processing times via <a href="../programming-guide/index.html#pg-server-http-channel-events"><code>HttpChannel</code> events</a>: you write a custom component that implements the <code>HttpChannel.Listener</code> interface and add it as a bean to the <code>ServerConnector</code> that receives the HTTP requests.</p>
+<p>The Jetty libraries already provide a way to measure HTTP request processing times via <a href="../programming-guide/index.html#pg-server-http-channel-events"><code>HttpChannel</code> events</a>: you write a custom component that implements the <code>HttpChannel.Listener</code> interface and add it as a bean to the server <code>Connector</code> that receives the HTTP requests.</p>
 </div>
 <div class="paragraph">
 <p>The steps to create a Jetty module are similar to those necessary to <a href="#og-modules-custom-modify">modify an existing module</a>:</p>
@@ -3541,6 +3643,30 @@
 </div>
 <div class="sect3">
 <h4 id="og-modules-standard"><a class="anchor" href="#og-modules-standard"></a><a class="link" href="#og-modules-standard">Standard Modules</a></h4>
+
+</div>
+<div class="sect3">
+<h4 id="og-module-alpn"><a class="anchor" href="#og-module-alpn"></a><a class="link" href="#og-module-alpn">Module <code>alpn</code></a></h4>
+<div class="paragraph">
+<p>The <code>alpn</code> module enables support for the ALPN negotiation mechanism of the TLS protocol.</p>
+</div>
+<div class="paragraph">
+<p>You can configure the list of application protocols negotiated by the ALPN mechanism, as well as the default protocol to use if the ALPN negotiation fails (for example, the client does not support ALPN).</p>
+</div>
+<div class="paragraph">
+<p>The module properties are:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>## Specifies the ordered list of application protocols supported by the server.
+## The default list is specified by the list of the protocol modules that have
+## been enabled, and the order is specified by the module dependencies.
+# jetty.alpn.protocols=h2,http/1.1
+
+## Specifies the protocol to use when the ALPN negotiation fails.
+# jetty.alpn.defaultProtocol=http/1.1</pre>
+</div>
+</div>
 <div class="sect4">
 <h5 id="og-module-bytebufferpool"><a class="anchor" href="#og-module-bytebufferpool"></a><a class="link" href="#og-module-bytebufferpool">Module <code>bytebufferpool</code></a></h5>
 <div class="paragraph">
@@ -3710,6 +3836,9 @@
 ## Whether to enable the SO_REUSEADDR socket option.
 # jetty.http.reuseAddress=true
 
+## Whether to enable the SO_REUSEPORT socket option.
+# jetty.http.reusePort=false
+
 ## Whether to enable the TCP_NODELAY socket option on accepted sockets.
 # jetty.http.acceptedTcpNoDelay=true
 
@@ -3815,7 +3944,7 @@
 
 ## Specifies the maximum number of bad frames and pings per second,
 ## after which a session is closed to avoid denial of service attacks.
-# jetty.http2.rateControl.maxEventsPerSecond=20</pre>
+# jetty.http2.rateControl.maxEventsPerSecond=50</pre>
 </div>
 </div>
 <div class="paragraph">
@@ -3842,18 +3971,18 @@
 <pre>## Specifies the maximum number of concurrent requests per session.
 # jetty.http2c.maxConcurrentStreams=128
 
-  ## Specifies the initial stream receive window (client to server) in bytes.
+## Specifies the initial stream receive window (client to server) in bytes.
 # jetty.http2c.initialStreamRecvWindow=524288
 
 ## Specifies the initial session receive window (client to server) in bytes.
-# jetty.http2.initialSessionRecvWindow=1232896
+# jetty.http2c.initialSessionRecvWindow=1232896
 
 ## Specifies the maximum number of keys in all SETTINGS frames received by a session.
-# jetty.http2.maxSettingsKeys=64
+# jetty.http2c.maxSettingsKeys=64
 
 ## Specifies the maximum number of bad frames and pings per second,
 ## after which a session is closed to avoid denial of service attacks.
-# jetty.http2.rateControl.maxEventsPerSecond=20</pre>
+# jetty.http2c.rateControl.maxEventsPerSecond=50</pre>
 </div>
 </div>
 <div class="paragraph">
@@ -3955,6 +4084,55 @@
 </div>
 </div>
 <div class="sect4">
+<h5 id="og-module-jmx-remote"><a class="anchor" href="#og-module-jmx-remote"></a><a class="link" href="#og-module-jmx-remote">Module <code>jmx-remote</code></a></h5>
+<div class="paragraph">
+<p>The <code>jmx-remote</code> module provides remote access to JMX clients.</p>
+</div>
+<div class="paragraph">
+<p>The module properties to configure remote JMX connector are:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>## The host/address to bind the RMI server to.
+# jetty.jmxremote.rmiserverhost=localhost
+
+## The port the RMI server listens to (0 means a random port is chosen).
+# jetty.jmxremote.rmiserverport=1099
+
+## The host/address to bind the RMI registry to.
+# jetty.jmxremote.rmiregistryhost=localhost
+
+## The port the RMI registry listens to.
+# jetty.jmxremote.rmiregistryport=1099
+
+## The host name exported in the RMI stub.
+-Djava.rmi.server.hostname=localhost</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The system property <code>java.rmi.server.hostname</code> is specified with the usual notation, prepending a <code>-D</code> in front of the system property name.</p>
+</div>
+<div class="paragraph">
+<p>The system property <code>java.rmi.server.hostname</code> is uncommented because it is necessary in the default configuration&#8201;&#8212;&#8201;most systems do not have the local name resolution configured properly for remote access.</p>
+</div>
+<div class="paragraph">
+<p>As an example, in a Linux machine named <code>beryl</code>, the <code>/etc/hosts</code> file may contain these entries:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>127.0.0.1 localhost
+127.0.1.1 beryl</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If the system property <code>java.rmi.server.hostname</code> is not specified, the RMI implementation uses the host name <code>beryl</code> to figure out the IP address to store in the RMI stub, in this case <code>127.0.1.1</code>.
+However, we the RMI server is configured to bind to <code>localhost</code>, i.e. <code>127.0.0.1</code>.</p>
+</div>
+<div class="paragraph">
+<p>If the system property <code>java.rmi.server.hostname</code> is not specified, the RMI client will try to connect to <code>127.0.1.1</code> (because that&#8217;s what in the RMI stub) and fail because nothing is listening on that address.</p>
+</div>
+</div>
+<div class="sect4">
 <h5 id="og-module-server"><a class="anchor" href="#og-module-server"></a><a class="link" href="#og-module-server">Module <code>server</code></a></h5>
 <div class="paragraph">
 <p>The <code>server</code> module provides generic server support, and configures generic HTTP properties that apply to all HTTP protocols, the scheduler properties and the server specific properties.</p>
@@ -4048,7 +4226,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">HTTP/1.1 200 OK
 Content-Length: 0
-Server: Jetty(10.0.6)</code></pre>
+Server: Jetty(10.0.7)</code></pre>
 </div>
 </div>
 </dd>
@@ -4140,7 +4318,7 @@
 <p>A comma-separated list of violations to allow or forbid, as specified by the <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/http/HttpCompliance.html#from(java.lang.String)"><code>HttpCompliance.from(String)</code></a> method.
 For example, <code>jetty.httpConfig.compliance=RFC7230,MULTIPLE_CONTENT_LENGTHS</code> means that the HTTP compliance is that defined by <code>RFC7230</code>, but also allows the <code>HttpCompliance.Violation.MULTIPLE_CONTENT_LENGTHS</code>, so that requests that have multiple <code>Content-Length</code> headers are accepted (they would be rejected when using just <code>HttpCompliance.RFC7230</code>).</p>
 <div class="paragraph">
-<p>For more information about <code>HttpCompliance</code> see also <a href="#pg-server-compliance-http">this section</a>.</p>
+<p>For more information about <code>HttpCompliance</code> see also <a href="../programming-guide/index.html#pg-server-compliance-http">this section</a>.</p>
 </div>
 </li>
 </ul>
@@ -4160,7 +4338,7 @@
 <p>A comma-separated list of violations to allow or forbid, as specified by the <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/http/UriCompliance.html#from(java.lang.String)"><code>UriCompliance.from(String)</code></a> method.
 For example, <code>jetty.httpConfig.uriCompliance=RFC3986,-AMBIGUOUS_PATH_SEPARATOR</code> means that the URI compliance is that defined by <code>RFC3986</code>, but also does not allow the <code>UriCompliance.Violation.AMBIGUOUS_PATH_SEPARATOR</code>, so that requests that have URIs such as <code>/foo/bar%2Fbaz</code> (where <code>%2F</code> is the URL-encoded <code>/</code> character) are rejected (they would be accepted when using just <code>UriCompliance.RFC3986</code>).</p>
 <div class="paragraph">
-<p>For more information about <code>UriCompliance</code> see also <a href="#pg-server-compliance-uri">this section</a>.</p>
+<p>For more information about <code>UriCompliance</code> see also <a href="../programming-guide/index.html#pg-server-compliance-uri">this section</a>.</p>
 </div>
 </li>
 </ul>
@@ -4181,7 +4359,7 @@
 <p>A comma-separated list of violations to allow or forbid, as specified by the <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/http/CookieCompliance.html#from(java.lang.String)"><code>CookieCompliance.from(String)</code></a> method.
 For example, <code>jetty.httpConfig.requestCookieCompliance=RFC6265,-RESERVED_NAMES_NOT_DOLLAR_PREFIXED</code> means that the cookie compliance is that defined by <code>RFC6265</code>, but also does not allow the <code>CookieCompliance.Violation.RESERVED_NAMES_NOT_DOLLAR_PREFIXED</code>, so that requests that have cookie headers such as <code>Cookie: $foo=bar</code> are rejected (they would be accepted when using just <code>CookieCompliance.RFC6265</code>).</p>
 <div class="paragraph">
-<p>For more information about <code>CookieCompliance</code> see also <a href="#pg-server-compliance-cookie">this section</a>.</p>
+<p>For more information about <code>CookieCompliance</code> see also <a href="../programming-guide/index.html#pg-server-compliance-cookie">this section</a>.</p>
 </div>
 </li>
 </ul>
@@ -4248,6 +4426,9 @@
 ## Whether to enable the SO_REUSEADDR socket option.
 # jetty.ssl.reuseAddress=true
 
+## Whether to enable the SO_REUSEPORT socket option.
+# jetty.ssl.reusePort=false
+
 ## Whether to enable the TCP_NODELAY socket option on accepted sockets.
 # jetty.ssl.acceptedTcpNoDelay=true
 
@@ -4859,8 +5040,8 @@
 </dd>
 <dt class="hdlist1"><code>@ConnectorName</code></dt>
 <dd>
-<p>A Jetty <code>ServerConnector</code> name to indicate that a web application should handle requests received on the <code>ServerConnector</code> with that name, and therefore received on a specific IP port.
-A <code>ServerConnector</code> name can be set via <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/AbstractConnector.html#setName(java.lang.String)" class="bare">https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/AbstractConnector.html#setName(java.lang.String)</a>.</p>
+<p>A Jetty server <code>Connector</code> name to indicate that a web application should handle requests received on the server <code>Connector</code> with that name, and therefore received on a specific socket address (either an IP port for <code>ServerConnector</code>, or a Unix-Domain path for <code>UnixDomainServerConnector</code>).
+A server <code>Connector</code> name can be set via <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/AbstractConnector.html#setName(java.lang.String)" class="bare">https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/AbstractConnector.html#setName(java.lang.String)</a>.</p>
 </dd>
 <dt class="hdlist1"><code>www.√integral.com</code></dt>
 <dd>
@@ -4983,7 +5164,7 @@
 <div class="sect4">
 <h5 id="og-deploy-virtual-hosts-port"><a class="anchor" href="#og-deploy-virtual-hosts-port"></a><a class="link" href="#og-deploy-virtual-hosts-port">Different Port, Different Web Application</a></h5>
 <div class="paragraph">
-<p>Sometimes it is required to serve different web applications from different IP ports, and therefore from different <code>ServerConnector</code>s.</p>
+<p>Sometimes it is required to serve different web applications from different socket addresses (either different IP ports, or different Unix-Domain paths), and therefore from different server <code>Connector</code>s.</p>
 </div>
 <div class="paragraph">
 <p>For example, you want requests to <code>http://localhost:8080/</code> to be served by one web application, but requests to <code>http://localhost:9090/</code> to be served by another web application.</p>
@@ -5347,11 +5528,11 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 10:44:04.480:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
-<strong>2021-06-29 10:44:05.303:</strong>INFO :oejs.Server:main: jetty-10.0.6; built: 2021-06-29T15:28:56.259Z; git: 37e7731b4b142a882d73974ff3bec78d621bd674; jvm 11.0.9+11
-<strong>2021-06-29 10:44:05.499:</strong>INFO :oejus.SslContextFactory:main: x509=X509@6d23017e(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@3a3e78f[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
-<strong>2021-06-29 10:44:05.634:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@52f7308a<mark>{SSL, (ssl, http/1.1)}{0.0.0.0:8443}</mark>
-<strong>2021-06-29 10:44:05.655:</strong>INFO :oejs.Server:main: Started Server@34a875b3{STARTING}[10.0.6,sto=5000] @2568ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 14:48:22.408:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
+<strong>2021-10-06 14:48:23.051:</strong>INFO :oejs.Server:main: jetty-10.0.7; built: 2021-10-06T19:34:02.766Z; git: da8a4553af9dd84080931fa0f8c678cd2d60f3d9; jvm 17+35
+<strong>2021-10-06 14:48:23.160:</strong>INFO :oejus.SslContextFactory:main: x509=X509@7975d1d8(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@24105dc5[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
+<strong>2021-10-06 14:48:23.267:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@5c45d770<mark>{SSL, (ssl, http/1.1)}{0.0.0.0:8443}</mark>
+<strong>2021-10-06 14:48:23.282:</strong>INFO :oejs.Server:main: Started Server@72c8e7b{STARTING}[10.0.7,sto=5000] @1919ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -5406,7 +5587,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-e2488cc783b3434076c5a44ee7f19a2b.png" alt="Diagram" width="384" height="423">
+<img src="images/diag-e2488cc783b3434076c5a44ee7f19a2b.png" alt="Diagram" width="376" height="420">
 </div>
 </div>
 <div class="paragraph">
@@ -5414,7 +5595,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-8a7fb4bb9c84453a4bf01a24558e8026.png" alt="Diagram" width="421" height="423">
+<img src="images/diag-8a7fb4bb9c84453a4bf01a24558e8026.png" alt="Diagram" width="413" height="420">
 </div>
 </div>
 <div class="paragraph">
@@ -5432,7 +5613,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-7387dfbb6f9fb9cfa951a697aca488a8.png" alt="Diagram" width="140" height="290">
+<img src="images/diag-7387dfbb6f9fb9cfa951a697aca488a8.png" alt="Diagram" width="135" height="284">
 </div>
 </div>
 <div class="paragraph">
@@ -5440,7 +5621,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-70817cc5c7137abc9759cdcd3edbb658.png" alt="Diagram" width="225" height="403">
+<img src="images/diag-70817cc5c7137abc9759cdcd3edbb658.png" alt="Diagram" width="219" height="397">
 </div>
 </div>
 <div class="paragraph">
@@ -5448,7 +5629,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-2830e38460d606111888c5df2a645163.png" alt="Diagram" width="336" height="629">
+<img src="images/diag-2830e38460d606111888c5df2a645163.png" alt="Diagram" width="332" height="623">
 </div>
 </div>
 </div>
@@ -5502,11 +5683,11 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 10:44:09.009:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
-<strong>2021-06-29 10:44:09.733:</strong>INFO :oejs.Server:main: jetty-10.0.6; built: 2021-06-29T15:28:56.259Z; git: 37e7731b4b142a882d73974ff3bec78d621bd674; jvm 11.0.9+11
-<strong>2021-06-29 10:44:09.957:</strong>INFO :oejus.SslContextFactory:main: x509=X509@2d36e77e(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@2c7b5824[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
-<strong>2021-06-29 10:44:10.083:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@66d8bfd0<mark>{SSL, (ssl, alpn, h2, http/1.1)}{0.0.0.0:8443}</mark>
-<strong>2021-06-29 10:44:10.102:</strong>INFO :oejs.Server:main: Started Server@2d96543c{STARTING}[10.0.6,sto=5000] @2500ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 14:48:25.851:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
+<strong>2021-10-06 14:48:26.408:</strong>INFO :oejs.Server:main: jetty-10.0.7; built: 2021-10-06T19:34:02.766Z; git: da8a4553af9dd84080931fa0f8c678cd2d60f3d9; jvm 17+35
+<strong>2021-10-06 14:48:26.537:</strong>INFO :oejus.SslContextFactory:main: x509=X509@7bf3a5d8(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@39b43d60[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
+<strong>2021-10-06 14:48:26.664:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@414cb560<mark>{SSL, (ssl, alpn, h2, http/1.1)}{0.0.0.0:8443}</mark>
+<strong>2021-10-06 14:48:26.681:</strong>INFO :oejs.Server:main: Started Server@730d2164{STARTING}[10.0.7,sto=5000] @1930ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -5558,9 +5739,9 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 10:44:12.133:</strong>INFO :oejs.Server:main: jetty-10.0.6; built: 2021-06-29T15:28:56.259Z; git: 37e7731b4b142a882d73974ff3bec78d621bd674; jvm 11.0.9+11
-<strong>2021-06-29 10:44:12.202:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@4d1c005e<mark>{HTTP/1.1, (http/1.1, h2c)}{0.0.0.0:8080}</mark>
-<strong>2021-06-29 10:44:12.225:</strong>INFO :oejs.Server:main: Started Server@437da279{STARTING}[10.0.6,sto=5000] @1094ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 14:48:28.384:</strong>INFO :oejs.Server:main: jetty-10.0.7; built: 2021-10-06T19:34:02.766Z; git: da8a4553af9dd84080931fa0f8c678cd2d60f3d9; jvm 17+35
+<strong>2021-10-06 14:48:28.443:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@40e233c3<mark>{HTTP/1.1, (http/1.1, h2c)}{0.0.0.0:8080}</mark>
+<strong>2021-10-06 14:48:28.458:</strong>INFO :oejs.Server:main: Started Server@45b9a632{STARTING}[10.0.7,sto=5000] @874ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -6108,7 +6289,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-9f323b812fd1edc8217715ca0c2ba8e9.png" alt="Diagram" width="253" height="414">
+<img src="images/diag-9f323b812fd1edc8217715ca0c2ba8e9.png" alt="Diagram" width="247" height="405">
 </div>
 </div>
 <div class="admonitionblock warning">
@@ -6263,9 +6444,9 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 10:44:16.480:</strong>INFO :oejs.Server:main: jetty-10.0.6; built: 2021-06-29T15:28:56.259Z; git: 37e7731b4b142a882d73974ff3bec78d621bd674; jvm 11.0.9+11
-<strong>2021-06-29 10:44:16.550:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@69e153c5<mark>{[proxy], ([proxy], http/1.1)}{0.0.0.0:8080}</mark>
-<strong>2021-06-29 10:44:16.571:</strong>INFO :oejs.Server:main: Started Server@76c3e77a{STARTING}[10.0.6,sto=5000] @1092ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 14:48:31.734:</strong>INFO :oejs.Server:main: jetty-10.0.7; built: 2021-10-06T19:34:02.766Z; git: da8a4553af9dd84080931fa0f8c678cd2d60f3d9; jvm 17+35
+<strong>2021-10-06 14:48:31.784:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@bef2d72<mark>{[proxy], ([proxy], http/1.1)}{0.0.0.0:8080}</mark>
+<strong>2021-10-06 14:48:31.797:</strong>INFO :oejs.Server:main: Started Server@b62fe6d{STARTING}[10.0.7,sto=5000] @815ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -6307,11 +6488,11 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 10:44:20.280:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
-<strong>2021-06-29 10:44:21.019:</strong>INFO :oejs.Server:main: jetty-10.0.6; built: 2021-06-29T15:28:56.259Z; git: 37e7731b4b142a882d73974ff3bec78d621bd674; jvm 11.0.9+11
-<strong>2021-06-29 10:44:21.249:</strong>INFO :oejus.SslContextFactory:main: x509=X509@1d730606(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@35d08e6c[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
-<strong>2021-06-29 10:44:21.399:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@6553403b<mark>{[proxy], ([proxy], ssl, http/1.1)}{0.0.0.0:8443}</mark>
-<strong>2021-06-29 10:44:21.417:</strong>INFO :oejs.Server:main: Started Server@4f1bfe23{STARTING}[10.0.6,sto=5000] @2465ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 14:48:34.697:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
+<strong>2021-10-06 14:48:35.293:</strong>INFO :oejs.Server:main: jetty-10.0.7; built: 2021-10-06T19:34:02.766Z; git: da8a4553af9dd84080931fa0f8c678cd2d60f3d9; jvm 17+35
+<strong>2021-10-06 14:48:35.409:</strong>INFO :oejus.SslContextFactory:main: x509=X509@7d7758be(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@5f9edf14[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
+<strong>2021-10-06 14:48:35.520:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@332729ad<mark>{[proxy], ([proxy], ssl, http/1.1)}{0.0.0.0:8443}</mark>
+<strong>2021-10-06 14:48:35.535:</strong>INFO :oejs.Server:main: Started Server@4d14b6c2{STARTING}[10.0.7,sto=5000] @1882ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -6604,9 +6785,6 @@
 <p>When using the Jetty WebSocket Client APIs, web applications should include the required jars and their dependencies in the <code>WEB-INF/lib</code> directory of the <code>*.war</code> file.
 Alternatively, when deploying your web applications in Jetty, you can enable the <code>websocket-jetty-client</code> Jetty module to allow web applications to use the Jetty WebSocket Client APIs provided by Jetty, without the need to include jars and their dependencies in the <code>*.war</code> file.</p>
 </div>
-<div class="paragraph">
-<p>Unresolved directive in index.adoc - include::compliance/server-compliance.adoc[]</p>
-</div>
 </div>
 </div>
 </div>
@@ -8710,8 +8888,21 @@
 </div>
 <div class="paragraph">
 <p>The <code>quickstart</code> module allows a webapp to be pre-scanned, making startup predictable and faster.
-During scanning all declarative configuration (ie from web.xml, web-fragment.xml and annotations) are encoded into an effective <code>web.xml</code>, called <code>WEB-INF/quickstart-web.xml</code>, which can be inspected to understand what will be deployed.
-NOTE:: Programmatic configuration is <em>not</em> encoded into the generated <code>quickstart-web.xml</code> file.</p>
+During scanning all declarative configuration (ie from web.xml, web-fragment.xml and annotations) are encoded into an effective <code>web.xml</code>, called <code>WEB-INF/quickstart-web.xml</code>, which can be inspected to understand what will be deployed.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Programmatic configuration is <em>not</em> encoded into the generated <code>quickstart-web.xml</code> file.</p>
+</div>
+</td>
+</tr>
+</table>
 </div>
 <div class="paragraph">
 <p>With <code>quickstart</code>, webapps that took many seconds to scan and deploy can now be deployed in a few hundred milliseconds.</p>
@@ -8723,8 +8914,8 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">$ cd $JETTY-BASE
-$ java -jar $JETTY_HOME/start.jar --add-module=quickstart</code></pre>
+<pre>$ cd $JETTY-BASE
+$ java -jar $JETTY_HOME/start.jar --add-module=quickstart</pre>
 </div>
 </div>
 <div class="paragraph">
@@ -9178,14 +9369,14 @@
 <div class="paragraph">
 <p>Logging has been bridged to Jetty logging, so you can enable logging for the <code>org.apache.jasper</code> package, subpackages and classes as usual.</p>
 </div>
-<div class="sect4">
-<h5 id="og-configuration-of-the-jsp-servlet"><a class="anchor" href="#og-configuration-of-the-jsp-servlet"></a><a class="link" href="#og-configuration-of-the-jsp-servlet">Configuration of the JSP servlet</a></h5>
+<div class="sect3">
+<h4 id="og-configuration-of-the-jsp-servlet"><a class="anchor" href="#og-configuration-of-the-jsp-servlet"></a><a class="link" href="#og-configuration-of-the-jsp-servlet">Configuration of the JSP Servlet</a></h4>
 <div class="paragraph">
-<p>The <code>org.eclipse.jetty.jsp.JettyJspServlet</code> is the servlet responsible for serving jsps.</p>
+<p>The <code>org.eclipse.jetty.jsp.JettyJspServlet</code> is the servlet responsible for serving JSPs.</p>
 </div>
 <div class="paragraph">
-<p>It is configured as the default jsp servlet in the <a href="../../../../../../../jetty-home/target/jetty-home/etc/webdefault.xml">webdefault.xml</a> file.
-Notice that Jetty identifies the jsp servlet by the presence of the <code>id=jsp</code> attribute in the <code>&lt;servlet&gt;</code> declaration.</p>
+<p>It is configured as the default jsp servlet in the <code>$JETTY_HOME/etc/webdefault.xml</code> file.
+Notice that Jetty identifies the jsp servlet by the presence of the <code>id="jsp"</code> attribute in the <code>&lt;servlet&gt;</code> declaration.</p>
 </div>
 <div class="paragraph">
 <p>That file maps the <code>org.eclipse.jetty.jsp.JettyJspServlet</code> to the following partial urls:</p>
@@ -9226,13 +9417,13 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"> <span class="tag">&lt;servlet</span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">jsp</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>  <i class="conum" data-value="1"></i><b>(1)</b>
-     <span class="tag">&lt;servlet-name&gt;</span>jsp<span class="tag">&lt;/servlet-name&gt;</span> <i class="conum" data-value="2"></i><b>(2)</b>
-     <span class="tag">&lt;init-param&gt;</span>
-         <span class="tag">&lt;param-name&gt;</span>keepgenerated<span class="tag">&lt;/param-name&gt;</span> <i class="conum" data-value="3"></i><b>(3)</b>
-         <span class="tag">&lt;param-value&gt;</span>true<span class="tag">&lt;/param-value&gt;</span>  <i class="conum" data-value="4"></i><b>(4)</b>
-     <span class="tag">&lt;/init-param&gt;</span>
-   <span class="tag">&lt;/servlet&gt;</span></code></pre>
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;servlet</span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">jsp</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>  <i class="conum" data-value="1"></i><b>(1)</b>
+  <span class="tag">&lt;servlet-name&gt;</span>jsp<span class="tag">&lt;/servlet-name&gt;</span> <i class="conum" data-value="2"></i><b>(2)</b>
+  <span class="tag">&lt;init-param&gt;</span>
+    <span class="tag">&lt;param-name&gt;</span>keepgenerated<span class="tag">&lt;/param-name&gt;</span> <i class="conum" data-value="3"></i><b>(3)</b>
+    <span class="tag">&lt;param-value&gt;</span>true<span class="tag">&lt;/param-value&gt;</span>  <i class="conum" data-value="4"></i><b>(4)</b>
+  <span class="tag">&lt;/init-param&gt;</span>
+<span class="tag">&lt;/servlet&gt;</span></code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -9283,10 +9474,10 @@
 </table>
 </div>
 <div class="paragraph">
-<p>There are many configuration parameters for the Apache Jasper jsp servlet, here are some of them:</p>
+<p>There are many configuration parameters for the Apache Jasper JSP Servlet, here are some of them:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 4. Jsp Servlet Parameters</caption>
+<caption class="title">Table 4. JSP Servlet Parameters</caption>
 <colgroup>
 <col style="width: 25%;">
 <col style="width: 25%;">
@@ -9318,7 +9509,7 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">classdebuginfo</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Include debugging info in class file.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
@@ -9349,26 +9540,26 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">development</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">If <code>true</code> recompilation checks occur at the frequency governed by <code>modificationTestInterval</code>.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">displaySourceFragment</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Should a source fragment be included in
 exception messages</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">dumpSmap</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Dump SMAP JSR45 info to a file.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">enablePooling</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Determines whether tag handler pooling is enabled.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
@@ -9384,19 +9575,19 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">Should Jasper issue an error when
 the value of the class attribute in an useBean action is not a valid
 bean class</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">fork</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Only relevant if you use Ant to compile jsps: by default Jetty will use the Eclipse jdt compiler.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Only relevant if you use Ant to compile JSPs: by default Jetty will use the Eclipse jdt compiler.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">genStrAsCharArray</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Option for generating Strings as char arrays.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
@@ -9422,14 +9613,14 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">keepgenerated</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Do you want to keep the generated Java files around?</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">mappedFile</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Support for mapped Files. Generates a servlet that has a
-print statement per line of the JSP file </p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+print statement per line of the JSP file</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
@@ -9452,7 +9643,7 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">quoteAttributeEL</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">When EL is used in an attribute value on a JSP page, should the rules for quoting of attributes described in JSP.1.6 be applied to the expression</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
 </tr>
 <tr>
@@ -9462,7 +9653,7 @@
 re-compilation attempt? Used in development mode only and is disabled by
 default as compilation may be expensive and could lead to excessive
 resource usage.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
@@ -9474,44 +9665,50 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">strictQuoteEscaping</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Should the quote escaping required by section JSP.1.6 of the JSP specification be applied to scriplet expression.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">suppressSmap</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Generation of SMAP info for JSR45 debugging.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">trimSpaces</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Should template text that consists entirely of whitespace be removed from the output (true), replaced with a single space (single) or left unchanged (false)? Note that if a JSP page or tag file specifies a trimDirectiveWhitespaces value of true, that will take precedence over this configuration setting for that page/tag.
 trimmed?</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">xpoweredBy</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Generate an X-Powered-By response header.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">NOTE</dt>
-<dd>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
 <p>If the value you set doesn&#8217;t take effect, try using all lower case instead of camel case, or capitalizing only some of the words in the name, as Jasper is inconsistent in its parameter naming strategy.</p>
-</dd>
-</dl>
+</div>
+</td>
+</tr>
+</table>
 </div>
 </div>
 </div>
 <div class="sect2">
 <h3 id="og-javaserver-pages-standard-tag-libraries"><a class="anchor" href="#og-javaserver-pages-standard-tag-libraries"></a><a class="link" href="#og-javaserver-pages-standard-tag-libraries">JavaServer Pages Standard Tag Libraries</a></h3>
 <div class="paragraph">
-<p>The JavaServer Pages Standlard Tag Library (JSTL) is part of the Jetty distribution, and is available via the <code>jstl</code> module:</p>
+<p>The JavaServer Pages Standard Tag Library (JSTL) is part of the Jetty distribution, and is available via the <code>jstl</code> module:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -9530,9 +9727,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="og-javaserver-faces-taglibs"><a class="anchor" href="#og-javaserver-faces-taglibs"></a><a class="link" href="#og-javaserver-faces-taglibs">JavaServer Faces Taglibs</a></h3>
+<h3 id="og-javaserver-faces-taglibs"><a class="anchor" href="#og-javaserver-faces-taglibs"></a><a class="link" href="#og-javaserver-faces-taglibs">JavaServer Faces TagLibs</a></h3>
 <div class="paragraph">
-<p>If you want to use JSF with your webapp, you should copy the relevant jars from your implementation of choice into your <code>$jetty.base</code> directory, ideally into <code>$jetty.base/lib/ext</code>.
+<p>If you want to use JSF with your webapp, you should copy the relevant jars from your implementation of choice into your <code>$JETTY_BASE</code> directory, ideally into <code>$JETTY_BASE/lib/ext</code>.
 If that directory does not exist, enable the <code>ext</code> module, which will create the directory and ensure all jars within it are put onto the container classpath.</p>
 </div>
 <div class="paragraph">
@@ -9551,7 +9748,7 @@
 <span class="tag">&lt;Configure</span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">org.eclipse.jetty.webapp.WebAppContext</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span> <i class="conum" data-value="1"></i><b>(1)</b>
     <span class="tag">&lt;Call</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">setAttribute</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span> <i class="conum" data-value="2"></i><b>(2)</b>
       <span class="tag">&lt;Arg&gt;</span>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern<span class="tag">&lt;/Arg&gt;</span> <i class="conum" data-value="3"></i><b>(3)</b>
-      <span class="tag">&lt;Arg.</span><span class="error">*</span><span class="error">/</span><span class="attribute-name">jetty-servlet-api-</span><span class="error">[</span><span class="error">^</span><span class="error">/</span><span class="error">]</span><span class="error">*</span><span class="error">\</span><span class="attribute-name">.jar</span><span class="error">$</span><span class="error">|</span><span class="attribute-name">.</span><span class="error">*</span><span class="error">/</span><span class="attribute-name">javax.servlet.jsp.jstl-.</span><span class="error">*</span><span class="error">\</span><span class="attribute-name">.jar</span><span class="error">$</span><span class="error">|</span><span class="attribute-name">.</span><span class="error">*</span><span class="error">/</span><span class="attribute-name">org.apache.taglibs.taglibs-standard-impl-.</span><span class="error">*</span><span class="error">\</span><span class="attribute-name">.jar</span><span class="error">$</span><span class="error">|</span><span class="attribute-name">.</span><span class="error">*</span><span class="error">/</span><span class="attribute-name">jsf-</span><span class="error">[</span><span class="error">^</span><span class="error">/</span><span class="error">]</span><span class="error">*</span><span class="error">\</span><span class="attribute-name">.jar</span><span class="error">$</span><span class="tag">&gt;</span><span class="tag">&lt;/Arg&gt;</span> <i class="conum" data-value="4"></i><b>(4)</b>
+      <span class="tag">&lt;Arg&gt;</span>.*/jetty-servlet-api-[^/]*\.jar$|.*/javax.servlet.jsp.jstl-.*\.jar$|.*/org.apache.taglibs.taglibs-standard-impl-.*\.jar$|.*/jsf-[^/]*\.jar$<span class="tag">&lt;/Arg&gt;</span> <i class="conum" data-value="4"></i><b>(4)</b>
     <span class="tag">&lt;/Call&gt;</span>
 <span class="tag">&lt;/Configure&gt;</span></code></pre>
 </div>
@@ -9923,7 +10120,7 @@
 </table>
 </div>
 <div class="paragraph">
-<p>The webapp performs a lookup for <code>java:comp/env/mail/Session</code> at runtime and obtains a <code>javax.mail.Session</code> that has the correct configuration to permit it to send email via SMTP.</p>
+<p>The webapp performs a lookup for <code>java:comp/env/mail/Session</code> at runtime and obtains a <code>javax.mail.Session</code> that has the correct configuration to permit it to send email via SMTP.</p>
 </div>
 <div class="admonitionblock note">
 <table>
@@ -10189,7 +10386,7 @@
 </div>
 <div class="paragraph">
 <p>The Jetty JAAS support aims to dictate as little as possible whilst providing a sufficiently flexible infrastructure to allow users to drop either one of the <a href="#og-jaas-loginmodules">JAAS Login Modules that ships with Jetty</a>, or their
-own custom <a href="https://docs.oracle.com/javase/7/docs/api/javax/security/auth/spi/LoginModule.html">LoginModules</a>.</p>
+own custom <a href="https://docs.oracle.com/javase/7/docs/api/javax/security/auth/spi/LoginModule.html">LoginModule</a>s.</p>
 </div>
 <div class="sect3">
 <h4 id="og-jaas-configuration"><a class="anchor" href="#og-jaas-configuration"></a><a class="link" href="#og-jaas-configuration">Configuration</a></h4>
@@ -10227,9 +10424,9 @@
 <dl>
 <dt class="hdlist1">jetty.jaas.login.conf</dt>
 <dd>
-<p>This is the location of the file that will be referenced by the System property <code>java.security.auth.login.config</code>: Jetty sets this System property for you based on the value of this property.
-The value of this property is assumed to be <em>relative to the <code>$jetty.base</code></em>.
-The default value is <code>etc/login.conf</code>, which resolves to  <code>$jetty.base/etc/login.conf</code>.
+<p>This is the location of the file that will be referenced by the system property <code>java.security.auth.login.config</code>: Jetty sets this system property for you based on the value of this property.
+The value of this property is assumed to be <em>relative to <code>$JETTY_BASE</code></em>.
+The default value is <code>etc/login.conf</code>, which resolves to  <code>$JETTY_BASE/etc/login.conf</code>.
 If you don&#8217;t want to put your login module configuration file here, you can change this property to point to where it is.</p>
 </dd>
 </dl>
@@ -10302,39 +10499,30 @@
 <div class="paragraph">
 <p>Here&#8217;s an example of this type of XML file:</p>
 </div>
-</li>
-</ul>
-</div>
 <div class="listingblock">
 <div class="content">
-<pre>&lt;?xml version="1.0"?&gt;
-&lt;!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_10_0.dtd"&gt;
-
-&lt;Configure id="Server" class="org.eclipse.jetty.server.Server"&gt;
-
-  &lt;Call name="addBean"&gt;
-    &lt;Arg&gt;
-      &lt;New class="org.eclipse.jetty.jaas.JAASLoginService"&gt;
-        &lt;Set name="name"&gt;Test JAAS Realm&lt;/Set&gt;
-        &lt;Set name="LoginModuleName"&gt;xyz&lt;/Set&gt;
-      &lt;/New&gt;
-    &lt;/Arg&gt;
-  &lt;/Call&gt;
-
-&lt;/Configure&gt;</pre>
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="preprocessor">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
+<span class="doctype">&lt;!DOCTYPE Configure PUBLIC &quot;-//Jetty//Configure//EN&quot; &quot;https://www.eclipse.org/jetty/configure_10_0.dtd&quot;&gt;</span>
+<span class="tag">&lt;Configure</span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">Server</span><span class="delimiter">&quot;</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">org.eclipse.jetty.server.Server</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+  <span class="tag">&lt;Call</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">addBean</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+    <span class="tag">&lt;Arg&gt;</span>
+      <span class="tag">&lt;New</span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">org.eclipse.jetty.jaas.JAASLoginService</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+        <span class="tag">&lt;Set</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>Test JAAS Realm<span class="tag">&lt;/Set&gt;</span>
+        <span class="tag">&lt;Set</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">LoginModuleName</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>xyz<span class="tag">&lt;/Set&gt;</span>
+      <span class="tag">&lt;/New&gt;</span>
+    <span class="tag">&lt;/Arg&gt;</span>
+  <span class="tag">&lt;/Call&gt;</span>
+<span class="tag">&lt;/Configure&gt;</span></code></pre>
 </div>
 </div>
-<div class="ulist">
-<ul>
+</li>
 <li>
 <p>Alternatively, if you want to use JAAS with a specific webapp only, you declare your <code>org.eclipse.jetty.jaas.JAASLoginService</code> in a context XLM file specific to that webapp:</p>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="preprocessor">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
 <span class="doctype">&lt;!DOCTYPE Configure PUBLIC &quot;-//Jetty//Configure//EN&quot; &quot;https://www.eclipse.org/jetty/configure_10_0.dtd&quot;&gt;</span>
-
 <span class="tag">&lt;Configure</span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">org.eclipse.jetty.webapp.WebAppContext</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
-
   <span class="tag">&lt;Set</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">securityHandler</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
     <span class="tag">&lt;New</span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">org.eclipse.jetty.security.ConstraintSecurityHandler</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
      <span class="tag">&lt;Set</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">loginService</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
@@ -10345,7 +10533,6 @@
      <span class="tag">&lt;/Set&gt;</span>
     <span class="tag">&lt;/New&gt;</span>
   <span class="tag">&lt;/Set&gt;</span>
-
 <span class="tag">&lt;/Configure&gt;</span></code></pre>
 </div>
 </div>
@@ -10364,10 +10551,10 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="ini">xyz  { <i class="conum" data-value="1"></i><b>(1)</b>
-       com.acme.SomeLoginModule required debug=true; <i class="conum" data-value="2"></i><b>(2)</b>
-       com.other.OtherLoginModule optional; <i class="conum" data-value="3"></i><b>(3)</b>
-     };</code></pre>
+<pre class="CodeRay highlight"><code>xyz  { <i class="conum" data-value="1"></i><b>(1)</b>
+  com.acme.SomeLoginModule required debug=true; <i class="conum" data-value="2"></i><b>(2)</b>
+  com.other.OtherLoginModule optional; <i class="conum" data-value="3"></i><b>(3)</b>
+};</code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -10408,8 +10595,6 @@
 </li>
 </ul>
 </div>
-<div class="quoteblock">
-<blockquote>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -10417,14 +10602,14 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-Passwords can be stored in clear text, obfuscated or checksummed.
-The class <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/util/security/Password.html"><code>org.eclipse.jetty.util.security.Password</code></a> should be used to generate all varieties of passwords,the output from which can be put in to property files or entered into database tables.
+<div class="paragraph">
+<p>Passwords can be stored in clear text, obfuscated or checksummed.
+The class <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/util/security/Password.html"><code>org.eclipse.jetty.util.security.Password</code></a> should be used to generate all varieties of passwords,the output from which can be put in to property files or entered into database tables.</p>
+</div>
 </td>
 </tr>
 </table>
 </div>
-</blockquote>
-</div>
 <div class="sect4">
 <h5 id="og-jdbcloginmodule"><a class="anchor" href="#og-jdbcloginmodule"></a><a class="link" href="#og-jdbcloginmodule">JDBCLoginModule</a></h5>
 <div class="paragraph">
@@ -10436,18 +10621,18 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="ini">jdbc { <i class="conum" data-value="1"></i><b>(1)</b>
-      org.eclipse.jetty.jaas.spi.JDBCLoginModule required <i class="conum" data-value="2"></i><b>(2)</b> <i class="conum" data-value="3"></i><b>(3)</b>
-      dbUrl=&quot;jdbc:hsqldb:.&quot; <i class="conum" data-value="4"></i><b>(4)</b>
-      dbUserName=&quot;sa&quot; <i class="conum" data-value="5"></i><b>(5)</b>
-      dbDriver=&quot;org.hsqldb.jdbcDriver&quot; <i class="conum" data-value="6"></i><b>(6)</b>
-      userTable=&quot;myusers&quot; <i class="conum" data-value="7"></i><b>(7)</b>
-      userField=&quot;myuser&quot; <i class="conum" data-value="8"></i><b>(8)</b>
-      credentialField=&quot;mypassword&quot; <i class="conum" data-value="9"></i><b>(9)</b>
-      userRoleTable=&quot;myuserroles&quot; <i class="conum" data-value="10"></i><b>(10)</b>
-      userRoleUserField=&quot;myuser&quot; <i class="conum" data-value="11"></i><b>(11)</b>
-      userRoleRoleField=&quot;myrole&quot;; <i class="conum" data-value="12"></i><b>(12)</b>
-      };</code></pre>
+<pre class="CodeRay highlight"><code>jdbc { <i class="conum" data-value="1"></i><b>(1)</b>
+  org.eclipse.jetty.jaas.spi.JDBCLoginModule required <i class="conum" data-value="2"></i><b>(2)</b> <i class="conum" data-value="3"></i><b>(3)</b>
+  dbUrl=&quot;jdbc:hsqldb:.&quot; <i class="conum" data-value="4"></i><b>(4)</b>
+  dbUserName=&quot;sa&quot; <i class="conum" data-value="5"></i><b>(5)</b>
+  dbDriver=&quot;org.hsqldb.jdbcDriver&quot; <i class="conum" data-value="6"></i><b>(6)</b>
+  userTable=&quot;myusers&quot; <i class="conum" data-value="7"></i><b>(7)</b>
+  userField=&quot;myuser&quot; <i class="conum" data-value="8"></i><b>(8)</b>
+  credentialField=&quot;mypassword&quot; <i class="conum" data-value="9"></i><b>(9)</b>
+  userRoleTable=&quot;myuserroles&quot; <i class="conum" data-value="10"></i><b>(10)</b>
+  userRoleUserField=&quot;myuser&quot; <i class="conum" data-value="11"></i><b>(11)</b>
+  userRoleRoleField=&quot;myrole&quot;; <i class="conum" data-value="12"></i><b>(12)</b>
+};</code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -10507,10 +10692,8 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="sql">  <span class="class">select</span> &lt;credentialField&gt; <span class="keyword">from</span> &lt;userTable&gt;
-          <span class="keyword">where</span> &lt;userField&gt; =<span class="error">?</span>
-  <span class="class">select</span> &lt;userRoleRoleField&gt; <span class="keyword">from</span> &lt;userRoleTable&gt;
-          <span class="keyword">where</span> &lt;userRoleUserField&gt; =<span class="error">?</span></code></pre>
+<pre class="CodeRay highlight"><code data-lang="sql"><span class="class">select</span> &lt;credentialField&gt; <span class="keyword">from</span> &lt;userTable&gt; <span class="keyword">where</span> &lt;userField&gt;=<span class="error">?</span>
+<span class="class">select</span> &lt;userRoleRoleField&gt; <span class="keyword">from</span> &lt;userRoleTable&gt; <span class="keyword">where</span> &lt;userRoleUserField&gt;=<span class="error">?</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -10519,7 +10702,7 @@
 When the user logs out or the session expires, the information is flushed from memory.</p>
 </div>
 <div class="paragraph">
-<p>Note that passwords can be stored in the database in plain text or encoded formats - see the note on "Passwords/Credentials" above.</p>
+<p>Note that passwords can be stored in the database in plain text or encoded formats&#8201;&#8212;&#8201;see the note on "Passwords/Credentials" above.</p>
 </div>
 </div>
 <div class="sect4">
@@ -10533,16 +10716,16 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre>ds { <i class="conum" data-value="1"></i><b>(1)</b>
-     org.eclipse.jetty.jaas.spi.DataSourceLoginModule required <i class="conum" data-value="2"></i><b>(2)</b><i class="conum" data-value="3"></i><b>(3)</b>
-     dbJNDIName="ds" <i class="conum" data-value="4"></i><b>(4)</b>
-     userTable="myusers" <i class="conum" data-value="5"></i><b>(5)</b>
-     userField="myuser" <i class="conum" data-value="6"></i><b>(6)</b>
-     credentialField="mypassword" <i class="conum" data-value="7"></i><b>(7)</b>
-     userRoleTable="myuserroles" <i class="conum" data-value="8"></i><b>(8)</b>
-     userRoleUserField="myuser" <i class="conum" data-value="9"></i><b>(9)</b>
-     userRoleRoleField="myrole"; <i class="conum" data-value="10"></i><b>(10)</b>
-    };</pre>
+<pre class="CodeRay highlight"><code>ds { <i class="conum" data-value="1"></i><b>(1)</b>
+  org.eclipse.jetty.jaas.spi.DataSourceLoginModule required <i class="conum" data-value="2"></i><b>(2)</b> <i class="conum" data-value="3"></i><b>(3)</b>
+  dbJNDIName=&quot;ds&quot; <i class="conum" data-value="4"></i><b>(4)</b>
+  userTable=&quot;myusers&quot; <i class="conum" data-value="5"></i><b>(5)</b>
+  userField=&quot;myuser&quot; <i class="conum" data-value="6"></i><b>(6)</b>
+  credentialField=&quot;mypassword&quot; <i class="conum" data-value="7"></i><b>(7)</b>
+  userRoleTable=&quot;myuserroles&quot; <i class="conum" data-value="8"></i><b>(8)</b>
+  userRoleUserField=&quot;myuser&quot; <i class="conum" data-value="9"></i><b>(9)</b>
+  userRoleRoleField=&quot;myrole&quot;; <i class="conum" data-value="10"></i><b>(10)</b>
+};</code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -10597,10 +10780,10 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre>props { <i class="conum" data-value="1"></i><b>(1)</b>
-        org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required  <i class="conum" data-value="2"></i><b>(2)</b><i class="conum" data-value="3"></i><b>(3)</b>
-        file="/somewhere/somefile.props"; <i class="conum" data-value="4"></i><b>(4)</b>
-      };</pre>
+<pre class="CodeRay highlight"><code>props { <i class="conum" data-value="1"></i><b>(1)</b>
+  org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required  <i class="conum" data-value="2"></i><b>(2)</b> <i class="conum" data-value="3"></i><b>(3)</b>
+  file=&quot;/somewhere/somefile.props&quot;; <i class="conum" data-value="4"></i><b>(4)</b>
+};</code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -10628,7 +10811,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="text subs=verbatim">&lt;username&gt;: &lt;password&gt; [,&lt;rolename&gt; ...]</code></pre>
+<pre class="CodeRay highlight"><code data-lang="text">&lt;username&gt;: &lt;password&gt; [,&lt;rolename&gt; ...]</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -10636,10 +10819,10 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="ini">fred: OBF:1xmk1w261u9r1w1c1xmq,user,admin
+<pre>fred: OBF:1xmk1w261u9r1w1c1xmq,user,admin
 harry: changeme,user,developer
 tom: MD5:164c88b302622e17050af52c89945d44,user
-dick: CRYPT:adpexzg3FUZAk,admin</code></pre>
+dick: CRYPT:adpexzg3FUZAk,admin</pre>
 </div>
 </div>
 <div class="paragraph">
@@ -10657,27 +10840,27 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="ini">example  { <i class="conum" data-value="1"></i><b>(1)</b>
-   org.eclipse.jetty.jaas.spi.LdapLoginModule required  <i class="conum" data-value="2"></i><b>(2)</b> <i class="conum" data-value="3"></i><b>(3)</b>
-   contextFactory=&quot;com.sun.jndi.ldap.LdapCtxFactory&quot; <i class="conum" data-value="4"></i><b>(4)</b>
-   hostname=&quot;ldap.example.com&quot; <i class="conum" data-value="5"></i><b>(5)</b>
-   port=&quot;389&quot; <i class="conum" data-value="6"></i><b>(6)</b>
-   bindDn=&quot;cn=Directory Manager&quot; <i class="conum" data-value="7"></i><b>(7)</b>
-   bindPassword=&quot;directory&quot; <i class="conum" data-value="8"></i><b>(8)</b>
-   authenticationMethod=&quot;simple&quot; <i class="conum" data-value="9"></i><b>(9)</b>
-   useLdaps=&quot;true&quot; <i class="conum" data-value="10"></i><b>(10)</b>
-   userBaseDn=&quot;ou=people,dc=alcatel&quot; <i class="conum" data-value="11"></i><b>(11)</b>
-   userRdnAttribute=&quot;uid&quot; <i class="conum" data-value="12"></i><b>(12)</b>
-   userIdAttribute=&quot;cn&quot; <i class="conum" data-value="13"></i><b>(13)</b>
-   userPasswordAttribute=&quot;userPassword&quot; <i class="conum" data-value="14"></i><b>(14)</b>
-   userObjectClass=&quot;inetOrgPerson&quot; <i class="conum" data-value="15"></i><b>(15)</b>
-   roleBaseDn=&quot;ou=groups,dc=example,dc=com&quot; <i class="conum" data-value="16"></i><b>(16)</b>
-   roleNameAttribute=&quot;cn&quot; <i class="conum" data-value="17"></i><b>(17)</b>
-   roleMemberAttribute=&quot;uniqueMember&quot; <i class="conum" data-value="18"></i><b>(18)</b>
-   roleObjectClass=&quot;groupOfUniqueNames&quot;; <i class="conum" data-value="19"></i><b>(19)</b>
-   forceBindingLogin=&quot;false&quot; <i class="conum" data-value="20"></i><b>(20)</b>
-   debug=&quot;false&quot; <i class="conum" data-value="21"></i><b>(21)</b>
-   };</code></pre>
+<pre class="CodeRay highlight"><code>example  { <i class="conum" data-value="1"></i><b>(1)</b>
+  org.eclipse.jetty.jaas.spi.LdapLoginModule required  <i class="conum" data-value="2"></i><b>(2)</b> <i class="conum" data-value="3"></i><b>(3)</b>
+  contextFactory=&quot;com.sun.jndi.ldap.LdapCtxFactory&quot; <i class="conum" data-value="4"></i><b>(4)</b>
+  hostname=&quot;ldap.example.com&quot; <i class="conum" data-value="5"></i><b>(5)</b>
+  port=&quot;389&quot; <i class="conum" data-value="6"></i><b>(6)</b>
+  bindDn=&quot;cn=Directory Manager&quot; <i class="conum" data-value="7"></i><b>(7)</b>
+  bindPassword=&quot;directory&quot; <i class="conum" data-value="8"></i><b>(8)</b>
+  authenticationMethod=&quot;simple&quot; <i class="conum" data-value="9"></i><b>(9)</b>
+  useLdaps=&quot;true&quot; <i class="conum" data-value="10"></i><b>(10)</b>
+  userBaseDn=&quot;ou=people,dc=alcatel&quot; <i class="conum" data-value="11"></i><b>(11)</b>
+  userRdnAttribute=&quot;uid&quot; <i class="conum" data-value="12"></i><b>(12)</b>
+  userIdAttribute=&quot;cn&quot; <i class="conum" data-value="13"></i><b>(13)</b>
+  userPasswordAttribute=&quot;userPassword&quot; <i class="conum" data-value="14"></i><b>(14)</b>
+  userObjectClass=&quot;inetOrgPerson&quot; <i class="conum" data-value="15"></i><b>(15)</b>
+  roleBaseDn=&quot;ou=groups,dc=example,dc=com&quot; <i class="conum" data-value="16"></i><b>(16)</b>
+  roleNameAttribute=&quot;cn&quot; <i class="conum" data-value="17"></i><b>(17)</b>
+  roleMemberAttribute=&quot;uniqueMember&quot; <i class="conum" data-value="18"></i><b>(18)</b>
+  roleObjectClass=&quot;groupOfUniqueNames&quot;; <i class="conum" data-value="19"></i><b>(19)</b>
+  forceBindingLogin=&quot;false&quot; <i class="conum" data-value="20"></i><b>(20)</b>
+  debug=&quot;false&quot; <i class="conum" data-value="21"></i><b>(21)</b>
+};</code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -10773,6 +10956,161 @@
 </div>
 </div>
 <div class="sect2">
+<h3 id="og-jaspi"><a class="anchor" href="#og-jaspi"></a><a class="link" href="#og-jaspi">JASPI</a></h3>
+<div class="paragraph">
+<p>Enabling this module allows Jetty to utilize authentication modules that implement the JSR 196 (JASPI) specification. JASPI provides an SPI (Service Provider Interface) for pluggable, portable, and standardized authentication modules. Compatible modules are portable between servers that support the JASPI specification. This module provides a bridge from Java Authentication to the Jetty Security framework.</p>
+</div>
+<div class="paragraph">
+<p>Only modules conforming to the "Servlet Container Profile" with the ServerAuthModule interface within the <a href="https://www.jcp.org/en/jsr/detail?id=196">JASPI Spec</a> are supported. These modules must be configured before start-up.  Operations for runtime registering or de-registering authentication modules are not supported.</p>
+</div>
+<div class="sect3">
+<h4 id="og-jaspi-configuration"><a class="anchor" href="#og-jaspi-configuration"></a><a class="link" href="#og-jaspi-configuration">Configuration</a></h4>
+<div class="sect4">
+<h5 id="og-jaspi-module"><a class="anchor" href="#og-jaspi-module"></a><a class="link" href="#og-jaspi-module">The <code>jaspi</code> module</a></h5>
+<div class="paragraph">
+<p>Enable the <code>jaspi</code> module:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre># DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html
+
+[description]
+Enables JASPI authentication for deployed web applications.
+
+[tags]
+security
+
+[depend]
+security
+auth-config-factory
+
+[lib]
+lib/jetty-jaspi-${jetty.version}.jar
+lib/jaspi/*.jar
+
+[xml]
+etc/jaspi/jaspi-authmoduleconfig.xml
+
+[files]
+basehome:etc/jaspi/jaspi-authmoduleconfig.xml|etc/jaspi/jaspi-authmoduleconfig.xml</pre>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="og-jaspi-xml"><a class="anchor" href="#og-jaspi-xml"></a><a class="link" href="#og-jaspi-xml">Configure JASPI</a></h5>
+<div class="paragraph">
+<p>To enable the <code>jaspi</code> module you can use the following command (issued from within the <code>$JETTY_BASE</code> directory):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ java -jar $JETTY_HOME/start.jar --add-modules=jaspi</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can then register a <code>AuthConfigProvider</code> onto the static <code>AuthConfigFactory</code> obtained with <code>AuthConfigFactory.getFactory()</code>. This registration can be done in the XML configuration file which will be copied to <code>$JETTY_BASE/etc/jaspi/jaspi-authmoduleconfig.xml</code> when the module is enabled.</p>
+</div>
+<div class="sect5">
+<h6 id="og-jaspi-demo"><a class="anchor" href="#og-jaspi-demo"></a><a class="link" href="#og-jaspi-demo">JASPI Demo</a></h6>
+<div class="paragraph">
+<p>The <code>jaspi-demo</code> module illustrates setting up HTTP Basic Authentication using a Java Authentication module that comes packaged with jetty: <code>org.eclipse.jetty.security.jaspi.modules.BasicAuthenticationAuthModule</code>, and applies it for a context named <code>/test</code>.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="preprocessor">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
+<span class="doctype">&lt;!DOCTYPE Configure PUBLIC &quot;-//Jetty//Configure//EN&quot; &quot;https://www.eclipse.org/jetty/configure_10_0.dtd&quot;&gt;</span>
+
+<span class="tag">&lt;Configure&gt;</span>
+  <span class="tag">&lt;Call</span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">javax.security.auth.message.config.AuthConfigFactory</span><span class="delimiter">&quot;</span></span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">getFactory</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+    <span class="tag">&lt;Call</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">registerConfigProvider</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+
+      <span class="comment">&lt;!-- The Jetty provided implementation of AuthConfigProvider which will wrap a ServerAuthModule. --&gt;</span>
+      <span class="tag">&lt;Arg</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">String</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>org.eclipse.jetty.security.jaspi.provider.JaspiAuthConfigProvider<span class="tag">&lt;/Arg&gt;</span>
+
+      <span class="comment">&lt;!-- A Map of initialization properties. --&gt;</span>
+      <span class="tag">&lt;Arg&gt;</span>
+        <span class="tag">&lt;Map&gt;</span>
+          <span class="tag">&lt;Entry&gt;</span>
+            <span class="comment">&lt;!-- Provide the fully qualified classname of the ServerAuthModule to be used. --&gt;</span>
+            <span class="tag">&lt;Item&gt;</span>ServerAuthModule<span class="tag">&lt;/Item&gt;</span>
+            <span class="tag">&lt;Item&gt;</span>org.eclipse.jetty.security.jaspi.modules.BasicAuthenticationAuthModule<span class="tag">&lt;/Item&gt;</span>
+          <span class="tag">&lt;/Entry&gt;</span>
+          <span class="tag">&lt;Entry&gt;</span>
+            <span class="comment">&lt;!-- Realm as utilised by Jetty Security  --&gt;</span>
+            <span class="tag">&lt;Item&gt;</span>org.eclipse.jetty.security.jaspi.modules.RealmName<span class="tag">&lt;/Item&gt;</span>
+            <span class="tag">&lt;Item&gt;</span>Test Realm<span class="tag">&lt;/Item&gt;</span>
+          <span class="tag">&lt;/Entry&gt;</span>
+        <span class="tag">&lt;/Map&gt;</span>
+      <span class="tag">&lt;/Arg&gt;</span>
+
+      <span class="comment">&lt;!-- Message Layer Identifier as per spec chapter 3.1  --&gt;</span>
+      <span class="tag">&lt;Arg</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">String</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>HttpServlet<span class="tag">&lt;/Arg&gt;</span>
+
+      <span class="comment">&lt;!-- Application Context Identifier as per spec chapter 3.2
+
+        AppContextID ::= hostname blank context-path
+        The algorithm applied here will use the
+        _serverName on the configured JaspiAuthenticatorFactory (if set) and try to match it
+        against the &quot;server&quot; part (in the &quot;server /test&quot; example below).
+        Next it will try to match the ServletContext#getVirtualServerName to the &quot;server&quot; part.
+        If neither are set, it will then try to match the first Subject's principal name, and finally fall back to
+        the default value &quot;server&quot; if none are available.
+
+        The context-path should match the context path where this applies.
+      --&gt;</span>
+      <span class="tag">&lt;Arg</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">String</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>server /test<span class="tag">&lt;/Arg&gt;</span>
+
+      <span class="comment">&lt;!-- A friendly description of the provided auth-module. --&gt;</span>
+      <span class="tag">&lt;Arg</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">String</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>A simple provider using HTTP BASIC authentication.<span class="tag">&lt;/Arg&gt;</span>
+    <span class="tag">&lt;/Call&gt;</span>
+  <span class="tag">&lt;/Call&gt;</span>
+<span class="tag">&lt;/Configure&gt;</span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This example uses the <code>AuthConfigProvider</code> implementation provided by Jetty to register a <code>ServerAuthModule</code> directly. Other custom or 3rd party modules that are compatible with the <code>ServerAuthModule</code> interface in JASPI can be registered in the same way.</p>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="og-integration-with-jetty-authentication-mechanisms"><a class="anchor" href="#og-integration-with-jetty-authentication-mechanisms"></a><a class="link" href="#og-integration-with-jetty-authentication-mechanisms">Integration with Jetty Authentication Mechanisms</a></h5>
+<div class="paragraph">
+<p>To integrate with Jetty authentication mechanisms you must add a <code>LoginService</code> to your context. The <code>LoginService</code> provides a way for you to obtain a <code>UserIdentity</code> from a username and credentials. JASPI can interact with this Jetty <code>LoginService</code> by using the <code>PasswordValidationCallback</code>.</p>
+</div>
+<div class="paragraph">
+<p>The <code>CallerPrincipalCallback</code> and <code>GroupPrincipalCallback</code> do not require use of a Jetty <code>LoginService</code>. The principal from the <code>CallerPrincipalCallback</code> will be used directly with the <code>IdentityService</code> to produce a <code>UserIdentity</code>.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="og-replacing-the-jetty-defaultauthconfigfactory"><a class="anchor" href="#og-replacing-the-jetty-defaultauthconfigfactory"></a><a class="link" href="#og-replacing-the-jetty-defaultauthconfigfactory">Replacing the Jetty DefaultAuthConfigFactory</a></h5>
+<div class="paragraph">
+<p>Jetty provides an implementation of the <code>AuthConfigFactory</code> interface which is used to register <code>AuthConfigProviders</code>. This can be replaced by a custom implementation by adding a custom module which provides <code>auth-config-factory</code>.
+This custom module must reference an XML file which sets a new instance of the <code>AuthConfigFactory</code> with the static method <code>AuthConfigFactory.setFactory()</code>.
+For an example of this see the <code>jaspi-default-auth-config-factory</code> module, which provides the default implementation used by Jetty.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre># DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html
+
+[description]
+Provides a DefaultAuthConfigFactory for jaspi
+
+[tags]
+security
+
+[depend]
+security
+
+[provide]
+auth-config-factory
+
+[xml]
+etc/jaspi/jaspi-default.xml</pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect2">
 <h3 id="og-jmx"><a class="anchor" href="#og-jmx"></a><a class="link" href="#og-jmx">Eclipse Jetty Monitoring &amp; Management</a></h3>
 <div class="paragraph">
 <p>Monitoring and management of a Jetty server is important because it allows you to monitor the status of the server (<em>"Is the server processing requests?"</em>) and to manage&#8201;&#8212;&#8201;i.e. read and possibly change&#8201;&#8212;&#8201;its configuration.</p>
@@ -11454,7 +11792,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-792f4cd700f2b5af8fedd7b0249d25b4.png" alt="Diagram" width="694" height="177">
+<img src="images/diag-792f4cd700f2b5af8fedd7b0249d25b4.png" alt="Diagram" width="686" height="174">
 </div>
 </div>
 <div class="paragraph">
@@ -11527,7 +11865,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="jmc-server-dump.png" alt="jmc server dump">
+<img src="images/jmc-server-dump.png" alt="jmc server dump">
 </div>
 </div>
 <div class="paragraph">
@@ -11615,27 +11953,287 @@
 </div>
 <div class="listingblock small">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code>Server@10d307f1{STARTING}[10.0.6,sto=5000] - STARTING <i class="conum" data-value="1"></i><b>(1)</b>
-+= QueuedThreadPool[qtp71399214]@441772e{STARTED,4&lt;=4&lt;=200,i=2,r=-1,q=0}[ReservedThreadExecutor@72035809{s=0/8,p=0}] - STARTED <i class="conum" data-value="2"></i><b>(2)</b>
-|  +- org.eclipse.jetty.util.thread.ThreadPoolBudget@909217e
-|  += ReservedThreadExecutor@72035809{s=0/8,p=0} - STARTED
+<pre class="CodeRay highlight nowrap"><code>Server@6295d394{STARTING}[10.0.7,sto=5000] - STARTING <i class="conum" data-value="1"></i><b>(1)</b>
++= QueuedThreadPool[qtp143110009]@887af79{STARTED,4&lt;=4&lt;=200,i=2,r=-1,q=0}[ReservedThreadExecutor@57c758ac{reserved=0/8,pending=0}] - STARTED <i class="conum" data-value="2"></i><b>(2)</b>
+|  +- org.eclipse.jetty.util.thread.ThreadPoolBudget@a9cd3b1
+|  += ReservedThreadExecutor@57c758ac{reserved=0/8,pending=0} - STARTED
+|  |  +&gt; threads size=0
 |  +&gt; threads size=4
-|     +&gt; qtp71399214-13 RUNNABLE tid=13 prio=5 SELECTING
-|     +&gt; qtp71399214-15 TIMED_WAITING tid=15 prio=5 IDLE
-|     +&gt; qtp71399214-16 TIMED_WAITING tid=16 prio=5 IDLE
-|     +&gt; qtp71399214-14-acceptor-0@3c189d2d-ServerConnector@38271e76{HTTP/1.1, (http/1.1)}{0.0.0.0:8080} RUNNABLE tid=14 prio=3 ACCEPTING <i class="conum" data-value="3"></i><b>(3)</b>
-+- org.eclipse.jetty.io.ArrayByteBufferPool@5032714f
-+= ScheduledExecutorScheduler@6ad82709{STARTED} - STARTED
-+= HandlerList@48bb62{STARTED} - STARTED
-|  += ContextHandlerCollection@353352b6{STARTED} - STARTED
-|  += DefaultHandler@4681c175{STARTED} - STARTED
-+= ServerConnector@38271e76{HTTP/1.1, (http/1.1)}{0.0.0.0:8080} - STARTED
-|  +~ QueuedThreadPool[qtp71399214]@441772e{STARTED,4&lt;=4&lt;=200,i=2,r=-1,q=0}[ReservedThreadExecutor@72035809{s=0/8,p=0}] - STARTED
-|  +~ ScheduledExecutorScheduler@6ad82709{STARTED} - STARTED
-|  +- org.eclipse.jetty.io.ArrayByteBufferPool@5032714f
-|  +- org.eclipse.jetty.server.AbstractConnector$1@57a78e3
-|  += HttpConnectionFactory@2e222612[HTTP/1.1] - STARTED
-|  |  +- HttpConfiguration@7e057f43{32768/8192,8192/8192,https://:0,[]}
+|     +&gt; qtp143110009-18 TIMED_WAITING tid=18 prio=5 IDLE
+|     +&gt; qtp143110009-15 RUNNABLE tid=15 prio=5 SELECTING
+|     +&gt; qtp143110009-16 TIMED_WAITING tid=16 prio=5 IDLE
+|     +&gt; qtp143110009-17-acceptor-0@6a61babe-ServerConnector@1184ab05{HTTP/1.1, (http/1.1)}{0.0.0.0:8080} RUNNABLE tid=17 prio=3 ACCEPTING
++- org.eclipse.jetty.io.ArrayByteBufferPool@21de60b4
++= ScheduledExecutorScheduler@47db50c5{STARTED} - STARTED
++= HandlerList@c267ef4{STARTED} - STARTED <i class="conum" data-value="3"></i><b>(3)</b>
+|  += ContextHandlerCollection@30ee2816{STARTED} - STARTED
+|  += DefaultHandler@31d7b7bf{STARTED} - STARTED
++= ServerConnector@1184ab05{HTTP/1.1, (http/1.1)}{0.0.0.0:8080} - STARTED <i class="conum" data-value="4"></i><b>(4)</b>
+|  +~ QueuedThreadPool[qtp143110009]@887af79{STARTED,4&lt;=4&lt;=200,i=2,r=-1,q=0}[ReservedThreadExecutor@57c758ac{reserved=0/8,pending=0}] - STARTED
+|  +~ ScheduledExecutorScheduler@47db50c5{STARTED} - STARTED
+|  +- org.eclipse.jetty.io.ArrayByteBufferPool@21de60b4
+|  +- org.eclipse.jetty.io.ArrayRetainableByteBufferPool@635eaaf1{min=0,max=65536,buckets=64,heap=0/-1,direct=0/-1}
+|  |  +&gt; direct size=64
+|  |  |  +&gt; Bucket@5c30a9b0[inUse=0,size=0,max=2147483647,closed=false]{capacity=1024,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@3f197a46[inUse=0,size=0,max=2147483647,closed=false]{capacity=2048,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@636be97c[inUse=0,size=0,max=2147483647,closed=false]{capacity=3072,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@50a638b5[inUse=0,size=0,max=2147483647,closed=false]{capacity=4096,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@1817d444[inUse=0,size=0,max=2147483647,closed=false]{capacity=5120,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@6ca8564a[inUse=0,size=0,max=2147483647,closed=false]{capacity=6144,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@50b472aa[inUse=0,size=0,max=2147483647,closed=false]{capacity=7168,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@31368b99[inUse=0,size=0,max=2147483647,closed=false]{capacity=8192,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@1725dc0f[inUse=0,size=0,max=2147483647,closed=false]{capacity=9216,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@3911c2a7[inUse=0,size=0,max=2147483647,closed=false]{capacity=10240,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@4ac3c60d[inUse=0,size=0,max=2147483647,closed=false]{capacity=11264,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@4facf68f[inUse=0,size=0,max=2147483647,closed=false]{capacity=12288,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@76508ed1[inUse=0,size=0,max=2147483647,closed=false]{capacity=13312,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@41e36e46[inUse=0,size=0,max=2147483647,closed=false]{capacity=14336,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@15c43bd9[inUse=0,size=0,max=2147483647,closed=false]{capacity=15360,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@3d74bf60[inUse=0,size=0,max=2147483647,closed=false]{capacity=16384,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@4f209819[inUse=0,size=0,max=2147483647,closed=false]{capacity=17408,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@15eb5ee5[inUse=0,size=0,max=2147483647,closed=false]{capacity=18432,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@2145b572[inUse=0,size=0,max=2147483647,closed=false]{capacity=19456,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@39529185[inUse=0,size=0,max=2147483647,closed=false]{capacity=20480,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@72f926e6[inUse=0,size=0,max=2147483647,closed=false]{capacity=21504,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@3daa422a[inUse=0,size=0,max=2147483647,closed=false]{capacity=22528,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@31c88ec8[inUse=0,size=0,max=2147483647,closed=false]{capacity=23552,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@1cbbffcd[inUse=0,size=0,max=2147483647,closed=false]{capacity=24576,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@27ce24aa[inUse=0,size=0,max=2147483647,closed=false]{capacity=25600,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@481a996b[inUse=0,size=0,max=2147483647,closed=false]{capacity=26624,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@3d51f06e[inUse=0,size=0,max=2147483647,closed=false]{capacity=27648,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@7ed7259e[inUse=0,size=0,max=2147483647,closed=false]{capacity=28672,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@28eaa59a[inUse=0,size=0,max=2147483647,closed=false]{capacity=29696,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@3427b02d[inUse=0,size=0,max=2147483647,closed=false]{capacity=30720,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@647e447[inUse=0,size=0,max=2147483647,closed=false]{capacity=31744,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@41fbdac4[inUse=0,size=0,max=2147483647,closed=false]{capacity=32768,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@3c407114[inUse=0,size=0,max=2147483647,closed=false]{capacity=33792,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@35ef1869[inUse=0,size=0,max=2147483647,closed=false]{capacity=34816,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@c33b74f[inUse=0,size=0,max=2147483647,closed=false]{capacity=35840,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@130161f7[inUse=0,size=0,max=2147483647,closed=false]{capacity=36864,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@2c767a52[inUse=0,size=0,max=2147483647,closed=false]{capacity=37888,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@619713e5[inUse=0,size=0,max=2147483647,closed=false]{capacity=38912,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@708f5957[inUse=0,size=0,max=2147483647,closed=false]{capacity=39936,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@68999068[inUse=0,size=0,max=2147483647,closed=false]{capacity=40960,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@7722c3c3[inUse=0,size=0,max=2147483647,closed=false]{capacity=41984,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@2ef3eef9[inUse=0,size=0,max=2147483647,closed=false]{capacity=43008,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@243c4f91[inUse=0,size=0,max=2147483647,closed=false]{capacity=44032,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@291ae[inUse=0,size=0,max=2147483647,closed=false]{capacity=45056,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@61df66b6[inUse=0,size=0,max=2147483647,closed=false]{capacity=46080,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@50eac852[inUse=0,size=0,max=2147483647,closed=false]{capacity=47104,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@16ec5519[inUse=0,size=0,max=2147483647,closed=false]{capacity=48128,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@2f7298b[inUse=0,size=0,max=2147483647,closed=false]{capacity=49152,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@188715b5[inUse=0,size=0,max=2147483647,closed=false]{capacity=50176,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@1ea9f6af[inUse=0,size=0,max=2147483647,closed=false]{capacity=51200,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@6a192cfe[inUse=0,size=0,max=2147483647,closed=false]{capacity=52224,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@5119fb47[inUse=0,size=0,max=2147483647,closed=false]{capacity=53248,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@7193666c[inUse=0,size=0,max=2147483647,closed=false]{capacity=54272,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@20deea7f[inUse=0,size=0,max=2147483647,closed=false]{capacity=55296,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@3835c46[inUse=0,size=0,max=2147483647,closed=false]{capacity=56320,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@1dde4cb2[inUse=0,size=0,max=2147483647,closed=false]{capacity=57344,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@7714e963[inUse=0,size=0,max=2147483647,closed=false]{capacity=58368,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@20ce78ec[inUse=0,size=0,max=2147483647,closed=false]{capacity=59392,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@393671df[inUse=0,size=0,max=2147483647,closed=false]{capacity=60416,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@56620197[inUse=0,size=0,max=2147483647,closed=false]{capacity=61440,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@6eda5c9[inUse=0,size=0,max=2147483647,closed=false]{capacity=62464,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@55b7a4e0[inUse=0,size=0,max=2147483647,closed=false]{capacity=63488,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@5f058f00[inUse=0,size=0,max=2147483647,closed=false]{capacity=64512,inuse=0(0%)}
+|  |  |  |  +&gt; entries size=0
+|  |  |  +&gt; Bucket@192d43ce[inUse=0,size=0,max=2147483647,closed=false]{capacity=65536,inuse=0(0%)}
+|  |  |     +&gt; entries size=0
+|  |  +&gt; indirect size=64
+|  |     +&gt; Bucket@72057ecf[inUse=0,size=0,max=2147483647,closed=false]{capacity=1024,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@1afd44cb[inUse=0,size=0,max=2147483647,closed=false]{capacity=2048,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@6973b51b[inUse=0,size=0,max=2147483647,closed=false]{capacity=3072,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@1ab3a8c8[inUse=0,size=0,max=2147483647,closed=false]{capacity=4096,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@43195e57[inUse=0,size=0,max=2147483647,closed=false]{capacity=5120,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@333291e3[inUse=0,size=0,max=2147483647,closed=false]{capacity=6144,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@479d31f3[inUse=0,size=0,max=2147483647,closed=false]{capacity=7168,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@40ef3420[inUse=0,size=0,max=2147483647,closed=false]{capacity=8192,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@498d318c[inUse=0,size=0,max=2147483647,closed=false]{capacity=9216,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@6e171cd7[inUse=0,size=0,max=2147483647,closed=false]{capacity=10240,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@402bba4f[inUse=0,size=0,max=2147483647,closed=false]{capacity=11264,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@795cd85e[inUse=0,size=0,max=2147483647,closed=false]{capacity=12288,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@59fd97a8[inUse=0,size=0,max=2147483647,closed=false]{capacity=13312,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@f5ac9e4[inUse=0,size=0,max=2147483647,closed=false]{capacity=14336,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@123ef382[inUse=0,size=0,max=2147483647,closed=false]{capacity=15360,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@dbf57b3[inUse=0,size=0,max=2147483647,closed=false]{capacity=16384,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@384ad17b[inUse=0,size=0,max=2147483647,closed=false]{capacity=17408,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@61862a7f[inUse=0,size=0,max=2147483647,closed=false]{capacity=18432,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@441772e[inUse=0,size=0,max=2147483647,closed=false]{capacity=19456,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@7334aada[inUse=0,size=0,max=2147483647,closed=false]{capacity=20480,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@1d9b7cce[inUse=0,size=0,max=2147483647,closed=false]{capacity=21504,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@4d9e68d0[inUse=0,size=0,max=2147483647,closed=false]{capacity=22528,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@42e99e4a[inUse=0,size=0,max=2147483647,closed=false]{capacity=23552,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@14dd9eb7[inUse=0,size=0,max=2147483647,closed=false]{capacity=24576,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@52e6fdee[inUse=0,size=0,max=2147483647,closed=false]{capacity=25600,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@6c80d78a[inUse=0,size=0,max=2147483647,closed=false]{capacity=26624,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@62150f9e[inUse=0,size=0,max=2147483647,closed=false]{capacity=27648,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@1a451d4d[inUse=0,size=0,max=2147483647,closed=false]{capacity=28672,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@7fa98a66[inUse=0,size=0,max=2147483647,closed=false]{capacity=29696,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@15ff3e9e[inUse=0,size=0,max=2147483647,closed=false]{capacity=30720,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@5fdcaa40[inUse=0,size=0,max=2147483647,closed=false]{capacity=31744,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@6dc17b83[inUse=0,size=0,max=2147483647,closed=false]{capacity=32768,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@5e0826e7[inUse=0,size=0,max=2147483647,closed=false]{capacity=33792,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@32eff876[inUse=0,size=0,max=2147483647,closed=false]{capacity=34816,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@8dbdac1[inUse=0,size=0,max=2147483647,closed=false]{capacity=35840,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@6e20b53a[inUse=0,size=0,max=2147483647,closed=false]{capacity=36864,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@71809907[inUse=0,size=0,max=2147483647,closed=false]{capacity=37888,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@3ce1e309[inUse=0,size=0,max=2147483647,closed=false]{capacity=38912,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@6aba2b86[inUse=0,size=0,max=2147483647,closed=false]{capacity=39936,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@158da8e[inUse=0,size=0,max=2147483647,closed=false]{capacity=40960,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@74e52303[inUse=0,size=0,max=2147483647,closed=false]{capacity=41984,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@47af7f3d[inUse=0,size=0,max=2147483647,closed=false]{capacity=43008,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@7c729a55[inUse=0,size=0,max=2147483647,closed=false]{capacity=44032,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@3bb9a3ff[inUse=0,size=0,max=2147483647,closed=false]{capacity=45056,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@661972b0[inUse=0,size=0,max=2147483647,closed=false]{capacity=46080,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@5af3afd9[inUse=0,size=0,max=2147483647,closed=false]{capacity=47104,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@323b36e0[inUse=0,size=0,max=2147483647,closed=false]{capacity=48128,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@44ebcd03[inUse=0,size=0,max=2147483647,closed=false]{capacity=49152,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@694abbdc[inUse=0,size=0,max=2147483647,closed=false]{capacity=50176,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@2e005c4b[inUse=0,size=0,max=2147483647,closed=false]{capacity=51200,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@4567f35d[inUse=0,size=0,max=2147483647,closed=false]{capacity=52224,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@5ffead27[inUse=0,size=0,max=2147483647,closed=false]{capacity=53248,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@6356695f[inUse=0,size=0,max=2147483647,closed=false]{capacity=54272,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@4f18837a[inUse=0,size=0,max=2147483647,closed=false]{capacity=55296,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@359f7cdf[inUse=0,size=0,max=2147483647,closed=false]{capacity=56320,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@1fa268de[inUse=0,size=0,max=2147483647,closed=false]{capacity=57344,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@4f6ee6e4[inUse=0,size=0,max=2147483647,closed=false]{capacity=58368,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@4466af20[inUse=0,size=0,max=2147483647,closed=false]{capacity=59392,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@a514af7[inUse=0,size=0,max=2147483647,closed=false]{capacity=60416,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@6b927fb[inUse=0,size=0,max=2147483647,closed=false]{capacity=61440,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@3e58a80e[inUse=0,size=0,max=2147483647,closed=false]{capacity=62464,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@4fb61f4a[inUse=0,size=0,max=2147483647,closed=false]{capacity=63488,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@4fb0f2b9[inUse=0,size=0,max=2147483647,closed=false]{capacity=64512,inuse=0(0%)}
+|  |     |  +&gt; entries size=0
+|  |     +&gt; Bucket@79924b[inUse=0,size=0,max=2147483647,closed=false]{capacity=65536,inuse=0(0%)}
+|  |        +&gt; entries size=0
+|  +- org.eclipse.jetty.server.AbstractConnector$1@7b9a4292
+|  += HttpConnectionFactory@62e136d3[HTTP/1.1] - STARTED
+|  |  +- HttpConfiguration@9f116cc{32768/8192,8192/8192,https://:0,[]}
 |  |     +&gt; customizers size=0
 |  |     +&gt; formEncodedMethods size=2
 |  |     |  +&gt; POST
@@ -11656,43 +12254,43 @@
 |  |     +&gt; maxErrorDispatches=10
 |  |     +&gt; minRequestDataRate=0
 |  |     +&gt; minResponseDataRate=0
-|  |     +&gt; requestCookieCompliance=org.eclipse.jetty.http.CookieCompliance@6e9a5ed8
-|  |     +&gt; responseCookieCompliance=org.eclipse.jetty.http.CookieCompliance@6e9a5ed8
+|  |     +&gt; requestCookieCompliance=org.eclipse.jetty.http.CookieCompliance@67d48005
+|  |     +&gt; responseCookieCompliance=org.eclipse.jetty.http.CookieCompliance@67d48005
 |  |     +&gt; notifyRemoteAsyncErrors=true
 |  |     +&gt; relativeRedirectAllowed=false
-|  += SelectorManager@ServerConnector@38271e76{HTTP/1.1, (http/1.1)}{0.0.0.0:8080} - STARTED
-|  |  += ManagedSelector@70ed52de{STARTED} id=0 keys=0 selected=0 updates=0 - STARTED
-|  |     += AdaptiveExecutionStrategy@496bc455/SelectorProducer@792b749c/PRODUCING/p=false/QueuedThreadPool[qtp71399214]@441772e{STARTED,4&lt;=4&lt;=200,i=2,r=-1,q=0}[ReservedThreadExecutor@72035809{s=0/8,p=0}][pc=0,pic=0,pec=0,epc=0]@2021-06-29T10:44:24.380199-05:00 - STARTED
-|  |     |  +- SelectorProducer@792b749c
-|  |     |  +~ QueuedThreadPool[qtp71399214]@441772e{STARTED,4&lt;=4&lt;=200,i=2,r=-1,q=0}[ReservedThreadExecutor@72035809{s=0/8,p=0}] - STARTED
-|  |     +&gt; updates @ 2021-06-29T10:44:24.368256-05:00 size=0
-|  |     +&gt; keys @ 2021-06-29T10:44:24.374878-05:00 size=0
-|  +- sun.nio.ch.ServerSocketChannelImpl[/0:0:0:0:0:0:0:0:8080]
-|  +- qtp71399214-14-acceptor-0@3c189d2d-ServerConnector@38271e76{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
-+- org.eclipse.jetty.util.component.HaltLifeCycleListener@23e84203
-+= ErrorHandler@19932c16{STARTED} - STARTED
-+&gt; startJarLoader@3dfc5fb8
+|  += SelectorManager@ServerConnector@1184ab05{HTTP/1.1, (http/1.1)}{0.0.0.0:8080} - STARTED
+|  |  += ManagedSelector@5876a9af{STARTED} id=0 keys=0 selected=0 updates=0 - STARTED <i class="conum" data-value="5"></i><b>(5)</b>
+|  |     += AdaptiveExecutionStrategy@7ec7ffd3/SelectorProducer@5b239d7d/PRODUCING/p=false/QueuedThreadPool[qtp143110009]@887af79{STARTED,4&lt;=4&lt;=200,i=2,r=-1,q=0}[ReservedThreadExecutor@57c758ac{reserved=0/8,pending=0}][pc=0,pic=0,pec=0,epc=0]@2021-10-06T14:48:38.047619-05:00 - STARTED
+|  |     |  +- SelectorProducer@5b239d7d
+|  |     |  +~ QueuedThreadPool[qtp143110009]@887af79{STARTED,4&lt;=4&lt;=200,i=2,r=-1,q=0}[ReservedThreadExecutor@57c758ac{reserved=0/8,pending=0}] - STARTED
+|  |     +&gt; updates @ 2021-10-06T14:48:38.044713-05:00 size=0
+|  |     +&gt; keys @ 2021-10-06T14:48:38.04669-05:00 size=0 <i class="conum" data-value="6"></i><b>(6)</b>
+|  +- sun.nio.ch.ServerSocketChannelImpl[/[0:0:0:0:0:0:0:0]:8080]
+|  +- qtp143110009-17-acceptor-0@6a61babe-ServerConnector@1184ab05{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
++- org.eclipse.jetty.util.component.HaltLifeCycleListener@6572421
++= ErrorHandler@6b81ce95{STARTED} - STARTED
++&gt; startJarLoader@28ba21f3 <i class="conum" data-value="7"></i><b>(7)</b>
    +&gt; URLs size=9
    |  +&gt; file:/path/to/jetty.base/resources/
-   |  +&gt; file:/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha1.jar
-   |  +&gt; file:/path/to/jetty.home/lib/logging/jetty-slf4j-impl-10.0.6.jar
+   |  +&gt; file:/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha5.jar
+   |  +&gt; file:/path/to/jetty.home/lib/logging/jetty-slf4j-impl-10.0.7.jar
    |  +&gt; file:/path/to/jetty.home/lib/jetty-servlet-api-4.0.6.jar
-   |  +&gt; file:/path/to/jetty.home/lib/jetty-http-10.0.6.jar
-   |  +&gt; file:/path/to/jetty.home/lib/jetty-server-10.0.6.jar
-   |  +&gt; file:/path/to/jetty.home/lib/jetty-xml-10.0.6.jar
-   |  +&gt; file:/path/to/jetty.home/lib/jetty-util-10.0.6.jar
-   |  +&gt; file:/path/to/jetty.home/lib/jetty-io-10.0.6.jar
-   +&gt; jdk.internal.loader.ClassLoaders$AppClassLoader@277050dc
+   |  +&gt; file:/path/to/jetty.home/lib/jetty-http-10.0.7.jar
+   |  +&gt; file:/path/to/jetty.home/lib/jetty-server-10.0.7.jar
+   |  +&gt; file:/path/to/jetty.home/lib/jetty-xml-10.0.7.jar
+   |  +&gt; file:/path/to/jetty.home/lib/jetty-util-10.0.7.jar
+   |  +&gt; file:/path/to/jetty.home/lib/jetty-io-10.0.7.jar
+   +&gt; jdk.internal.loader.ClassLoaders$AppClassLoader@42110406
       +&gt; packages size=4
       |  +&gt; package org.eclipse.jetty.start.config
       |  +&gt; package org.eclipse.jetty.start.builders
       |  +&gt; package org.eclipse.jetty.start.shaded.util
       |  +&gt; package org.eclipse.jetty.start
-      +&gt; jdk.internal.loader.ClassLoaders$PlatformClassLoader@52f27fbd
+      +&gt; jdk.internal.loader.ClassLoaders$PlatformClassLoader@3f5f02d7
          +&gt; packages size=2
             +&gt; package sun.util.resources.provider
             +&gt; package sun.util.resources.cldr.provider
-key: +- bean, += managed, +~ unmanaged, +? auto, +: iterable, +] array, +@ map, +&gt; undefined</code></pre>
+key: +- bean, += managed, +~ unmanaged, +? auto, +: iterable, +] array, +@ map, +&gt; undefined <i class="conum" data-value="8"></i><b>(8)</b></code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -11707,34 +12305,26 @@
 </tr>
 <tr>
 <td><i class="conum" data-value="3"></i><b>3</b></td>
-<td>The thread accepting connections</td>
-</tr>
-<tr>
-<td><i class="conum" data-value="4"></i><b>4</b></td>
-<td>The thread selecting connections</td>
-</tr>
-<tr>
-<td><i class="conum" data-value="5"></i><b>5</b></td>
 <td>The root of the <code>Handler</code> structure</td>
 </tr>
 <tr>
-<td><i class="conum" data-value="6"></i><b>6</b></td>
+<td><i class="conum" data-value="4"></i><b>4</b></td>
 <td>The connector listening on port <code>8080</code> for the HTTP/1.1 protocol</td>
 </tr>
 <tr>
-<td><i class="conum" data-value="7"></i><b>7</b></td>
+<td><i class="conum" data-value="5"></i><b>5</b></td>
 <td>A selector component that manages connections</td>
 </tr>
 <tr>
-<td><i class="conum" data-value="8"></i><b>8</b></td>
+<td><i class="conum" data-value="6"></i><b>6</b></td>
 <td>The connections currently managed by the selector component</td>
 </tr>
 <tr>
-<td><i class="conum" data-value="9"></i><b>9</b></td>
+<td><i class="conum" data-value="7"></i><b>7</b></td>
 <td>The server <code>ClassLoader</code> and its classpath</td>
 </tr>
 <tr>
-<td><i class="conum" data-value="10"></i><b>10</b></td>
+<td><i class="conum" data-value="8"></i><b>8</b></td>
 <td>The legend for the dump nodes</td>
 </tr>
 </table>
@@ -11896,7 +12486,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="java">var mystring = <span class="keyword">new</span> <span class="predefined-type">String</span>();</code></pre>
+<pre class="CodeRay highlight"><code data-lang="java"><span class="type">var</span> mystring = <span class="keyword">new</span> <span class="predefined-type">String</span>();</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -11970,7 +12560,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="java">var mylist = <span class="keyword">new</span> <span class="predefined-type">ArrayList</span>(<span class="integer">16</span>);</code></pre>
+<pre class="CodeRay highlight"><code data-lang="java"><span class="type">var</span> mylist = <span class="keyword">new</span> <span class="predefined-type">ArrayList</span>(<span class="integer">16</span>);</code></pre>
 </div>
 </div>
 </div>
@@ -12026,7 +12616,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="java">var myhost = <span class="predefined-type">InetAddress</span>.getByName(<span class="string"><span class="delimiter">&quot;</span><span class="content">jdk.java.net</span><span class="delimiter">&quot;</span></span>);</code></pre>
+<pre class="CodeRay highlight"><code data-lang="java"><span class="type">var</span> myhost = <span class="predefined-type">InetAddress</span>.getByName(<span class="string"><span class="delimiter">&quot;</span><span class="content">jdk.java.net</span><span class="delimiter">&quot;</span></span>);</code></pre>
 </div>
 </div>
 </div>
@@ -12360,10 +12950,9 @@
 </div>
 <div id="footer">
 <div id="footer-text">
-Version 10.0.6<br>
-Last updated 2021-06-24 11:28:34 -0500
+Version 10.0.7<br>
+Last updated 2021-10-06 12:51:45 -0500
 </div>
 </div>
-<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </body>
 </html>
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-05cfcead1245ff0fbcf3af8873998cee.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-05cfcead1245ff0fbcf3af8873998cee.png.cache
index 12d49d9..5c382db 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-05cfcead1245ff0fbcf3af8873998cee.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-05cfcead1245ff0fbcf3af8873998cee.png.cache
@@ -1 +1 @@
-{"checksum":"05cfcead1245ff0fbcf3af8873998cee","options":{"config":null},"width":450,"height":219}
\ No newline at end of file
+{"checksum":"05cfcead1245ff0fbcf3af8873998cee","options":{"size_limit":"4096"},"width":445,"height":210}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-136e615bb97d8356ceb17a851c86817a.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-136e615bb97d8356ceb17a851c86817a.png.cache
index a68f2f7..9444e4c 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-136e615bb97d8356ceb17a851c86817a.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-136e615bb97d8356ceb17a851c86817a.png.cache
@@ -1 +1 @@
-{"checksum":"136e615bb97d8356ceb17a851c86817a","options":{"config":null},"width":377,"height":211}
\ No newline at end of file
+{"checksum":"136e615bb97d8356ceb17a851c86817a","options":{"size_limit":"4096"},"width":369,"height":208}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-1ed737fca2f0d63f7ebac20672a2e222.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-1ed737fca2f0d63f7ebac20672a2e222.png.cache
index eeed8b7..18b2a0d 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-1ed737fca2f0d63f7ebac20672a2e222.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-1ed737fca2f0d63f7ebac20672a2e222.png.cache
@@ -1 +1 @@
-{"checksum":"1ed737fca2f0d63f7ebac20672a2e222","options":{"config":null},"width":684,"height":575}
\ No newline at end of file
+{"checksum":"1ed737fca2f0d63f7ebac20672a2e222","options":{"size_limit":"4096"},"width":676,"height":572}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-3ca149653ee220164efd33ca869b97b5.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-3ca149653ee220164efd33ca869b97b5.png.cache
index 1bb98f6..18fc929 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-3ca149653ee220164efd33ca869b97b5.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-3ca149653ee220164efd33ca869b97b5.png.cache
@@ -1 +1 @@
-{"checksum":"3ca149653ee220164efd33ca869b97b5","options":{"config":null},"width":667,"height":342}
\ No newline at end of file
+{"checksum":"3ca149653ee220164efd33ca869b97b5","options":{"size_limit":"4096"},"width":659,"height":339}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-3e23a5cd9673dbe358271d004cc0d714.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-3e23a5cd9673dbe358271d004cc0d714.png.cache
index 75f8bb3..eb067d5 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-3e23a5cd9673dbe358271d004cc0d714.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-3e23a5cd9673dbe358271d004cc0d714.png.cache
@@ -1 +1 @@
-{"checksum":"3e23a5cd9673dbe358271d004cc0d714","options":{"config":null},"width":341,"height":282}
\ No newline at end of file
+{"checksum":"3e23a5cd9673dbe358271d004cc0d714","options":{"size_limit":"4096"},"width":345,"height":284}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-4760564aad148998e116357e8f3a5450.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-4760564aad148998e116357e8f3a5450.png.cache
index f48d311..7b8805e 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-4760564aad148998e116357e8f3a5450.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-4760564aad148998e116357e8f3a5450.png.cache
@@ -1 +1 @@
-{"checksum":"4760564aad148998e116357e8f3a5450","options":{"config":null},"width":679,"height":520}
\ No newline at end of file
+{"checksum":"4760564aad148998e116357e8f3a5450","options":{"size_limit":"4096"},"width":671,"height":517}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-63a9fb2dbcfbcb3fb7bb1dffc2609836.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-63a9fb2dbcfbcb3fb7bb1dffc2609836.png.cache
new file mode 100644
index 0000000..9c63069
--- /dev/null
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-63a9fb2dbcfbcb3fb7bb1dffc2609836.png.cache
@@ -0,0 +1 @@
+{"checksum":"63a9fb2dbcfbcb3fb7bb1dffc2609836","options":{"size_limit":"4096"},"width":900,"height":241}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-8bbf1fa0b84011383e811eaf9e630100.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-8bbf1fa0b84011383e811eaf9e630100.png.cache
index 959258c..f8b11be 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-8bbf1fa0b84011383e811eaf9e630100.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-8bbf1fa0b84011383e811eaf9e630100.png.cache
@@ -1 +1 @@
-{"checksum":"8bbf1fa0b84011383e811eaf9e630100","options":{"config":null},"width":336,"height":174}
\ No newline at end of file
+{"checksum":"8bbf1fa0b84011383e811eaf9e630100","options":{"size_limit":"4096"},"width":340,"height":176}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-ae4b86cecdafb2b8e1afb35b06f359a1.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-ae4b86cecdafb2b8e1afb35b06f359a1.png.cache
index c941e4a..87127cf 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-ae4b86cecdafb2b8e1afb35b06f359a1.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-ae4b86cecdafb2b8e1afb35b06f359a1.png.cache
@@ -1 +1 @@
-{"checksum":"ae4b86cecdafb2b8e1afb35b06f359a1","options":{"config":null},"width":177,"height":218}
\ No newline at end of file
+{"checksum":"ae4b86cecdafb2b8e1afb35b06f359a1","options":{"size_limit":"4096"},"width":166,"height":203}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-d8ecf025f2e851a45b4d2132df024ecb.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-d8ecf025f2e851a45b4d2132df024ecb.png.cache
new file mode 100644
index 0000000..5073b48
--- /dev/null
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-d8ecf025f2e851a45b4d2132df024ecb.png.cache
@@ -0,0 +1 @@
+{"checksum":"d8ecf025f2e851a45b4d2132df024ecb","options":{"size_limit":"4096"},"width":682,"height":100}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-e7fd1b7ba54e07262bd726c9fe979363.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-e7fd1b7ba54e07262bd726c9fe979363.png.cache
index 692360c..8758588 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-e7fd1b7ba54e07262bd726c9fe979363.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-e7fd1b7ba54e07262bd726c9fe979363.png.cache
@@ -1 +1 @@
-{"checksum":"e7fd1b7ba54e07262bd726c9fe979363","options":{"config":null},"width":719,"height":416}
\ No newline at end of file
+{"checksum":"e7fd1b7ba54e07262bd726c9fe979363","options":{"size_limit":"4096"},"width":711,"height":413}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-ec0156d64fc9a225c5e022fc352d7d46.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-ec0156d64fc9a225c5e022fc352d7d46.png.cache
index c719922..37d3f9b 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-ec0156d64fc9a225c5e022fc352d7d46.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-ec0156d64fc9a225c5e022fc352d7d46.png.cache
@@ -1 +1 @@
-{"checksum":"ec0156d64fc9a225c5e022fc352d7d46","options":{"config":null},"width":511,"height":539}
\ No newline at end of file
+{"checksum":"ec0156d64fc9a225c5e022fc352d7d46","options":{"size_limit":"4096"},"width":515,"height":541}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-fada5fbf7628dc70c998680727a069bd.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-fada5fbf7628dc70c998680727a069bd.png.cache
index 61550c4..3ea4558 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-fada5fbf7628dc70c998680727a069bd.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-fada5fbf7628dc70c998680727a069bd.png.cache
@@ -1 +1 @@
-{"checksum":"fada5fbf7628dc70c998680727a069bd","options":{"config":null},"width":695,"height":514}
\ No newline at end of file
+{"checksum":"fada5fbf7628dc70c998680727a069bd","options":{"size_limit":"4096"},"width":687,"height":511}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-fb3e088ea5480f2b172677334c79d51f.png.cache b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-fb3e088ea5480f2b172677334c79d51f.png.cache
index 7388bda..dbb7dfe 100644
--- a/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-fb3e088ea5480f2b172677334c79d51f.png.cache
+++ b/documentation/jetty-10/programming-guide/.asciidoctor/diagram/diag-fb3e088ea5480f2b172677334c79d51f.png.cache
@@ -1 +1 @@
-{"checksum":"fb3e088ea5480f2b172677334c79d51f","options":{"config":null},"width":1210,"height":303}
\ No newline at end of file
+{"checksum":"fb3e088ea5480f2b172677334c79d51f","options":{"size_limit":"4096"},"width":1214,"height":305}
\ No newline at end of file
diff --git a/documentation/jetty-10/programming-guide/asciidoctor.css b/documentation/jetty-10/programming-guide/asciidoctor.css
index 9d9cc70..65ec3f3 100644
--- a/documentation/jetty-10/programming-guide/asciidoctor.css
+++ b/documentation/jetty-10/programming-guide/asciidoctor.css
@@ -37,7 +37,7 @@
 table{border-collapse:collapse;border-spacing:0}
 *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
 html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
 a:hover{cursor:pointer}
 img,object,embed{max-width:100%;height:auto}
 object,embed{height:100%}
@@ -52,10 +52,8 @@
 img,object,svg{display:inline-block;vertical-align:middle}
 textarea{height:auto;min-height:50px}
 select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.stretch{width:100%}
 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
 a{color:#2156a5;text-decoration:underline;line-height:inherit}
 a:hover,a:focus{color:#1d4b8f}
 a img{border:0}
@@ -86,28 +84,28 @@
 abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
 abbr{text-transform:none}
 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite::before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
 h1{font-size:2.75em}
 h2{font-size:2.3125em}
 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
 h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
 table thead,table tfoot{background:#f7f8f7}
 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
 table tr.even,table tr.alt{background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
 .clearfix::after,.float-group::after{clear:both}
-:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
-:not(pre)>code.nobreak{word-wrap:normal}
-:not(pre)>code.nowrap{white-space:nowrap}
+:not(pre).nobreak{word-wrap:normal}
+:not(pre).nowrap{white-space:nowrap}
+:not(pre).pre-wrap{white-space:pre-wrap}
+:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
 pre>code{display:block}
@@ -172,7 +170,7 @@
 #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
 #content #toc>:first-child{margin-top:0}
 #content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
+#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
 #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
 #content{margin-bottom:.625em}
 .sect1{padding-bottom:.625em}
@@ -195,7 +193,7 @@
 .admonitionblock>table td.icon{text-align:center;width:80px}
 .admonitionblock>table td.icon img{max-width:none}
 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
 .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
 .exampleblock>.content>:first-child{margin-top:0}
@@ -205,7 +203,7 @@
 .sidebarblock>:last-child{margin-bottom:0}
 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
 .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
@@ -250,22 +248,21 @@
 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
-.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
-table.tableblock{max-width:100%;border-collapse:separate}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
 p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
-td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
-table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
-table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
-table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
-table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
-table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
-table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.grid-all>*>tr>*{border-width:1px}
+table.grid-cols>*>tr>*{border-width:0 1px}
+table.grid-rows>*>tr>*{border-width:1px 0}
 table.frame-all{border-width:1px}
+table.frame-ends{border-width:1px 0}
 table.frame-sides{border-width:0 1px}
-table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
+table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
+table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
+table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
 table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
 th.halign-left,td.halign-left{text-align:left}
 th.halign-right,td.halign-right{text-align:right}
@@ -274,7 +271,7 @@
 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
 th.valign-middle,td.valign-middle{vertical-align:middle}
 table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th{background:#f7f8f7}
 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
 p.tableblock>code:only-child{background:none;padding:0}
 p.tableblock{font-size:1em}
@@ -303,6 +300,7 @@
 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+td.hdlist2{word-wrap:anywhere}
 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
 .colist td:not([class]):first-child img{max-width:none}
@@ -375,7 +373,7 @@
 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
 .conum[data-value] *{color:#fff!important}
 .conum[data-value]+b{display:none}
 .conum[data-value]::after{content:attr(data-value)}
@@ -402,6 +400,7 @@
 svg{max-width:100%}
 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#header,#content,#footnotes,#footer{max-width:none}
 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
 body.book #header{text-align:center}
diff --git a/documentation/jetty-10/programming-guide/diag-05cfcead1245ff0fbcf3af8873998cee.png b/documentation/jetty-10/programming-guide/diag-05cfcead1245ff0fbcf3af8873998cee.png
index f3b8ab1..c3149f4 100644
--- a/documentation/jetty-10/programming-guide/diag-05cfcead1245ff0fbcf3af8873998cee.png
+++ b/documentation/jetty-10/programming-guide/diag-05cfcead1245ff0fbcf3af8873998cee.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-136e615bb97d8356ceb17a851c86817a.png b/documentation/jetty-10/programming-guide/diag-136e615bb97d8356ceb17a851c86817a.png
index 75fd6b6..afe27f6 100644
--- a/documentation/jetty-10/programming-guide/diag-136e615bb97d8356ceb17a851c86817a.png
+++ b/documentation/jetty-10/programming-guide/diag-136e615bb97d8356ceb17a851c86817a.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-1ed737fca2f0d63f7ebac20672a2e222.png b/documentation/jetty-10/programming-guide/diag-1ed737fca2f0d63f7ebac20672a2e222.png
index 9c6fea9..f1972d0 100644
--- a/documentation/jetty-10/programming-guide/diag-1ed737fca2f0d63f7ebac20672a2e222.png
+++ b/documentation/jetty-10/programming-guide/diag-1ed737fca2f0d63f7ebac20672a2e222.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-3ca149653ee220164efd33ca869b97b5.png b/documentation/jetty-10/programming-guide/diag-3ca149653ee220164efd33ca869b97b5.png
index 755d322..ef79422 100644
--- a/documentation/jetty-10/programming-guide/diag-3ca149653ee220164efd33ca869b97b5.png
+++ b/documentation/jetty-10/programming-guide/diag-3ca149653ee220164efd33ca869b97b5.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-3e23a5cd9673dbe358271d004cc0d714.png b/documentation/jetty-10/programming-guide/diag-3e23a5cd9673dbe358271d004cc0d714.png
index 9170ef0..41097a0 100644
--- a/documentation/jetty-10/programming-guide/diag-3e23a5cd9673dbe358271d004cc0d714.png
+++ b/documentation/jetty-10/programming-guide/diag-3e23a5cd9673dbe358271d004cc0d714.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-4760564aad148998e116357e8f3a5450.png b/documentation/jetty-10/programming-guide/diag-4760564aad148998e116357e8f3a5450.png
index ff91c45..6a39d04 100644
--- a/documentation/jetty-10/programming-guide/diag-4760564aad148998e116357e8f3a5450.png
+++ b/documentation/jetty-10/programming-guide/diag-4760564aad148998e116357e8f3a5450.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-63a9fb2dbcfbcb3fb7bb1dffc2609836.png b/documentation/jetty-10/programming-guide/diag-63a9fb2dbcfbcb3fb7bb1dffc2609836.png
new file mode 100644
index 0000000..20c42a4
--- /dev/null
+++ b/documentation/jetty-10/programming-guide/diag-63a9fb2dbcfbcb3fb7bb1dffc2609836.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-8bbf1fa0b84011383e811eaf9e630100.png b/documentation/jetty-10/programming-guide/diag-8bbf1fa0b84011383e811eaf9e630100.png
index 2401971..68ba03a 100644
--- a/documentation/jetty-10/programming-guide/diag-8bbf1fa0b84011383e811eaf9e630100.png
+++ b/documentation/jetty-10/programming-guide/diag-8bbf1fa0b84011383e811eaf9e630100.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-ae4b86cecdafb2b8e1afb35b06f359a1.png b/documentation/jetty-10/programming-guide/diag-ae4b86cecdafb2b8e1afb35b06f359a1.png
index 0baaaed..549e56a 100644
--- a/documentation/jetty-10/programming-guide/diag-ae4b86cecdafb2b8e1afb35b06f359a1.png
+++ b/documentation/jetty-10/programming-guide/diag-ae4b86cecdafb2b8e1afb35b06f359a1.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-d8ecf025f2e851a45b4d2132df024ecb.png b/documentation/jetty-10/programming-guide/diag-d8ecf025f2e851a45b4d2132df024ecb.png
new file mode 100644
index 0000000..cdc0715
--- /dev/null
+++ b/documentation/jetty-10/programming-guide/diag-d8ecf025f2e851a45b4d2132df024ecb.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-e7fd1b7ba54e07262bd726c9fe979363.png b/documentation/jetty-10/programming-guide/diag-e7fd1b7ba54e07262bd726c9fe979363.png
index 4acdcbb..e52a70c 100644
--- a/documentation/jetty-10/programming-guide/diag-e7fd1b7ba54e07262bd726c9fe979363.png
+++ b/documentation/jetty-10/programming-guide/diag-e7fd1b7ba54e07262bd726c9fe979363.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-ec0156d64fc9a225c5e022fc352d7d46.png b/documentation/jetty-10/programming-guide/diag-ec0156d64fc9a225c5e022fc352d7d46.png
index 593d40d..799f34c 100644
--- a/documentation/jetty-10/programming-guide/diag-ec0156d64fc9a225c5e022fc352d7d46.png
+++ b/documentation/jetty-10/programming-guide/diag-ec0156d64fc9a225c5e022fc352d7d46.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-fada5fbf7628dc70c998680727a069bd.png b/documentation/jetty-10/programming-guide/diag-fada5fbf7628dc70c998680727a069bd.png
index ff3a9fb..5c10ef4 100644
--- a/documentation/jetty-10/programming-guide/diag-fada5fbf7628dc70c998680727a069bd.png
+++ b/documentation/jetty-10/programming-guide/diag-fada5fbf7628dc70c998680727a069bd.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/diag-fb3e088ea5480f2b172677334c79d51f.png b/documentation/jetty-10/programming-guide/diag-fb3e088ea5480f2b172677334c79d51f.png
index ff77780..1b8728f 100644
--- a/documentation/jetty-10/programming-guide/diag-fb3e088ea5480f2b172677334c79d51f.png
+++ b/documentation/jetty-10/programming-guide/diag-fb3e088ea5480f2b172677334c79d51f.png
Binary files differ
diff --git a/documentation/jetty-10/programming-guide/index.html b/documentation/jetty-10/programming-guide/index.html
index 5130358..b55ba8c 100644
--- a/documentation/jetty-10/programming-guide/index.html
+++ b/documentation/jetty-10/programming-guide/index.html
@@ -4,11 +4,12 @@
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 2.0.10">
+<meta name="generator" content="Asciidoctor 2.0.15">
 <title>Eclipse Jetty: Programming Guide</title>
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
 <link rel="stylesheet" href="./asciidoctor.css">
 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+<link rel="stylesheet" href="./coderay-asciidoctor.css">
 <link rel="stylesheet" href="../styles.css">
 <link rel="stylesheet" href="../toc.css">
 <script src="../toc.js"></script>
@@ -19,8 +20,8 @@
 <div class="details">
 <span id="author" class="author">Jetty Developers</span><br>
 <span id="email" class="email"><a href="mailto:jetty-dev@eclipse.org">jetty-dev@eclipse.org</a></span><br>
-<span id="revnumber">version 10.0.6,</span>
-<span id="revdate">2021-06-29</span>
+<span id="revnumber">version 10.0.7,</span>
+<span id="revdate">2021-10-06</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Jetty Programming Guide</div>
@@ -274,8 +275,33 @@
 </li>
 </ul>
 </li>
-<li><a href="#pg-server-websocket">WebSocket Server Libraries</a></li>
-<li><a href="#pg-server-io-arch">Server Libraries I/O Architecture</a>
+<li><a href="#pg-server-websocket">WebSocket Server</a>
+<ul class="sectlevel3">
+<li><a href="#pg-server-websocket-standard">Standard APIs Implementation</a>
+<ul class="sectlevel4">
+<li><a href="#pg-server-websocket-standard-container">Setting Up <code>ServerContainer</code></a></li>
+<li><a href="#pg-server-websocket-standard-endpoints">Configuring Endpoints</a>
+<ul class="sectlevel5">
+<li><a href="#pg-server-websocket-standard-upgrade">Upgrade to WebSocket</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#pg-server-websocket-jetty">Jetty APIs Implementation</a>
+<ul class="sectlevel4">
+<li><a href="#pg-server-websocket-jetty-container">Setting up <code>JettyWebSocketServerContainer</code></a></li>
+<li><a href="#pg-server-websocket-jetty-endpoints">Configuring Endpoints</a>
+<ul class="sectlevel5">
+<li><a href="#pg-server-websocket-jetty-endpoints-container">Using <code>JettyWebSocketServerContainer</code></a></li>
+<li><a href="#pg-server-websocket-jetty-endpoints-servlet">Using <code>JettyWebSocketServlet</code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#pg-server-websocket-configure-filter">Advanced <code>WebSocketUpgradeFilter</code> Configuration</a></li>
+</ul>
+</li>
+<li><a href="#pg-server-io-arch">Server I/O Architecture</a>
 <ul class="sectlevel3">
 <li><a href="#pg-server-io-arch-connection-factory">Creating Connections with <code>ConnectionFactory</code></a></li>
 <li><a href="#pg-server-io-arch-connection-factory-wrapping">Wrapping a <code>ConnectionFactory</code></a></li>
@@ -1056,7 +1082,7 @@
 The most common and default format is HTTP/1.1. That said, Jetty&#8217;s HTTP client can carry the same request using the FastCGI format or the HTTP/2 format.</p>
 </div>
 <div class="paragraph">
-<p>The <a href="#pg-client-http-transport-fcgi">FastCGI transport</a> is heavily used in Jetty&#8217;s <a href="#fastcgi">FastCGI support</a> that allows Jetty to work as a reverse proxy to PHP (exactly like Apache or Nginx do) and therefore be able to serve, for example, WordPress websites.</p>
+<p>The <a href="#pg-client-http-transport-fcgi">FastCGI transport</a> is heavily used in Jetty&#8217;s <a href="#pg-server-fastcgi">FastCGI support</a> that allows Jetty to work as a reverse proxy to PHP (exactly like Apache or Nginx do) and therefore be able to serve, for example, WordPress websites.</p>
 </div>
 <div class="paragraph">
 <p>The HTTP/2 transport allows Jetty&#8217;s HTTP client to perform requests using HTTP/2 to HTTP/2 enabled web sites, see also Jetty&#8217;s <a href="#pg-client-http2">HTTP/2 support</a>.</p>
@@ -1092,7 +1118,7 @@
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
   <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty<span class="tag">&lt;/groupId&gt;</span>
   <span class="tag">&lt;artifactId&gt;</span>jetty-client<span class="tag">&lt;/artifactId&gt;</span>
-  <span class="tag">&lt;version&gt;</span>10.0.6<span class="tag">&lt;/version&gt;</span>
+  <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
 <span class="tag">&lt;/dependency&gt;</span></code></pre>
 </div>
 </div>
@@ -1309,7 +1335,7 @@
 <h4 id="pg-client-http-request-processing"><a class="anchor" href="#pg-client-http-request-processing"></a><a class="link" href="#pg-client-http-request-processing">HttpClient Request Processing</a></h4>
 <div class="imageblock">
 <div class="content">
-<img src="diag-4760564aad148998e116357e8f3a5450.png" alt="Diagram" width="679" height="520">
+<img src="diag-4760564aad148998e116357e8f3a5450.png" alt="Diagram" width="671" height="517">
 </div>
 </div>
 <div class="paragraph">
@@ -2083,7 +2109,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-136e615bb97d8356ceb17a851c86817a.png" alt="Diagram" width="377" height="211">
+<img src="diag-136e615bb97d8356ceb17a851c86817a.png" alt="Diagram" width="369" height="208">
 </div>
 </div>
 <div class="paragraph">
@@ -2225,7 +2251,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-e7fd1b7ba54e07262bd726c9fe979363.png" alt="Diagram" width="719" height="416">
+<img src="diag-e7fd1b7ba54e07262bd726c9fe979363.png" alt="Diagram" width="711" height="413">
 </div>
 </div>
 <div class="paragraph">
@@ -2357,10 +2383,10 @@
 </div>
 </div>
 <div class="paragraph">
-<p>In order to make requests using the FastCGI transport, you need to have a FastCGI server such as <a href="https://en.wikipedia.org/wiki/PHP#PHPFPM">PHP-FPM</a> (see also <a href="http://php.net/manual/en/install.fpm.php" class="bare">http://php.net/manual/en/install.fpm.php</a>).</p>
+<p>In order to make requests using the FastCGI transport, you need to have a FastCGI server such as <a href="https://en.wikipedia.org/wiki/PHP#PHPFPM">PHP-FPM</a> (see also link:http://php.net/manual/en/install.fpm.php).</p>
 </div>
 <div class="paragraph">
-<p>The FastCGI transport is primarily used by Jetty&#8217;s <a href="#fastcgi">FastCGI support</a> to serve PHP pages (WordPress for example).</p>
+<p>The FastCGI transport is primarily used by Jetty&#8217;s <a href="#pg-server-fastcgi">FastCGI support</a> to serve PHP pages (WordPress for example).</p>
 </div>
 </div>
 <div class="sect4">
@@ -2514,7 +2540,7 @@
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
   <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty.http2<span class="tag">&lt;/groupId&gt;</span>
   <span class="tag">&lt;artifactId&gt;</span>http2-client<span class="tag">&lt;/artifactId&gt;</span>
-  <span class="tag">&lt;version&gt;</span>10.0.6<span class="tag">&lt;/version&gt;</span>
+  <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
 <span class="tag">&lt;/dependency&gt;</span></code></pre>
 </div>
 </div>
@@ -2699,7 +2725,7 @@
 
 <span class="comment">// Configure the request headers.</span>
 HttpFields requestHeaders = HttpFields.build()
-    .put(HttpHeader.USER_AGENT, <span class="string"><span class="delimiter">&quot;</span><span class="content">Jetty HTTP2Client 10.0.6</span><span class="delimiter">&quot;</span></span>);
+    .put(HttpHeader.USER_AGENT, <span class="string"><span class="delimiter">&quot;</span><span class="content">Jetty HTTP2Client 10.0.7</span><span class="delimiter">&quot;</span></span>);
 
 <span class="comment">// The request metadata with method, URI and headers.</span>
 MetaData.Request request = <span class="keyword">new</span> MetaData.Request(<span class="string"><span class="delimiter">&quot;</span><span class="content">GET</span><span class="delimiter">&quot;</span></span>, HttpURI.from(<span class="string"><span class="delimiter">&quot;</span><span class="content"><a href="http://localhost:8080/path" class="bare">http://localhost:8080/path</a></span><span class="delimiter">&quot;</span></span>), HttpVersion.HTTP_2, requestHeaders);
@@ -3047,7 +3073,7 @@
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
   <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty.websocket<span class="tag">&lt;/groupId&gt;</span>
   <span class="tag">&lt;artifactId&gt;</span>websocket-jetty-client<span class="tag">&lt;/artifactId&gt;</span>
-  <span class="tag">&lt;version&gt;</span>10.0.6<span class="tag">&lt;/version&gt;</span>
+  <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
 <span class="tag">&lt;/dependency&gt;</span></code></pre>
 </div>
 </div>
@@ -3135,7 +3161,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-fada5fbf7628dc70c998680727a069bd.png" alt="Diagram" width="695" height="514">
+<img src="diag-fada5fbf7628dc70c998680727a069bd.png" alt="Diagram" width="687" height="511">
 </div>
 </div>
 <div class="paragraph">
@@ -3189,7 +3215,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-1ed737fca2f0d63f7ebac20672a2e222.png" alt="Diagram" width="684" height="575">
+<img src="diag-1ed737fca2f0d63f7ebac20672a2e222.png" alt="Diagram" width="676" height="572">
 </div>
 </div>
 <div class="paragraph">
@@ -4366,7 +4392,7 @@
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
   <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty<span class="tag">&lt;/groupId&gt;</span>
   <span class="tag">&lt;artifactId&gt;</span>jetty-server<span class="tag">&lt;/artifactId&gt;</span>
-  <span class="tag">&lt;version&gt;</span>10.0.6<span class="tag">&lt;/version&gt;</span>
+  <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
 <span class="tag">&lt;/dependency&gt;</span></code></pre>
 </div>
 </div>
@@ -4375,7 +4401,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-05cfcead1245ff0fbcf3af8873998cee.png" alt="Diagram" width="450" height="219">
+<img src="diag-05cfcead1245ff0fbcf3af8873998cee.png" alt="Diagram" width="445" height="210">
 </div>
 </div>
 <div class="paragraph">
@@ -4445,7 +4471,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-3ca149653ee220164efd33ca869b97b5.png" alt="Diagram" width="667" height="342">
+<img src="diag-3ca149653ee220164efd33ca869b97b5.png" alt="Diagram" width="659" height="339">
 </div>
 </div>
 <div class="paragraph">
@@ -4589,11 +4615,23 @@
 <p>A <code>Connector</code> is the component that handles incoming requests from clients, and works in conjunction with <code>ConnectionFactory</code> instances.</p>
 </div>
 <div class="paragraph">
-<p>The primary implementation is <code>org.eclipse.jetty.server.ServerConnector</code>.
-<code>ServerConnector</code> uses a <code>java.nio.channels.ServerSocketChannel</code> to listen to a TCP port and to accept TCP connections.</p>
+<p>The available implementations are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>org.eclipse.jetty.server.ServerConnector</code>, for TCP/IP sockets.</p>
+</li>
+<li>
+<p><code>org.eclipse.jetty.unixdomain.server.UnixDomainServerConnector</code> for Unix-Domain sockets.</p>
+</li>
+</ul>
 </div>
 <div class="paragraph">
-<p>Since <code>ServerConnector</code> wraps a <code>ServerSocketChannel</code>, it can be configured in a similar way, for example the port to listen to, the network address to bind to, etc.:</p>
+<p>Both use a <code>java.nio.channels.ServerSocketChannel</code> to listen to a socket address and to accept socket connections.</p>
+</div>
+<div class="paragraph">
+<p>Since <code>ServerConnector</code> wraps a <code>ServerSocketChannel</code>, it can be configured in a similar way, for example the IP port to listen to, the IP address to bind to, etc.:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -4606,14 +4644,15 @@
 <span class="type">int</span> selectors = <span class="integer">1</span>;
 
 <span class="comment">// Create a ServerConnector instance.</span>
-ServerConnector connector = <span class="keyword">new</span> ServerConnector(server, <span class="integer">1</span>, <span class="integer">1</span>, <span class="keyword">new</span> HttpConnectionFactory());
+ServerConnector connector = <span class="keyword">new</span> ServerConnector(server, acceptors, selectors, <span class="keyword">new</span> HttpConnectionFactory());
 
-<span class="comment">// Configure TCP parameters.</span>
+<span class="comment">// Configure TCP/IP parameters.</span>
 
-<span class="comment">// The TCP port to listen to.</span>
+<span class="comment">// The port to listen to.</span>
 connector.setPort(<span class="integer">8080</span>);
-<span class="comment">// The TCP address to bind to.</span>
+<span class="comment">// The address to bind to.</span>
 connector.setHost(<span class="string"><span class="delimiter">&quot;</span><span class="content">127.0.0.1</span><span class="delimiter">&quot;</span></span>);
+
 <span class="comment">// The TCP accept queue size.</span>
 connector.setAcceptQueueSize(<span class="integer">128</span>);
 
@@ -4622,10 +4661,38 @@
 </div>
 </div>
 <div class="paragraph">
-<p>The <em>acceptors</em> are threads (typically only one) that compete to accept TCP connections on the listening port.
+<p>Likewise, <code>UnixDomainServerConnector</code> also wraps a <code>ServerSocketChannel</code> and can be configured with the Unix-Domain path to listen to:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java">Server server = <span class="keyword">new</span> Server();
+
+<span class="comment">// The number of acceptor threads.</span>
+<span class="type">int</span> acceptors = <span class="integer">1</span>;
+
+<span class="comment">// The number of selectors.</span>
+<span class="type">int</span> selectors = <span class="integer">1</span>;
+
+<span class="comment">// Create a ServerConnector instance.</span>
+UnixDomainServerConnector connector = <span class="keyword">new</span> UnixDomainServerConnector(server, acceptors, selectors, <span class="keyword">new</span> HttpConnectionFactory());
+
+<span class="comment">// Configure Unix-Domain parameters.</span>
+
+<span class="comment">// The Unix-Domain path to listen to.</span>
+connector.setUnixDomainPath(Path.of(<span class="string"><span class="delimiter">&quot;</span><span class="content">/tmp/jetty.sock</span><span class="delimiter">&quot;</span></span>));
+
+<span class="comment">// The TCP accept queue size.</span>
+connector.setAcceptQueueSize(<span class="integer">128</span>);
+
+server.addConnector(connector);
+server.start();</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The <em>acceptors</em> are threads (typically only one) that compete to accept socket connections.
 When a connection is accepted, <code>ServerConnector</code> wraps the accepted <code>SocketChannel</code> and passes it to the <a href="#pg-arch-io-selector-manager"><code>SelectorManager</code></a>.
 Therefore, there is a little moment where the acceptor thread is not accepting new connections because it is busy wrapping the just accepted connection to pass it to the <code>SelectorManager</code>.
-Connections that are ready to be accepted but are not accepted yet are queued in a bounded queue (at the OS level) whose capacity can be configured with the <code>ServerConnector.acceptQueueSize</code> parameter.</p>
+Connections that are ready to be accepted but are not accepted yet are queued in a bounded queue (at the OS level) whose capacity can be configured with the <code>acceptQueueSize</code> parameter.</p>
 </div>
 <div class="paragraph">
 <p>If your application must withstand a very high rate of connections opened, configuring more than one acceptor thread may be beneficial: when one acceptor thread accepts one connection, another acceptor thread can take over accepting connections.</p>
@@ -4642,7 +4709,7 @@
 In this case a single selector may be able to manage less sockets because chances are that many of them will be active at the same time.</p>
 </div>
 <div class="paragraph">
-<p>It is possible to configure more than one <code>ServerConnector</code>, each listening on a different port:</p>
+<p>It is possible to configure more than one <code>ServerConnector</code> (each listening on a different port), or more than one <code>UnixDomainServerConnector</code> (each listening on a different path), or <code>ServerConnector</code>s and <code>UnixDomainServerConnector</code>s, for example:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -4667,10 +4734,10 @@
 <div class="sect4">
 <h5 id="pg-server-http-connector-protocol"><a class="anchor" href="#pg-server-http-connector-protocol"></a><a class="link" href="#pg-server-http-connector-protocol">Configuring Protocols</a></h5>
 <div class="paragraph">
-<p>For each accepted TCP connection, <code>ServerConnector</code> asks a <code>ConnectionFactory</code> to create a <code>Connection</code> object that handles the network traffic on that TCP connection, parsing and generating bytes for a specific protocol (see <a href="#pg-arch-io">this section</a> for more details about <code>Connection</code> objects).</p>
+<p>For each accepted socket connection, the server <code>Connector</code> asks a <code>ConnectionFactory</code> to create a <code>Connection</code> object that handles the traffic on that socket connection, parsing and generating bytes for a specific protocol (see <a href="#pg-arch-io">this section</a> for more details about <code>Connection</code> objects).</p>
 </div>
 <div class="paragraph">
-<p>A <code>ServerConnector</code> can be configured with one or more <code>ConnectionFactory</code>s.
+<p>A server <code>Connector</code> can be configured with one or more <code>ConnectionFactory</code>s.
 If no <code>ConnectionFactory</code> is specified then <code>HttpConnectionFactory</code> is implicitly configured.</p>
 </div>
 <div class="sect5">
@@ -4745,7 +4812,7 @@
 <div class="paragraph">
 <p>HTTP/2 was designed to be a smooth transition from HTTP/1.1 for users and as such the HTTP ports were not changed.
 However the HTTP/2 protocol is, on the wire, a binary protocol, completely different from HTTP/1.1.
-Therefore, with HTTP/2, clients that connect to port <code>80</code> may speak either HTTP/1.1 or HTTP/2, and the server must figure out which version of the HTTP protocol the client is speaking.</p>
+Therefore, with HTTP/2, clients that connect to port <code>80</code> (or to a specific Unix-Domain path) may speak either HTTP/1.1 or HTTP/2, and the server must figure out which version of the HTTP protocol the client is speaking.</p>
 </div>
 <div class="paragraph">
 <p>Jetty can support both HTTP/1.1 and HTTP/2 on the same clear-text port by configuring both the HTTP/1.1 and the HTTP/2 <code>ConnectionFactory</code>s:</p>
@@ -4844,7 +4911,7 @@
 <p>It is often the case that Jetty receives connections from a load balancer configured to distribute the load among many Jetty backend servers.</p>
 </div>
 <div class="paragraph">
-<p>From the Jetty point of view, all the connections arrive from the load balancer, rather than the real clients, but is possible to configure the load balancer to forward the real client IP address and port to the backend Jetty server using the <a href="https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt">PROXY protocol</a>.</p>
+<p>From the Jetty point of view, all the connections arrive from the load balancer, rather than the real clients, but is possible to configure the load balancer to forward the real client IP address and IP port to the backend Jetty server using the <a href="https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt">PROXY protocol</a>.</p>
 </div>
 <div class="admonitionblock note">
 <table>
@@ -4892,6 +4959,36 @@
 <p>Each <code>ConnectionFactory</code> is asked to create a <code>Connection</code> object for each accepted TCP connection; the <code>Connection</code> objects will be chained together to handle the bytes, each for its own protocol.
 Therefore the <code>ProxyConnection</code> will handle the PROXY protocol bytes and <code>HttpConnection</code> will handle the HTTP/1.1 bytes producing a request object and response object that will be processed by <code>Handler</code>s.</p>
 </div>
+<div class="paragraph">
+<p>The load balancer may be configured to communicate with Jetty backend servers via Unix-Domain sockets (requires Java 16 or later).
+For example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java">Server server = <span class="keyword">new</span> Server();
+
+<span class="comment">// The HTTP configuration object.</span>
+HttpConfiguration httpConfig = <span class="keyword">new</span> HttpConfiguration();
+<span class="comment">// Configure the HTTP support, for example:</span>
+httpConfig.setSendServerVersion(<span class="predefined-constant">false</span>);
+
+<span class="comment">// The ConnectionFactory for HTTP/1.1.</span>
+HttpConnectionFactory http11 = <span class="keyword">new</span> HttpConnectionFactory(httpConfig);
+
+<span class="comment">// The ConnectionFactory for the PROXY protocol.</span>
+ProxyConnectionFactory proxy = <span class="keyword">new</span> ProxyConnectionFactory(http11.getProtocol());
+
+<span class="comment">// Create the ServerConnector.</span>
+UnixDomainServerConnector connector = <span class="keyword">new</span> UnixDomainServerConnector(server, proxy, http11);
+connector.setUnixDomainPath(Path.of(<span class="string"><span class="delimiter">&quot;</span><span class="content">/tmp/jetty.sock</span><span class="delimiter">&quot;</span></span>));
+
+server.addConnector(connector);
+server.start();</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Note that the only difference when using Unix-Domain sockets is instantiating <code>UnixDomainServerConnector</code> instead of <code>ServerConnector</code> and configuring the Unix-Domain path instead of the IP port.</p>
+</div>
 </div>
 </div>
 </div>
@@ -5352,7 +5449,7 @@
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
   <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty<span class="tag">&lt;/groupId&gt;</span>
   <span class="tag">&lt;artifactId&gt;</span>jetty-rewrite<span class="tag">&lt;/artifactId&gt;</span>
-  <span class="tag">&lt;version&gt;</span>10.0.6<span class="tag">&lt;/version&gt;</span>
+  <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
 <span class="tag">&lt;/dependency&gt;</span></code></pre>
 </div>
 </div>
@@ -5629,7 +5726,7 @@
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
   <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty<span class="tag">&lt;/groupId&gt;</span>
   <span class="tag">&lt;artifactId&gt;</span>jetty-servlet<span class="tag">&lt;/artifactId&gt;</span>
-  <span class="tag">&lt;version&gt;</span>10.0.6<span class="tag">&lt;/version&gt;</span>
+  <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
 <span class="tag">&lt;/dependency&gt;</span></code></pre>
 </div>
 </div>
@@ -6012,7 +6109,7 @@
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
   <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty.http2<span class="tag">&lt;/groupId&gt;</span>
   <span class="tag">&lt;artifactId&gt;</span>http2-server<span class="tag">&lt;/artifactId&gt;</span>
-  <span class="tag">&lt;version&gt;</span>10.0.6<span class="tag">&lt;/version&gt;</span>
+  <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
 <span class="tag">&lt;/dependency&gt;</span></code></pre>
 </div>
 </div>
@@ -6515,7 +6612,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-ec0156d64fc9a225c5e022fc352d7d46.png" alt="Diagram" width="511" height="539">
+<img src="diag-ec0156d64fc9a225c5e022fc352d7d46.png" alt="Diagram" width="515" height="541">
 </div>
 </div>
 </div>
@@ -6714,7 +6811,7 @@
 <dd>
 <p>Integer, seconds, default is <code>-1</code>.
 This controls resetting the session cookie when <code>SessionCookieConfig.setMaxAge(int)</code> is non-zero.
-See also <a href="#pg-server-session-maxAge">setting the max session cookie age with an init parameter</a>.
+See also <a href="#pg-server-session-handler-maxAge">setting the max session cookie age with an init parameter</a>.
 If the amount of time since the session cookie was last set exceeds this time, the session cookie is regenerated to keep the session cookie valid.</p>
 </dd>
 <dt class="hdlist1">sameSite</dt>
@@ -6811,7 +6908,7 @@
 <dd>
 <p>This is the maximum number of seconds that the session cookie will be considered to be valid.
 By default, the cookie has no maximum validity time.
-See also <a href="#pg-server-session-refreshcookie">refreshing the session cookie</a>.
+See also <a href="#pg-server-session-handler-refreshcookie">refreshing the session cookie</a>.
 The value can also be configured by:</p>
 <div class="ulist">
 <ul>
@@ -7035,21 +7132,21 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="java">Server server = <span class="keyword">new</span> Server();
+<pre class="CodeRay highlight"><code data-lang="java"> Server server = <span class="keyword">new</span> Server();
 
-DefaultSessionCacheFactory cacheFactory = <span class="keyword">new</span> DefaultSessionCacheFactory();
-<span class="comment">//EVICT_ON_INACTIVE: evict a session after 60sec inactivity</span>
-cacheFactory.setEvictionPolicy(<span class="integer">60</span>);
-<span class="comment">//Only useful with the EVICT_ON_INACTIVE policy</span>
-cacheFactory.setSaveOnInactiveEvict(<span class="predefined-constant">true</span>);
-cacheFactory.setFlushOnResponseCommit(<span class="predefined-constant">true</span>);
-cacheFactory.setInvalidateOnShutdown(<span class="predefined-constant">false</span>);
-cacheFactory.setRemoveUnloadableSessions(<span class="predefined-constant">true</span>);
-cacheFactory.setSaveOnCreate(<span class="predefined-constant">true</span>);
+ DefaultSessionCacheFactory cacheFactory = <span class="keyword">new</span> DefaultSessionCacheFactory();
+ <span class="comment">//EVICT_ON_INACTIVE: evict a session after 60sec inactivity</span>
+ cacheFactory.setEvictionPolicy(<span class="integer">60</span>);
+ <span class="comment">//Only useful with the EVICT_ON_INACTIVE policy</span>
+ cacheFactory.setSaveOnInactiveEvict(<span class="predefined-constant">true</span>);
+ cacheFactory.setFlushOnResponseCommit(<span class="predefined-constant">true</span>);
+ cacheFactory.setInvalidateOnShutdown(<span class="predefined-constant">false</span>);
+ cacheFactory.setRemoveUnloadableSessions(<span class="predefined-constant">true</span>);
+ cacheFactory.setSaveOnCreate(<span class="predefined-constant">true</span>);
 
-<span class="comment">//Add the factory as a bean to the server, now whenever a</span>
-<span class="comment">//SessionHandler starts it will consult the bean to create a new DefaultSessionCache</span>
-server.addBean(cacheFactory);</code></pre>
+ <span class="comment">//Add the factory as a bean to the server, now whenever a </span>
+ <span class="comment">//SessionHandler starts it will consult the bean to create a new DefaultSessionCache</span>
+ server.addBean(cacheFactory);</code></pre>
 </div>
 </div>
 <div class="admonitionblock note">
@@ -7087,7 +7184,7 @@
 cacheFactory.setRemoveUnloadableSessions(<span class="predefined-constant">true</span>);
 cacheFactory.setSaveOnCreate(<span class="predefined-constant">true</span>);
 
-<span class="comment">//Add the factory as a bean to the server, now whenever a</span>
+<span class="comment">//Add the factory as a bean to the server, now whenever a </span>
 <span class="comment">//SessionHandler starts it will consult the bean to create a new NullSessionCache</span>
 server.addBean(cacheFactory);</code></pre>
 </div>
@@ -7122,7 +7219,7 @@
 cacheFactory.setRemoveUnloadableSessions(<span class="predefined-constant">true</span>);
 cacheFactory.setSaveOnCreate(<span class="predefined-constant">true</span>);
 
-<span class="comment">//Add the factory as a bean to the server, now whenever a</span>
+<span class="comment">//Add the factory as a bean to the server, now whenever a </span>
 <span class="comment">//SessionHandler starts it will consult the bean to create a new DefaultSessionCache</span>
 server.addBean(cacheFactory);
 
@@ -7158,7 +7255,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-fb3e088ea5480f2b172677334c79d51f.png" alt="Diagram" width="1210" height="303">
+<img src="diag-fb3e088ea5480f2b172677334c79d51f.png" alt="Diagram" width="1214" height="305">
 </div>
 </div>
 <div class="paragraph">
@@ -7186,10 +7283,6 @@
 If the <code>savePeriod</code> is non-zero, the <code>SessionData</code> will not be persisted if no session attributes changed, <em>unless</em> the time since the last save exceeds the <code>savePeriod</code>.
 Setting a non-zero value can reduce the load on the persistence mechanism, but in a clustered environment runs the risk that other nodes will see the session as expired because it has not been persisted sufficiently recently.</p>
 </dd>
-</dl>
-</div>
-<div id="pg-server-session-datastore-grace" class="dlist">
-<dl>
 <dt class="hdlist1">gracePeriod</dt>
 <dd>
 <p>The <code>gracePeriod</code> is an interval defined in seconds.
@@ -7208,12 +7301,22 @@
 </ul>
 </div>
 </dd>
-<dt class="hdlist1">NOTE</dt>
-<dd>
-<p>The trivial <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/session/NullSessionDataStore.html">NullSessionDataStore</a> - which does not persist sessions - is the default used by the <code>SessionHandler</code>.</p>
-</dd>
 </dl>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The trivial <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/session/NullSessionDataStore.html">NullSessionDataStore</a> - which does not persist sessions - is the default used by the <code>SessionHandler</code>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
 <div class="sect4">
 <h5 id="pg-server-session-datastore-file"><a class="anchor" href="#pg-server-session-datastore-file"></a><a class="link" href="#pg-server-session-datastore-file">The FileSessionDataStore</a></h5>
 <div class="paragraph">
@@ -7304,10 +7407,6 @@
 If the <code>savePeriod</code> is non-zero, the <code>SessionData</code> will not be persisted if no session attributes changed, <em>unless</em> the time since the last save exceeds the <code>savePeriod</code>.
 Setting a non-zero value can reduce the load on the persistence mechanism, but in a clustered environment runs the risk that other nodes will see the session as expired because it has not been persisted sufficiently recently.</p>
 </dd>
-</dl>
-</div>
-<div id="pg-server-session-datastore-grace" class="dlist">
-<dl>
 <dt class="hdlist1">gracePeriod</dt>
 <dd>
 <p>The <code>gracePeriod</code> is an interval defined in seconds.
@@ -7344,7 +7443,7 @@
 cacheFactory.setRemoveUnloadableSessions(<span class="predefined-constant">true</span>);
 cacheFactory.setSaveOnCreate(<span class="predefined-constant">true</span>);
 
-<span class="comment">//Add the factory as a bean to the server, now whenever a</span>
+<span class="comment">//Add the factory as a bean to the server, now whenever a </span>
 <span class="comment">//SessionHandler starts it will consult the bean to create a new DefaultSessionCache</span>
 server.addBean(cacheFactory);
 
@@ -7400,7 +7499,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-8bbf1fa0b84011383e811eaf9e630100.png" alt="Diagram" width="336" height="174">
+<img src="diag-8bbf1fa0b84011383e811eaf9e630100.png" alt="Diagram" width="340" height="176">
 </div>
 </div>
 <div class="paragraph">
@@ -7475,10 +7574,6 @@
 If the <code>savePeriod</code> is non-zero, the <code>SessionData</code> will not be persisted if no session attributes changed, <em>unless</em> the time since the last save exceeds the <code>savePeriod</code>.
 Setting a non-zero value can reduce the load on the persistence mechanism, but in a clustered environment runs the risk that other nodes will see the session as expired because it has not been persisted sufficiently recently.</p>
 </dd>
-</dl>
-</div>
-<div id="pg-server-session-datastore-grace" class="dlist">
-<dl>
 <dt class="hdlist1">gracePeriod</dt>
 <dd>
 <p>The <code>gracePeriod</code> is an interval defined in seconds.
@@ -7642,7 +7737,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-ae4b86cecdafb2b8e1afb35b06f359a1.png" alt="Diagram" width="177" height="218">
+<img src="diag-ae4b86cecdafb2b8e1afb35b06f359a1.png" alt="Diagram" width="166" height="203">
 </div>
 </div>
 <div class="paragraph">
@@ -7724,10 +7819,6 @@
 If the <code>savePeriod</code> is non-zero, the <code>SessionData</code> will not be persisted if no session attributes changed, <em>unless</em> the time since the last save exceeds the <code>savePeriod</code>.
 Setting a non-zero value can reduce the load on the persistence mechanism, but in a clustered environment runs the risk that other nodes will see the session as expired because it has not been persisted sufficiently recently.</p>
 </dd>
-</dl>
-</div>
-<div id="pg-server-session-datastore-grace" class="dlist">
-<dl>
 <dt class="hdlist1">gracePeriod</dt>
 <dd>
 <p>The <code>gracePeriod</code> is an interval defined in seconds.
@@ -7798,7 +7889,7 @@
 <h5 id="pg-server-session-cachingsessiondatastore"><a class="anchor" href="#pg-server-session-cachingsessiondatastore"></a><a class="link" href="#pg-server-session-cachingsessiondatastore">The CachingSessionDataStore</a></h5>
 <div class="imageblock">
 <div class="content">
-<img src="diag-3e23a5cd9673dbe358271d004cc0d714.png" alt="Diagram" width="341" height="282">
+<img src="diag-3e23a5cd9673dbe358271d004cc0d714.png" alt="Diagram" width="345" height="284">
 </div>
 </div>
 <div class="paragraph">
@@ -7848,13 +7939,830 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="pg-server-websocket"><a class="anchor" href="#pg-server-websocket"></a><a class="link" href="#pg-server-websocket">WebSocket Server Libraries</a></h3>
+<h3 id="pg-server-websocket"><a class="anchor" href="#pg-server-websocket"></a><a class="link" href="#pg-server-websocket">WebSocket Server</a></h3>
 <div class="paragraph">
-<p>TODO</p>
+<p>Jetty provides two API implementations of the WebSocket protocol:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>An implementation for the standard <code>javax.websocket</code> APIs provided by <a href="https://www.jcp.org/en/jsr/detail?id=356">JSR 356</a>, described in <a href="#pg-server-websocket-standard">this section</a>.</p>
+</li>
+<li>
+<p>An implementation for Jetty-specific WebSocket APIs, described in <a href="#pg-server-websocket-jetty">this section</a>.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Using the standard <code>javax.websocket</code> APIs allows your applications to depend only on standard APIs, and your applications may be deployed in any compliant WebSocket Container that supports JSR 356.</p>
+</div>
+<div class="paragraph">
+<p>The standard APIs provide few features that are not present in the Jetty WebSocket APIs:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Encoders and Decoders for automatic conversion of text or binary messages to objects.</p>
+</li>
+<li>
+<p><code>Reader</code> and <code>InputStream</code> for simple, blocking, message streaming.</p>
+</li>
+<li>
+<p>Simple URI template matching.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>On the other hand, the Jetty WebSocket APIs are more efficient and offer greater and more fine-grained control, and provide features that are not present in the standard APIs:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Suspend/resume to control backpressure.</p>
+</li>
+<li>
+<p>Remote socket address (IP address and port) information.</p>
+</li>
+<li>
+<p>WebSocket upgrade handling via Filter or Servlet.</p>
+</li>
+<li>
+<p>Advanced URI matching with Servlet WebSocket upgrade.</p>
+</li>
+<li>
+<p>Control of the idle timeout.</p>
+</li>
+<li>
+<p>Configuration of the network buffer capacity.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>If your application needs specific features that are not provided by the standard APIs, the Jetty WebSocket APIs may provide such features&#8201;&#8212;&#8201;and if they do not, you may ask for these features by submitting an issue to the Jetty Project without waiting for the standard process to approve them.</p>
+</div>
+<div class="sect3">
+<h4 id="pg-server-websocket-standard"><a class="anchor" href="#pg-server-websocket-standard"></a><a class="link" href="#pg-server-websocket-standard">Standard APIs Implementation</a></h4>
+<div class="paragraph">
+<p>When you write a WebSocket application using the standard <code>javax.websocket</code> APIs, your code typically need to depend on just the APIs to compile your application.
+However, at runtime you need to have an implementation of the standard APIs in your class-path (or module-path).</p>
+</div>
+<div class="paragraph">
+<p>The standard <code>javax.websocket</code> APIs are provided by the following Maven artifact:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
+  <span class="tag">&lt;groupId&gt;</span>javax.websocket<span class="tag">&lt;/groupId&gt;</span>
+  <span class="tag">&lt;artifactId&gt;</span>javax.websocket-api<span class="tag">&lt;/artifactId&gt;</span>
+  <span class="tag">&lt;version&gt;</span>1.1<span class="tag">&lt;/version&gt;</span>
+<span class="tag">&lt;/dependency&gt;</span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>However, the artifact above lacks a proper JPMS <code>module-info.class</code> file, and therefore it is a little more difficult to use if you want to use of JPMS for your application.</p>
+</div>
+<div class="paragraph">
+<p>If you want to use JPMS for your application, you can use this Maven artifact instead:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
+  <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty.toolchain<span class="tag">&lt;/groupId&gt;</span>
+  <span class="tag">&lt;artifactId&gt;</span>jetty-javax-websocket-api<span class="tag">&lt;/artifactId&gt;</span>
+  <span class="tag">&lt;version&gt;</span>1.1.2<span class="tag">&lt;/version&gt;</span>
+<span class="tag">&lt;/dependency&gt;</span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This artifact is nothing more than the <code>javax.websocket:javax.websocket-api:1.1</code> artifact repackaged with a proper <code>module-info.class</code> file.</p>
+</div>
+<div class="paragraph">
+<p>At runtime, you also need an implementation of the standard <code>javax.websocket</code> APIs.</p>
+</div>
+<div class="paragraph">
+<p>Jetty&#8217;s implementation of the standard <code>javax.websocket</code> APIs is provided by the following Maven artifact (and its transitive dependencies):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
+  <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty.websocket<span class="tag">&lt;/groupId&gt;</span>
+  <span class="tag">&lt;artifactId&gt;</span>websocket-javax-server<span class="tag">&lt;/artifactId&gt;</span>
+  <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
+<span class="tag">&lt;/dependency&gt;</span></code></pre>
+</div>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The <code>javax.websocket-api</code> artifact and the <code>websocket-javax-server</code> artifact (and its transitive dependencies) should be present in the server class-path (or module-path), and never in the web application&#8217;s <code>/WEB-INF/lib</code> directory.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>To configure correctly your WebSocket application based on the standard <code>javax.websocket</code> APIs, you need two steps:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Make sure that Jetty <a href="#pg-server-websocket-standard-container">sets up</a> an instance of <code>javax.websocket.server.ServerContainer</code>.</p>
+</li>
+<li>
+<p><a href="#pg-server-websocket-standard-endpoints">Configure</a> the WebSocket endpoints that implement your application logic, either by annotating their classes with the standard <code>javax.websocket</code> annotations, or by using the <code>ServerContainer</code> APIs to register them in your code.</p>
+</li>
+</ol>
+</div>
+<div class="sect4">
+<h5 id="pg-server-websocket-standard-container"><a class="anchor" href="#pg-server-websocket-standard-container"></a><a class="link" href="#pg-server-websocket-standard-container">Setting Up <code>ServerContainer</code></a></h5>
+<div class="paragraph">
+<p>Jetty sets up a <code>ServerContainer</code> instance using <code>JavaxWebSocketServletContainerInitializer</code>.</p>
+</div>
+<div class="paragraph">
+<p>When you deploy web applications using <a href="#pg-server-http-handler-use-webapp-context"><code>WebAppContext</code></a>, then  <code>JavaxWebSocketServletContainerInitializer</code> is automatically discovered and initialized by Jetty when the web application starts, so that it sets up the <code>ServerContainer</code>.
+In this way, you do not need to write any additional code:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// Create a Server with a ServerConnector listening on port 8080.</span>
+Server server = <span class="keyword">new</span> Server(<span class="integer">8080</span>);
+
+<span class="comment">// Create a WebAppContext with the given context path.</span>
+WebAppContext handler = <span class="keyword">new</span> WebAppContext(<span class="string"><span class="delimiter">&quot;</span><span class="content">/path/to/webapp</span><span class="delimiter">&quot;</span></span>, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ctx</span><span class="delimiter">&quot;</span></span>);
+server.setHandler(handler);
+
+<span class="comment">// Starting the Server will start the WebAppContext.</span>
+server.start();</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>On the other hand, when you deploy web applications using <a href="#pg-server-http-handler-use-servlet-context"><code>ServletContextHandler</code></a>, you have to write the code to ensure that the <code>JavaxWebSocketServletContainerInitializer</code> is initialized, so that it sets up the <code>ServerContainer</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// Create a Server with a ServerConnector listening on port 8080.</span>
+Server server = <span class="keyword">new</span> Server(<span class="integer">8080</span>);
+
+<span class="comment">// Create a ServletContextHandler with the given context path.</span>
+ServletContextHandler handler = <span class="keyword">new</span> ServletContextHandler(server, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ctx</span><span class="delimiter">&quot;</span></span>);
+server.setHandler(handler);
+
+<span class="comment">// Ensure that JavaxWebSocketServletContainerInitializer is initialized,</span>
+<span class="comment">// to setup the ServerContainer for this web application context.</span>
+JavaxWebSocketServletContainerInitializer.configure(handler, <span class="predefined-constant">null</span>);
+
+<span class="comment">// Starting the Server will start the ServletContextHandler.</span>
+server.start();</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Calling <code>JavaxWebSocketServletContainerInitializer.configure(...)</code> must be done <em>before</em> the <code>ServletContextHandler</code> is started, and configures the <code>javax.websocket</code> implementation for that web application context.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="pg-server-websocket-standard-endpoints"><a class="anchor" href="#pg-server-websocket-standard-endpoints"></a><a class="link" href="#pg-server-websocket-standard-endpoints">Configuring Endpoints</a></h5>
+<div class="paragraph">
+<p>Once you have <a href="#pg-server-websocket-standard-container">setup</a> the <code>ServerContainer</code>, you can configure your <a href="#pg-websocket-endpoints">WebSocket endpoints</a>.</p>
+</div>
+<div class="paragraph">
+<p>The WebSocket endpoints classes may be either annotated with the standard <code>javax.websocket</code> annotations, extend the <code>javax.websocket.Endpoint</code> abstract class, or implement the <code>javax.websocket.server.ServerApplicationConfig</code> interface.</p>
+</div>
+<div class="paragraph">
+<p>When you deploy web applications using <a href="#pg-server-http-handler-use-webapp-context"><code>WebAppContext</code></a>, then annotated WebSocket endpoint classes are automatically discovered and registered.
+In this way, you do not need to write any additional code; you just need to ensure that your WebSocket endpoint classes are present in the web application&#8217;s <code>/WEB-INF/classes</code> directory, or in a <code>*.jar</code> file in <code>/WEB-INF/lib</code>.</p>
+</div>
+<div class="paragraph">
+<p>On the other hand, when you deploy web applications using <a href="#pg-server-http-handler-use-webapp-context"><code>WebAppContext</code></a> but you need to perform more advanced configuration of the <code>ServerContainer</code> or of the WebSocket endpoints, or when you deploy web applications using <a href="#pg-server-http-handler-use-servlet-context"><code>ServletContextHandler</code></a>, you need to access the <code>ServerContainer</code> APIs.</p>
+</div>
+<div class="paragraph">
+<p>The <code>ServerContainer</code> instance is stored as a <code>ServletContext</code> attribute, so it can be retrieved when the <code>ServletContext</code> is initialized, either from a <code>ServletContextListener</code> or from a <code>HttpServlet</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// Create a Server with a ServerConnector listening on port 8080.</span>
+Server server = <span class="keyword">new</span> Server(<span class="integer">8080</span>);
+
+<span class="comment">// Create a ServletContextHandler with the given context path.</span>
+ServletContextHandler handler = <span class="keyword">new</span> ServletContextHandler(server, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ctx</span><span class="delimiter">&quot;</span></span>);
+server.setHandler(handler);
+
+<span class="comment">// Ensure that JavaxWebSocketServletContainerInitializer is initialized,</span>
+<span class="comment">// to setup the ServerContainer for this web application context.</span>
+JavaxWebSocketServletContainerInitializer.configure(handler, <span class="predefined-constant">null</span>);
+
+<span class="comment">// Add a WebSocket-initializer Servlet to register WebSocket endpoints.</span>
+handler.addServlet(MyJavaxWebSocketInitializerServlet.class, <span class="string"><span class="delimiter">&quot;</span><span class="content">/*</span><span class="delimiter">&quot;</span></span>);
+
+<span class="comment">// Starting the Server will start the ServletContextHandler.</span>
+server.start();</code></pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">MyJavaxWebSocketInitializerServlet</span> <span class="directive">extends</span> HttpServlet
+{
+    <span class="annotation">@Override</span>
+    <span class="directive">public</span> <span class="type">void</span> init() <span class="directive">throws</span> ServletException
+    {
+        <span class="keyword">try</span>
+        {
+            <span class="comment">// Retrieve the ServerContainer from the ServletContext attributes.</span>
+            ServerContainer container = (ServerContainer)getServletContext().getAttribute(ServerContainer.class.getName());
+
+            <span class="comment">// Configure the ServerContainer.</span>
+            container.setDefaultMaxTextMessageBufferSize(<span class="integer">128</span> * <span class="integer">1024</span>);
+
+            <span class="comment">// Simple registration of your WebSocket endpoints.</span>
+            container.addEndpoint(MyJavaxWebSocketEndPoint.class);
+
+            <span class="comment">// Advanced registration of your WebSocket endpoints.</span>
+            container.addEndpoint(
+                ServerEndpointConfig.Builder.create(MyJavaxWebSocketEndPoint.class, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ws</span><span class="delimiter">&quot;</span></span>)
+                    .subprotocols(<span class="predefined-type">List</span>.of(<span class="string"><span class="delimiter">&quot;</span><span class="content">my-ws-protocol</span><span class="delimiter">&quot;</span></span>))
+                    .build()
+            );
+        }
+        <span class="keyword">catch</span> (DeploymentException x)
+        {
+            <span class="keyword">throw</span> <span class="keyword">new</span> ServletException(x);
+        }
+    }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>When you deploy web applications using <a href="#pg-server-http-handler-use-servlet-context"><code>ServletContextHandler</code></a>, you can also use this variant to set up the <code>ServerContainer</code> and configure the WebSocket endpoints in one step:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// Create a Server with a ServerConnector listening on port 8080.</span>
+Server server = <span class="keyword">new</span> Server(<span class="integer">8080</span>);
+
+<span class="comment">// Create a ServletContextHandler with the given context path.</span>
+ServletContextHandler handler = <span class="keyword">new</span> ServletContextHandler(server, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ctx</span><span class="delimiter">&quot;</span></span>);
+server.setHandler(handler);
+
+<span class="comment">// Setup the ServerContainer and the WebSocket endpoints for this web application context.</span>
+JavaxWebSocketServletContainerInitializer.configure(handler, (servletContext, container) -&gt;
+{
+    <span class="comment">// Configure the ServerContainer.</span>
+    container.setDefaultMaxTextMessageBufferSize(<span class="integer">128</span> * <span class="integer">1024</span>);
+
+    <span class="comment">// Simple registration of your WebSocket endpoints.</span>
+    container.addEndpoint(MyJavaxWebSocketEndPoint.class);
+
+    <span class="comment">// Advanced registration of your WebSocket endpoints.</span>
+    container.addEndpoint(
+        ServerEndpointConfig.Builder.create(MyJavaxWebSocketEndPoint.class, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ws</span><span class="delimiter">&quot;</span></span>)
+            .subprotocols(<span class="predefined-type">List</span>.of(<span class="string"><span class="delimiter">&quot;</span><span class="content">my-ws-protocol</span><span class="delimiter">&quot;</span></span>))
+            .build()
+    );
+});
+
+<span class="comment">// Starting the Server will start the ServletContextHandler.</span>
+server.start();</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>When the <code>ServletContextHandler</code> is started, the <code>Configurator</code> lambda (the second parameter passed to <code>JavaxWebSocketServletContainerInitializer.configure(...)</code>) is invoked and allows you to explicitly configure the WebSocket endpoints using the standard APIs provided by <code>ServerContainer</code>.</p>
+</div>
+<div class="sect5">
+<h6 id="pg-server-websocket-standard-upgrade"><a class="anchor" href="#pg-server-websocket-standard-upgrade"></a><a class="link" href="#pg-server-websocket-standard-upgrade">Upgrade to WebSocket</a></h6>
+<div class="paragraph">
+<p>Under the hood, <code>JavaxWebSocketServletContainerInitializer</code> installs the <code>org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter</code>, which is the component that intercepts HTTP requests to upgrade to WebSocket, and performs the upgrade from the HTTP protocol to the WebSocket protocol.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The <code>WebSocketUpgradeFilter</code> is installed under the filter name corresponding to its class name (that is, the string <code>"org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter"</code>) and with a filter mapping of <code>/*</code>.</p>
+</div>
+<div class="paragraph">
+<p>Refer to the <a href="#pg-server-websocket-configure-filter">advanced <code>WebSocketUpgradeFilter</code> configuration section</a> for more information.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>With the default configuration, every HTTP request flows first through the <code>WebSocketUpgradeFilter</code>.</p>
+</div>
+<div class="paragraph">
+<p>If the HTTP request is a valid upgrade to WebSocket, then <code>WebSocketUpgradeFilter</code> tries to find a matching WebSocket endpoint for the request URI path; if the match is found, <code>WebSocketUpgradeFilter</code> performs the upgrade and does not invoke any other Filter or Servlet.
+From this point on, the communication happens with the WebSocket protocol, and HTTP components such as Filters and Servlets are not relevant anymore.</p>
+</div>
+<div class="paragraph">
+<p>If the HTTP request is not an upgrade to WebSocket, or <code>WebSocketUpgradeFilter</code> did not find a matching WebSocket endpoint for the request URI path, then the request is passed to the Filter chain of your web application, and eventually the request arrives to a Servlet to be processed (otherwise a <code>404 Not Found</code> response is returned to client).</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="pg-server-websocket-jetty"><a class="anchor" href="#pg-server-websocket-jetty"></a><a class="link" href="#pg-server-websocket-jetty">Jetty APIs Implementation</a></h4>
+<div class="paragraph">
+<p>When you write a WebSocket application using the Jetty WebSocket APIs, your code typically need to depend on just the Jetty WebSocket APIs to compile your application.
+However, at runtime you need to have the <em>implementation</em> of the Jetty WebSocket APIs in your class-path (or module-path).</p>
+</div>
+<div class="paragraph">
+<p>Jetty&#8217;s WebSocket APIs are provided by the following Maven artifact:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
+  <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty.websocket<span class="tag">&lt;/groupId&gt;</span>
+  <span class="tag">&lt;artifactId&gt;</span>websocket-jetty-api<span class="tag">&lt;/artifactId&gt;</span>
+  <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
+<span class="tag">&lt;/dependency&gt;</span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Jetty&#8217;s implementation of the Jetty WebSocket APIs is provided by the following Maven artifact (and its transitive dependencies):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
+  <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty.websocket<span class="tag">&lt;/groupId&gt;</span>
+  <span class="tag">&lt;artifactId&gt;</span>websocket-jetty-server<span class="tag">&lt;/artifactId&gt;</span>
+  <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
+<span class="tag">&lt;/dependency&gt;</span></code></pre>
+</div>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The <code>websocket-jetty-api</code> artifact and the <code>websocket-jetty-server</code> artifact (and its transitive dependencies) should be present in the server class-path (or module-path), and never in the web application&#8217;s <code>/WEB-INF/lib</code> directory.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>To configure correctly your WebSocket application based on the Jetty WebSocket APIs, you need two steps:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Make sure that Jetty <a href="#pg-server-websocket-jetty-container">sets up</a> an instance of <code>JettyWebSocketServerContainer</code>.</p>
+</li>
+<li>
+<p>Use the <code>JettyWebSocketServerContainer</code> APIs in your applications to <a href="#pg-server-websocket-jetty-endpoints">register your WebSocket endpoints</a> that implement your application logic.</p>
+</li>
+</ol>
+</div>
+<div class="sect4">
+<h5 id="pg-server-websocket-jetty-container"><a class="anchor" href="#pg-server-websocket-jetty-container"></a><a class="link" href="#pg-server-websocket-jetty-container">Setting up <code>JettyWebSocketServerContainer</code></a></h5>
+<div class="paragraph">
+<p>Jetty sets up a <code>JettyWebSocketServerContainer</code> instance using <code>JettyWebSocketServletContainerInitializer</code>.</p>
+</div>
+<div class="paragraph">
+<p>When you deploy web applications using <a href="#pg-server-http-handler-use-webapp-context"><code>WebAppContext</code></a>, then  <code>JettyWebSocketServletContainerInitializer</code> is automatically discovered and initialized by Jetty when the web application starts, so that it sets up the <code>JettyWebSocketServerContainer</code>.
+In this way, you do not need to write any additional code:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// Create a Server with a ServerConnector listening on port 8080.</span>
+Server server = <span class="keyword">new</span> Server(<span class="integer">8080</span>);
+
+<span class="comment">// Create a WebAppContext with the given context path.</span>
+WebAppContext handler = <span class="keyword">new</span> WebAppContext(<span class="string"><span class="delimiter">&quot;</span><span class="content">/path/to/webapp</span><span class="delimiter">&quot;</span></span>, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ctx</span><span class="delimiter">&quot;</span></span>);
+server.setHandler(handler);
+
+<span class="comment">// Starting the Server will start the WebAppContext.</span>
+server.start();</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>On the other hand, when you deploy web applications using <a href="#pg-server-http-handler-use-servlet-context"><code>ServletContextHandler</code></a>, you have to write the code to ensure that the <code>JettyWebSocketServletContainerInitializer</code> is initialized, so that it sets up the <code>JettyWebSocketServerContainer</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// Create a Server with a ServerConnector listening on port 8080.</span>
+Server server = <span class="keyword">new</span> Server(<span class="integer">8080</span>);
+
+<span class="comment">// Create a ServletContextHandler with the given context path.</span>
+ServletContextHandler handler = <span class="keyword">new</span> ServletContextHandler(server, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ctx</span><span class="delimiter">&quot;</span></span>);
+server.setHandler(handler);
+
+<span class="comment">// Ensure that JettyWebSocketServletContainerInitializer is initialized,</span>
+<span class="comment">// to setup the JettyWebSocketServerContainer for this web application context.</span>
+JettyWebSocketServletContainerInitializer.configure(handler, <span class="predefined-constant">null</span>);
+
+<span class="comment">// Starting the Server will start the ServletContextHandler.</span>
+server.start();</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Calling <code>JettyWebSocketServletContainerInitializer.configure(...)</code> must be done <em>before</em> the <code>ServletContextHandler</code> is started, and configures the Jetty WebSocket implementation for that web application context.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="pg-server-websocket-jetty-endpoints"><a class="anchor" href="#pg-server-websocket-jetty-endpoints"></a><a class="link" href="#pg-server-websocket-jetty-endpoints">Configuring Endpoints</a></h5>
+<div class="paragraph">
+<p>Once you have <a href="#pg-server-websocket-jetty-container">setup</a> the <code>JettyWebSocketServerContainer</code>, you can configure your <a href="#pg-websocket-endpoints">WebSocket endpoints</a>.</p>
+</div>
+<div class="paragraph">
+<p>Differently from the <a href="#pg-server-websocket-standard-endpoints">configuration of standard WebSocket endpoints</a>, WebSocket endpoint classes may be annotated with Jetty WebSocket API annotations, or extend the <code>org.eclipse.jetty.websocket.api.WebSocketListener</code> interface, but they are not automatically discovered, not even when deploying web applications using <a href="#pg-server-http-handler-use-webapp-context"><code>WebAppContext</code></a>.</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>When using the Jetty WebSocket APIs, WebSocket endpoints must always be explicitly configured.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>There are two ways of configuring WebSocket endpoints when using the Jetty WebSocket APIs:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#pg-server-websocket-jetty-endpoints-container">Using <code>JettyWebSocketServerContainer</code></a>, which is very similar to how WebSocket endpoints are configured when using the <a href="#pg-server-websocket-standard-endpoints">standard <code>javax.websocket</code> APIs</a>, but also provides APIs to perform a direct, programmatic, WebSocket upgrade.</p>
+</li>
+<li>
+<p><a href="#pg-server-websocket-jetty-endpoints-servlet">Using <code>JettyWebSocketServlet</code></a>, which may configured in <code>web.xml</code>, rather than in Java code.</p>
+</li>
+</ul>
+</div>
+<div class="sect5">
+<h6 id="pg-server-websocket-jetty-endpoints-container"><a class="anchor" href="#pg-server-websocket-jetty-endpoints-container"></a><a class="link" href="#pg-server-websocket-jetty-endpoints-container">Using <code>JettyWebSocketServerContainer</code></a></h6>
+<div class="paragraph">
+<p>To register WebSocket endpoints using the Jetty WebSocket APIs you need to access the <code>JettyWebSocketServerContainer</code> APIs.</p>
+</div>
+<div class="paragraph">
+<p>The <code>JettyWebSocketServerContainer</code> instance is stored in the <code>ServletContext</code>, so it can be retrieved when the <code>ServletContext</code> is initialized, either from a <code>ServletContextListener</code> or from a <code>HttpServlet</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// Create a Server with a ServerConnector listening on port 8080.</span>
+Server server = <span class="keyword">new</span> Server(<span class="integer">8080</span>);
+
+<span class="comment">// Create a ServletContextHandler with the given context path.</span>
+ServletContextHandler handler = <span class="keyword">new</span> ServletContextHandler(server, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ctx</span><span class="delimiter">&quot;</span></span>);
+server.setHandler(handler);
+
+<span class="comment">// Ensure that JettyWebSocketServletContainerInitializer is initialized,</span>
+<span class="comment">// to setup the JettyWebSocketServerContainer for this web application context.</span>
+JettyWebSocketServletContainerInitializer.configure(handler, <span class="predefined-constant">null</span>);
+
+<span class="comment">// Add a WebSocket-initializer Servlet to register WebSocket endpoints.</span>
+handler.addServlet(MyJettyWebSocketInitializerServlet.class, <span class="string"><span class="delimiter">&quot;</span><span class="content">/*</span><span class="delimiter">&quot;</span></span>);
+
+<span class="comment">// Starting the Server will start the ServletContextHandler.</span>
+server.start();</code></pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">MyJettyWebSocketInitializerServlet</span> <span class="directive">extends</span> HttpServlet
+{
+    <span class="annotation">@Override</span>
+    <span class="directive">public</span> <span class="type">void</span> init() <span class="directive">throws</span> ServletException
+    {
+        <span class="comment">// Retrieve the JettyWebSocketServerContainer.</span>
+        JettyWebSocketServerContainer container = JettyWebSocketServerContainer.getContainer(getServletContext());
+
+        <span class="comment">// Configure the JettyWebSocketServerContainer.</span>
+        container.setMaxTextMessageSize(<span class="integer">128</span> * <span class="integer">1024</span>);
+
+        <span class="comment">// Simple registration of your WebSocket endpoints.</span>
+        container.addMapping(<span class="string"><span class="delimiter">&quot;</span><span class="content">/ws/myURI</span><span class="delimiter">&quot;</span></span>, MyJettyWebSocketEndPoint.class);
+
+        <span class="comment">// Advanced registration of your WebSocket endpoints.</span>
+        container.addMapping(<span class="string"><span class="delimiter">&quot;</span><span class="content">/ws/myOtherURI</span><span class="delimiter">&quot;</span></span>, (upgradeRequest, upgradeResponse) -&gt;
+            <span class="keyword">new</span> MyOtherJettyWebSocketEndPoint()
+        );
+    }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can also use this variant to set up the <code>JettyWebSocketServerContainer</code> and configure the WebSocket endpoints in one step:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// Create a Server with a ServerConnector listening on port 8080.</span>
+Server server = <span class="keyword">new</span> Server(<span class="integer">8080</span>);
+
+<span class="comment">// Create a ServletContextHandler with the given context path.</span>
+ServletContextHandler handler = <span class="keyword">new</span> ServletContextHandler(server, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ctx</span><span class="delimiter">&quot;</span></span>);
+server.setHandler(handler);
+
+<span class="comment">// Setup the JettyWebSocketServerContainer and the WebSocket endpoints for this web application context.</span>
+JettyWebSocketServletContainerInitializer.configure(handler, (servletContext, container) -&gt;
+{
+    <span class="comment">// Configure the ServerContainer.</span>
+    container.setMaxTextMessageSize(<span class="integer">128</span> * <span class="integer">1024</span>);
+
+    <span class="comment">// Add your WebSocket endpoint(s) to the JettyWebSocketServerContainer.</span>
+    container.addMapping(<span class="string"><span class="delimiter">&quot;</span><span class="content">/ws/myURI</span><span class="delimiter">&quot;</span></span>, MyJettyWebSocketEndPoint.class);
+
+    <span class="comment">// Use JettyWebSocketCreator to have more control on the WebSocket endpoint creation.</span>
+    container.addMapping(<span class="string"><span class="delimiter">&quot;</span><span class="content">/ws/myOtherURI</span><span class="delimiter">&quot;</span></span>, (upgradeRequest, upgradeResponse) -&gt;
+    {
+        <span class="comment">// Possibly inspect the upgrade request and modify the upgrade response.</span>
+        upgradeResponse.setAcceptedSubProtocol(<span class="string"><span class="delimiter">&quot;</span><span class="content">my-ws-protocol</span><span class="delimiter">&quot;</span></span>);
+
+        <span class="comment">// Create the new WebSocket endpoint.</span>
+        <span class="keyword">return</span> <span class="keyword">new</span> MyOtherJettyWebSocketEndPoint();
+    });
+});
+
+<span class="comment">// Starting the Server will start the ServletContextHandler.</span>
+server.start();</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>When the <code>ServletContextHandler</code> is started, the <code>Configurator</code> lambda (the second parameter passed to <code>JettyWebSocketServletContainerInitializer.configure(...)</code>) is invoked and allows you to explicitly configure the WebSocket endpoints using the Jetty WebSocket APIs provided by <code>JettyWebSocketServerContainer</code>.</p>
+</div>
+<div class="paragraph">
+<p>Under the hood, the call to <code>JettyWebSocketServerContainer.addMapping(...)</code> installs the <code>org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter</code>, which is the component that intercepts HTTP requests to upgrade to WebSocket, described in <a href="#pg-server-websocket-standard-upgrade">this section</a>.
+For more information about the <code>WebSocketUpgradeFilter</code> see also <a href="#pg-server-websocket-configure-filter">this section</a>.</p>
+</div>
+<div class="paragraph">
+<p>One last alternative to register your WebSocket endpoints is to use a programmatic WebSocket upgrade via <code>JettyWebSocketServerContainer.upgrade(...)</code>, which allows you to use a standard <code>HttpServlet</code> subclass (rather than a <code>JettyWebSocketServlet</code> as explained in <a href="#pg-server-websocket-jetty-endpoints-servlet">this section</a>) to perform a direct WebSocket upgrade when your application logic demands so:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// Create a Server with a ServerConnector listening on port 8080.</span>
+Server server = <span class="keyword">new</span> Server(<span class="integer">8080</span>);
+
+<span class="comment">// Create a ServletContextHandler with the given context path.</span>
+ServletContextHandler handler = <span class="keyword">new</span> ServletContextHandler(server, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ctx</span><span class="delimiter">&quot;</span></span>);
+server.setHandler(handler);
+
+<span class="comment">// Ensure that JettyWebSocketServletContainerInitializer is initialized,</span>
+<span class="comment">// to setup the JettyWebSocketServerContainer for this web application context.</span>
+JettyWebSocketServletContainerInitializer.configure(handler, <span class="predefined-constant">null</span>);
+
+<span class="comment">// Starting the Server will start the ServletContextHandler.</span>
+server.start();</code></pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">ProgrammaticWebSocketUpgradeServlet</span> <span class="directive">extends</span> HttpServlet
+{
+    <span class="annotation">@Override</span>
+    <span class="directive">protected</span> <span class="type">void</span> doGet(HttpServletRequest request, HttpServletResponse response) <span class="directive">throws</span> <span class="exception">IOException</span>
+    {
+        <span class="keyword">if</span> (requiresWebSocketUpgrade(request))
+        {
+            <span class="comment">// Retrieve the JettyWebSocketServerContainer.</span>
+            JettyWebSocketServerContainer container = JettyWebSocketServerContainer.getContainer(getServletContext());
+
+            <span class="comment">// Use a JettyWebSocketCreator to inspect the upgrade request,</span>
+            <span class="comment">// possibly modify the upgrade response, and create the WebSocket endpoint.</span>
+            JettyWebSocketCreator creator = (upgradeRequest, upgradeResponse) -&gt; <span class="keyword">new</span> MyJettyWebSocketEndPoint();
+
+            <span class="comment">// Perform the direct WebSocket upgrade.</span>
+            container.upgrade(creator, request, response);
+        }
+        <span class="keyword">else</span>
+        {
+            <span class="comment">// Normal handling of the HTTP request/response.</span>
+        }
+    }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>When using <code>JettyWebSocketServerContainer.upgrade(...)</code>, the <code>WebSocketUpgradeFilter</code> is not installed, since the WebSocket upgrade is performed programmatically.</p>
+</div>
+</div>
+<div class="sect5">
+<h6 id="pg-server-websocket-jetty-endpoints-servlet"><a class="anchor" href="#pg-server-websocket-jetty-endpoints-servlet"></a><a class="link" href="#pg-server-websocket-jetty-endpoints-servlet">Using <code>JettyWebSocketServlet</code></a></h6>
+<div class="paragraph">
+<p>An alternative way to register WebSocket endpoints using the Jetty WebSocket APIs is to use a <code>JettyWebSocketServlet</code> subclass (or even many different <code>JettyWebSocketServlet</code> subclasses).</p>
+</div>
+<div class="paragraph">
+<p>This method has the advantage that it does not install the <code>WebSocketUpgradeFilter</code> under the hood, because the WebSocket upgrade is handled directly by your <code>JettyWebSocketServlet</code> subclass.
+This may also have a performance benefit for non-WebSocket HTTP requests (as they will not pass through the <code>WebSocketUpgradeFilter</code>).</p>
+</div>
+<div class="paragraph">
+<p>Your <code>JettyWebSocketServlet</code> subclass may be declared and configured either in code or in <code>web.xml</code>.
+Declaring your <code>JettyWebSocketServlet</code> subclass explicitly in code or in <code>web.xml</code> also simplifies the declaration and configuration of other web components such as other Servlets and/or Filters (for example, it is easier to configure the <code>CrossOriginFilter</code>, see also <a href="#pg-server-websocket-configure-filter">this section</a> for more information).</p>
+</div>
+<div class="paragraph">
+<p>For example, your <code>JettyWebSocketServlet</code> subclass may be declared in code in this way:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// Create a Server with a ServerConnector listening on port 8080.</span>
+Server server = <span class="keyword">new</span> Server(<span class="integer">8080</span>);
+
+<span class="comment">// Create a ServletContextHandler with the given context path.</span>
+ServletContextHandler handler = <span class="keyword">new</span> ServletContextHandler(server, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ctx</span><span class="delimiter">&quot;</span></span>);
+server.setHandler(handler);
+
+<span class="comment">// Setup the JettyWebSocketServerContainer to initialize WebSocket components.</span>
+JettyWebSocketServletContainerInitializer.configure(handler, <span class="predefined-constant">null</span>);
+
+<span class="comment">// Add your WebSocketServlet subclass to the ServletContextHandler.</span>
+handler.addServlet(MyJettyWebSocketServlet.class, <span class="string"><span class="delimiter">&quot;</span><span class="content">/ws/*</span><span class="delimiter">&quot;</span></span>);
+
+<span class="comment">// Starting the Server will start the ServletContextHandler.</span>
+server.start();</code></pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">MyJettyWebSocketServlet</span> <span class="directive">extends</span> JettyWebSocketServlet
+{
+    <span class="annotation">@Override</span>
+    <span class="directive">protected</span> <span class="type">void</span> configure(JettyWebSocketServletFactory factory)
+    {
+        <span class="comment">// At most 1 MiB text messages.</span>
+        factory.setMaxTextMessageSize(<span class="integer">1048576</span>);
+
+        <span class="comment">// Add the WebSocket endpoint.</span>
+        factory.addMapping(<span class="string"><span class="delimiter">&quot;</span><span class="content">/ws/someURI</span><span class="delimiter">&quot;</span></span>, (upgradeRequest, upgradeResponse) -&gt;
+        {
+            <span class="comment">// Possibly inspect the upgrade request and modify the upgrade response.</span>
+
+            <span class="comment">// Create the new WebSocket endpoint.</span>
+            <span class="keyword">return</span> <span class="keyword">new</span> MyJettyWebSocketEndPoint();
+        });
+    }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Note how in the call to <code>JettyWebSocketServletContainerInitializer.configure(...)</code> the second parameter is <code>null</code>, because WebSocket endpoints are not created here, but instead by one (or more) <code>JettyWebSocketServlet</code> subclasses.
+Yet the call is necessary to create other WebSocket implementation components that are necessary also when using <code>JettyWebSocketServlet</code> subclasses.</p>
+</div>
+<div class="paragraph">
+<p>An HTTP upgrade request to WebSocket that matches your <code>JettyWebSocketServlet</code> subclass path mapping (specified above via <code>ServletContextHandler.addServlet(...)</code>) arrives at the Servlet and is inspected to verify whether it is a valid upgrade to WebSocket.</p>
+</div>
+<div class="paragraph">
+<p>If the HTTP request is a valid upgrade to WebSocket, <code>JettyWebSocketServlet</code> calls <code>configure(JettyWebSocketServletFactory factory)</code> that you have overridden in your subclass, so that your application can instantiate and return the WebSocket endpoint.
+After having obtained the WebSocket endpoint, <code>JettyWebSocketServlet</code> performs the WebSocket upgrade.
+From this point on, the communication happens with the WebSocket protocol, and HTTP components such as Filters and Servlets are not relevant anymore.</p>
+</div>
+<div class="paragraph">
+<p>If the HTTP request is not an upgrade to WebSocket, <code>JettyWebSocketServlet</code> delegates the processing to the superclass, <code>javax.servlet.HttpServlet</code>, which in turn invokes methods such as <code>doGet(...)</code> or <code>doPost(...)</code> depending on the HTTP method.
+If your <code>JettyWebSocketServlet</code> subclass did not override the <code>doXYZ(...)</code> method corresponding to the HTTP request, a <code>405 Method Not Allowed</code> response is returned to the client, as per the standard <code>HttpServlet</code> class implementation.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>It is possible to use both <code>JettyWebSocketServerContainer</code> and <code>JettyWebSocketServlet</code>.</p>
+</div>
+<div class="paragraph">
+<p>However, it is typically best to avoid mixing the use of <code>JettyWebSocketServerContainer</code> with the use of <code>JettyWebSocketServlet</code>, so that all your WebSocket endpoints are initialized by the same code in one place only.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Using <code>JettyWebSocketServerContainer.addMapping(...)</code> will install the <code>WebSocketUpgradeFilter</code> under the hood, which by default will intercepts all HTTP requests to upgrade to WebSocket.
+However, as explained in <a href="#pg-server-websocket-standard-upgrade">this section</a>, if <code>WebSocketUpgradeFilter</code> does not find a matching WebSocket endpoint for the request URI path, then the HTTP request is passed to the Filter chain of your web application and may arrive to your <code>JettyWebSocketServlet</code> subclass, where it would be processed and possibly result in a WebSocket upgrade.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="pg-server-websocket-configure-filter"><a class="anchor" href="#pg-server-websocket-configure-filter"></a><a class="link" href="#pg-server-websocket-configure-filter">Advanced <code>WebSocketUpgradeFilter</code> Configuration</a></h4>
+<div class="paragraph">
+<p>The <code>WebSocketUpgradeFilter</code> that handles the HTTP requests that upgrade to WebSocket is installed in these cases:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Either by the <code>JavaxWebSocketServletContainerInitializer</code>, as described in <a href="#pg-server-websocket-standard">this section</a>.</p>
+</li>
+<li>
+<p>Or by a call to <code>JettyWebSocketServerContainer.addMapping(...)</code>, as described in <a href="#pg-server-websocket-jetty">this section</a>.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Typically, the <code>WebSocketUpgradeFilter</code> is not present in the <code>web.xml</code> configuration, and therefore the mechanisms above create a new <code>WebSocketUpgradeFilter</code> and install it <em>before</em> any other Filter declared in <code>web.xml</code>, under the default name of <code>"org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter"</code> and with path mapping <code>/*</code>.</p>
+</div>
+<div class="paragraph">
+<p>However, if the <code>WebSocketUpgradeFilter</code> is already present in <code>web.xml</code> under the default name, then the <code>ServletContainerInitializer</code>s will use that declared in <code>web.xml</code> instead of creating a new one.</p>
+</div>
+<div class="paragraph">
+<p>This allows you to customize:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The filter order; for example, by configuring the <code>CrossOriginFilter</code> (or other filters) for increased security or authentication <em>before</em> the <code>WebSocketUpgradeFilter</code>.</p>
+</li>
+<li>
+<p>The <code>WebSocketUpgradeFilter</code> configuration via <code>init-param</code>s, that affects all <code>Session</code> instances created by this filter.</p>
+</li>
+<li>
+<p>The <code>WebSocketUpgradeFilter</code> path mapping. Rather than the default mapping of <code>/*</code>, you can map the <code>WebSocketUpgradeFilter</code> to a more specific path such as <code>/ws/*</code>.</p>
+</li>
+<li>
+<p>The possibility to have multiple <code>WebSocketUpgradeFilter</code>s, mapped to different paths, each with its own configuration.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>For example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="preprocessor">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
+<span class="tag">&lt;web-app</span> <span class="attribute-name">xmlns</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://xmlns.jcp.org/xml/ns/javaee</span><span class="delimiter">&quot;</span></span>
+         <span class="attribute-name">xmlns:xsi</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/2001/XMLSchema-instance</span><span class="delimiter">&quot;</span></span>
+         <span class="attribute-name">xsi:schemaLocation</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd</span><span class="delimiter">&quot;</span></span>
+         <span class="attribute-name">version</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">4.0</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+
+  <span class="tag">&lt;display-name&gt;</span>My WebSocket WebApp<span class="tag">&lt;/display-name&gt;</span>
+
+  <span class="comment">&lt;!-- The CrossOriginFilter *must* be the first --&gt;</span> <i class="conum" data-value="1"></i><b>(1)</b>
+  <span class="tag">&lt;filter&gt;</span>
+    <span class="tag">&lt;filter-name&gt;</span>cross-origin<span class="tag">&lt;/filter-name&gt;</span>
+    <span class="tag">&lt;filter-class&gt;</span>org.eclipse.jetty.servlets.CrossOriginFilter<span class="tag">&lt;/filter-class&gt;</span>
+    <span class="tag">&lt;async-supported&gt;</span>true<span class="tag">&lt;/async-supported&gt;</span>
+  <span class="tag">&lt;/filter&gt;</span>
+  <span class="tag">&lt;filter-mapping&gt;</span>
+    <span class="tag">&lt;filter-name&gt;</span>cross-origin<span class="tag">&lt;/filter-name&gt;</span>
+    <span class="tag">&lt;url-pattern&gt;</span>/*<span class="tag">&lt;/url-pattern&gt;</span>
+  <span class="tag">&lt;/filter-mapping&gt;</span>
+
+  <span class="comment">&lt;!-- Configure the default WebSocketUpgradeFilter --&gt;</span> <i class="conum" data-value="2"></i><b>(2)</b>
+  <span class="tag">&lt;filter&gt;</span>
+    <span class="comment">&lt;!-- The filter name must be the default WebSocketUpgradeFilter name --&gt;</span>
+    <span class="tag">&lt;filter-name&gt;</span>org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter<span class="tag">&lt;/filter-name&gt;</span> <i class="conum" data-value="3"></i><b>(3)</b>
+    <span class="tag">&lt;filter-class&gt;</span>org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter<span class="tag">&lt;/filter-class&gt;</span>
+    <span class="comment">&lt;!-- Configure at most 1 MiB text messages --&gt;</span>
+    <span class="tag">&lt;init-param&gt;</span> <i class="conum" data-value="4"></i><b>(4)</b>
+      <span class="tag">&lt;param-name&gt;</span>maxTextMessageSize<span class="tag">&lt;/param-name&gt;</span>
+      <span class="tag">&lt;param-value&gt;</span>1048576<span class="tag">&lt;/param-value&gt;</span>
+    <span class="tag">&lt;/init-param&gt;</span>
+    <span class="tag">&lt;async-supported&gt;</span>true<span class="tag">&lt;/async-supported&gt;</span>
+  <span class="tag">&lt;/filter&gt;</span>
+  <span class="tag">&lt;filter-mapping&gt;</span>
+    <span class="tag">&lt;filter-name&gt;</span>org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter<span class="tag">&lt;/filter-name&gt;</span>
+    <span class="comment">&lt;!-- Use a more specific path mapping for WebSocket requests --&gt;</span>
+    <span class="tag">&lt;url-pattern&gt;</span>/ws/*<span class="tag">&lt;/url-pattern&gt;</span> <i class="conum" data-value="5"></i><b>(5)</b>
+  <span class="tag">&lt;/filter-mapping&gt;</span>
+
+<span class="tag">&lt;/web-app&gt;</span></code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>The <code>CrossOriginFilter</code> is the first to protect against <a href="https://owasp.org/www-community/attacks/csrf">cross-site request forgery attacks</a>.</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="2"></i><b>2</b></td>
+<td>The configuration for the <em>default</em> <code>WebSocketUpgradeFilter</code>.</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="3"></i><b>3</b></td>
+<td>Note the use of the <em>default</em> <code>WebSocketUpgradeFilter</code> name.</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="4"></i><b>4</b></td>
+<td>Specific configuration for <code>WebSocketUpgradeFilter</code> parameters.</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="5"></i><b>5</b></td>
+<td>Use a more specific path mapping for <code>WebSocketUpgradeFilter</code>.</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Note that using a more specific path mapping for WebSocket requests is also beneficial to the performance of normal HTTP requests: they do not go through the <code>WebSocketUpgradeFilter</code> (as they will not match its path mapping), saving the cost of analyzing them to see whether they are WebSocket upgrade requests or not.</p>
+</div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="pg-server-io-arch"><a class="anchor" href="#pg-server-io-arch"></a><a class="link" href="#pg-server-io-arch">Server Libraries I/O Architecture</a></h3>
+<h3 id="pg-server-io-arch"><a class="anchor" href="#pg-server-io-arch"></a><a class="link" href="#pg-server-io-arch">Server I/O Architecture</a></h3>
 <div class="paragraph">
 <p>The Jetty server libraries provide the basic components and APIs to implement a network server.</p>
 </div>
@@ -7862,19 +8770,30 @@
 <p>They build on the common <a href="#pg-arch-io">Jetty I/O Architecture</a> and provide server specific concepts.</p>
 </div>
 <div class="paragraph">
-<p>The central I/O server-side component is <code>org.eclipse.jetty.server.ServerConnector</code>.
-A <code>ServerConnector</code> manages a list of <code>ConnectionFactory</code>s, that indicate what protocols the connector is able to speak.</p>
+<p>The Jetty server libraries provide I/O support for TCP/IP sockets (for both IPv4 and IPv6) and, when using Java 16 or later, for Unix-Domain sockets.</p>
+</div>
+<div class="paragraph">
+<p>Support for Unix-Domain sockets is interesting when Jetty is deployed behind a proxy or a load-balancer: it is possible to configure the proxy or load balancer to communicate with Jetty via Unix-Domain sockets, rather than via the loopback network interface.</p>
+</div>
+<div class="paragraph">
+<p>The central I/O server-side component are <code>org.eclipse.jetty.server.ServerConnector</code>, that handles the TCP/IP socket traffic, and <code>org.eclipse.jetty.unixdomain.server.UnixDomainServerConnector</code>, that handles the Unix-Domain socket traffic.</p>
+</div>
+<div class="paragraph">
+<p><code>ServerConnector</code> and <code>UnixDomainServerConnector</code> are very similar, and while in the following sections <code>ServerConnector</code> is used, the same concepts apply to <code>UnixDomainServerConnector</code>, unless otherwise noted.</p>
+</div>
+<div class="paragraph">
+<p>A <code>ServerConnector</code> manages a list of <code>ConnectionFactory</code>s, that indicate what protocols the connector is able to speak.</p>
 </div>
 <div class="sect3">
 <h4 id="pg-server-io-arch-connection-factory"><a class="anchor" href="#pg-server-io-arch-connection-factory"></a><a class="link" href="#pg-server-io-arch-connection-factory">Creating Connections with <code>ConnectionFactory</code></a></h4>
 <div class="paragraph">
-<p>Recall from the <a href="#pg-arch-io-connection"><code>Connection</code> section</a> of the Jetty I/O architecture that <code>Connection</code> instances are responsible for parsing bytes read from a TCP connection and generating bytes to write to that TCP connection.</p>
+<p>Recall from the <a href="#pg-arch-io-connection"><code>Connection</code> section</a> of the Jetty I/O architecture that <code>Connection</code> instances are responsible for parsing bytes read from a socket and generating bytes to write to that socket.</p>
 </div>
 <div class="paragraph">
 <p>On the server-side, a <code>ConnectionFactory</code> creates <code>Connection</code> instances that know how to parse and generate bytes for the specific protocol they support&#8201;&#8212;&#8201;it can be either HTTP/1.1, or TLS, or FastCGI, or the <a href="https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt">PROXY protocol</a>.</p>
 </div>
 <div class="paragraph">
-<p>For example, this is how clear-text HTTP/1.1 is configured:</p>
+<p>For example, this is how clear-text HTTP/1.1 is configured for TCP/IP sockets:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -7892,16 +8811,56 @@
 </div>
 </div>
 <div class="paragraph">
-<p>With this configuration, the <code>ServerConnector</code> will listen on port <code>8080</code>.
-When a new TCP connection is established, <code>ServerConnector</code> delegates to the <code>ConnectionFactory</code> the creation of the <code>Connection</code> instance for that TCP connection, that is linked to the corresponding <code>EndPoint</code>:</p>
+<p>With this configuration, the <code>ServerConnector</code> will listen on port <code>8080</code>.</p>
 </div>
-<div class="imageblock">
+<div class="paragraph">
+<p>Similarly, this is how clear-text HTTP/1.1 is configured for Unix-Domain sockets:</p>
+</div>
+<div class="listingblock">
 <div class="content">
-<img src="diag-00a63842ecad6f53a729253fd05edf2b.png" alt="Diagram" width="628" height="109">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">// Create the HTTP/1.1 ConnectionFactory.</span>
+HttpConnectionFactory http = <span class="keyword">new</span> HttpConnectionFactory();
+
+Server server = <span class="keyword">new</span> Server();
+
+<span class="comment">// Create the connector with the ConnectionFactory.</span>
+UnixDomainServerConnector connector = <span class="keyword">new</span> UnixDomainServerConnector(server, http);
+connector.setUnixDomainPath(Path.of(<span class="string"><span class="delimiter">&quot;</span><span class="content">/tmp/jetty.sock</span><span class="delimiter">&quot;</span></span>));
+
+server.addConnector(connector);
+server.start();</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>For every TCP connection there will be an <code>EndPoint</code> + <code>Connection</code> pair.</p>
+<p>With this configuration, the <code>UnixDomainServerConnector</code> will listen on file <code>/tmp/jetty.sock</code>.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p><code>ServerConnector</code> and <code>UnixDomainServerConnector</code> only differ by how they are configured&#8201;&#8212;&#8201;for <code>ServerConnector</code> you specify the IP port it listens to, for <code>UnixDomainServerConnector</code> you specify the Unix-Domain path it listens to.</p>
+</div>
+<div class="paragraph">
+<p>Both configure <code>ConnectionFactory</code>s in exactly the same way.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>When a new socket connection is established, <code>ServerConnector</code> delegates to the <code>ConnectionFactory</code> the creation of the <code>Connection</code> instance for that socket connection, that is linked to the corresponding <code>EndPoint</code>:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="diag-d8ecf025f2e851a45b4d2132df024ecb.png" alt="Diagram" width="682" height="100">
+</div>
+</div>
+<div class="paragraph">
+<p>For every socket connection there will be an <code>EndPoint</code> + <code>Connection</code> pair.</p>
 </div>
 </div>
 <div class="sect3">
@@ -7936,19 +8895,19 @@
 </div>
 <div class="paragraph">
 <p>With this configuration, the <code>ServerConnector</code> will listen on port <code>8443</code>.
-When a new TCP connection is established, the first <code>ConnectionFactory</code> configured in <code>ServerConnector</code> is invoked to create a <code>Connection</code>.
+When a new socket connection is established, the first <code>ConnectionFactory</code> configured in <code>ServerConnector</code> is invoked to create a <code>Connection</code>.
 In the example above, <code>SslConnectionFactory</code> creates a <code>SslConnection</code> and then asks to its wrapped <code>ConnectionFactory</code> (in the example, <code>HttpConnectionFactory</code>) to create the wrapped <code>Connection</code> (an <code>HttpConnection</code>) and will then link the two <code>Connection</code>s together, in this way:</p>
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-2ddf657fd45a511dea7478530a23f3ab.png" alt="Diagram" width="846" height="250">
+<img src="diag-63a9fb2dbcfbcb3fb7bb1dffc2609836.png" alt="Diagram" width="900" height="241">
 </div>
 </div>
 <div class="paragraph">
-<p>Bytes read by the <code>SocketEndPoint</code> will be interpreted as TLS bytes by the <code>SslConnection</code>, then decrypted and made available to the <code>DecryptedEndPoint</code> (a component part of <code>SslConnection</code>), which will then provide them to <code>HttpConnection</code>.</p>
+<p>Bytes read by the <code>SocketChannelEndPoint</code> will be interpreted as TLS bytes by the <code>SslConnection</code>, then decrypted and made available to the <code>DecryptedEndPoint</code> (a component part of <code>SslConnection</code>), which will then provide them to <code>HttpConnection</code>.</p>
 </div>
 <div class="paragraph">
-<p>The application writes bytes through the <code>HttpConnection</code> to the <code>DecryptedEndPoint</code>, which will encrypt them through the <code>SslConnection</code> and write the encrypted bytes to the <code>SocketEndPoint</code>.</p>
+<p>The application writes bytes through the <code>HttpConnection</code> to the <code>DecryptedEndPoint</code>, which will encrypt them through the <code>SslConnection</code> and write the encrypted bytes to the <code>SocketChannelEndPoint</code>.</p>
 </div>
 </div>
 <div class="sect3">
@@ -8010,20 +8969,20 @@
 </div>
 <div class="paragraph">
 <p>In the example above <code>ServerConnector</code> will listen on port 8181.
-When a new TCP connection is established, <code>DetectorConnectionFactory</code> is invoked to create a <code>Connection</code>, because it is the first <code>ConnectionFactory</code> specified in the <code>ServerConnector</code> list.
+When a new socket connection is established, <code>DetectorConnectionFactory</code> is invoked to create a <code>Connection</code>, because it is the first <code>ConnectionFactory</code> specified in the <code>ServerConnector</code> list.
 <code>DetectorConnectionFactory</code> reads the initial bytes and asks to its detecting <code>ConnectionFactory</code>s if they recognize the bytes.
 In the example above, the detecting <code>ConnectionFactory</code> is <code>SslConnectionFactory</code> which will therefore detect whether the initial bytes are TLS bytes.
 If one of the detecting <code>ConnectionFactory</code>s recognizes the bytes, it creates a <code>Connection</code>; otherwise <code>DetectorConnectionFactory</code> will try the next <code>ConnectionFactory</code> after itself in the <code>ServerConnector</code> list.
 In the example above, the next <code>ConnectionFactory</code> after <code>DetectorConnectionFactory</code> is <code>HttpConnectionFactory</code>.</p>
 </div>
 <div class="paragraph">
-<p>The final result is that when new TCP connection is established, the initial bytes are examined: if they are TLS bytes, a <code>SslConnectionFactory</code> will create a <code>SslConnection</code> that wraps an <code>HttpConnection</code> as explained <a href="#pg-server-io-arch-connection-factory-wrapping">here</a>, therefore supporting <code>https</code>; otherwise they are not TLS bytes and an <code>HttpConnection</code> is created, therefore supporting <code>http</code>.</p>
+<p>The final result is that when new socket connection is established, the initial bytes are examined: if they are TLS bytes, a <code>SslConnectionFactory</code> will create a <code>SslConnection</code> that wraps an <code>HttpConnection</code> as explained <a href="#pg-server-io-arch-connection-factory-wrapping">here</a>, therefore supporting <code>https</code>; otherwise they are not TLS bytes and an <code>HttpConnection</code> is created, therefore supporting <code>http</code>.</p>
 </div>
 </div>
 <div class="sect3">
 <h4 id="pg-server-io-arch-connection-factory-custom"><a class="anchor" href="#pg-server-io-arch-connection-factory-custom"></a><a class="link" href="#pg-server-io-arch-connection-factory-custom">Writing a Custom <code>ConnectionFactory</code></a></h4>
 <div class="paragraph">
-<p>This section explains how to use the Jetty server-side libraries to write a generic network server able to parse and generate any protocol based on TCP.</p>
+<p>This section explains how to use the Jetty server-side libraries to write a generic network server able to parse and generate any protocol..</p>
 </div>
 <div class="paragraph">
 <p>Let&#8217;s suppose that we want to write a custom protocol that is based on JSON but has the same semantic as HTTP; let&#8217;s call this custom protocol <code>JSONHTTP</code>, so that a request would look like this:</p>
@@ -8781,7 +9740,7 @@
 <dt class="hdlist1">httpConnector</dt>
 <dd>
 <p>Optional.
-NOTE to configure a https connector, you will need to use xml configuration files instead, setting the <code>jettyXmls</code> parameter.
+Note that to configure a https connector, you will need to use xml configuration files instead, setting the <code>jettyXmls</code> parameter.
 This parameter can only be used to configure a standard http connector.
 If not specified, Jetty will create a <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ServerConnector.html">ServerConnector</a> instance listening on port 8080.
 You can change this default port number by using the system property <code>jetty.http.port</code> on the command line, for example, <code>mvn -Djetty.http.port=9999 jetty:run</code>.
@@ -8846,7 +9805,7 @@
 <dt class="hdlist1">server</dt>
 <dd>
 <p>Optional as of Jetty 9.3.1.
-This would configure an instance of the <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java"><code>org.eclipse.jetty.server.Server</code></a> for the plugin to use, however it is usually <em>not</em> necessary to configure this, as the plugin will automatically configure one for you.
+This would configure an instance of <code>org.eclipse.jetty.server.Server</code> for the plugin to use, however it is usually <em>not</em> necessary to configure this, as the plugin will automatically configure one for you.
 In particular, if you use the <code>jettyXmls</code> element, then you generally <em>don&#8217;t</em> want to define this element, as you are probably using the <code>jettyXmls</code> file/s to configure up a Server with a special constructor argument, such as a custom threadpool.
 If you define both a <code>server</code> element and use a <code>jettyXmls</code> element which points to a config file that has a line like <code>&lt;Configure id="Server" class="org.eclipse.jetty.server.Server"&gt;</code> then the the xml configuration will override what you configure for the <code>server</code> in the <code>pom.xml</code>.</p>
 </dd>
@@ -10964,7 +11923,7 @@
 </table>
 </div>
 <div class="paragraph">
-<p><code>SocketChannel</code> instances can be created by network clients when connecting to a server and by a network server when accepting connections from network clients.
+<p><code>SocketChannel</code> instances can be created by clients when connecting to a server and by a server when accepting connections from clients.
 In both cases the <code>SocketChannel</code> instance is passed to <code>SelectorManager</code> (which passes it to <code>ManagedSelector</code> and eventually to <code>java.nio.channels.Selector</code>) to be registered for use within Jetty.</p>
 </div>
 <div class="paragraph">
@@ -11016,7 +11975,7 @@
 <p><code>SocketChannel</code>s that are passed to <code>SelectorManager</code> are wrapped into two related components: an <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/io/EndPoint.html"><code>EndPoint</code></a> and a <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/io/Connection.html"><code>Connection</code></a>.</p>
 </div>
 <div class="paragraph">
-<p><code>EndPoint</code> is the Jetty abstraction for a <code>SocketChannel</code>: you can read bytes from an <code>EndPoint</code> via <code>EndPoint.fill(ByteBuffer)</code>, you can write bytes to an <code>EndPoint</code> via <code>EndPoint.flush(ByteBuffer&#8230;&#8203;)</code> and <code>EndPoint.write(Callback, ByteBuffer&#8230;&#8203;)</code>, you can close an <code>EndPoint</code> via <code>EndPoint.close()</code>, etc.</p>
+<p><code>EndPoint</code> is the Jetty abstraction for a <code>SocketChannel</code>: you can read bytes from an <code>EndPoint</code> via <code>EndPoint.fill(ByteBuffer)</code>, you can write bytes to an <code>EndPoint</code> via <code>EndPoint.flush(ByteBuffer...)</code> and <code>EndPoint.write(Callback, ByteBuffer...)</code>, you can close an <code>EndPoint</code> via <code>EndPoint.close()</code>, etc.</p>
 </div>
 <div class="paragraph">
 <p><code>Connection</code> is the Jetty abstraction that is responsible to read bytes from the <code>EndPoint</code> and to deserialize the read bytes into objects.
@@ -11034,10 +11993,10 @@
 </div>
 <div class="paragraph">
 <p>The <code>EndPoint</code> and <code>Connection</code> pairs can be chained, for example in case of encrypted communication using the TLS protocol.
-There is an <code>EndPoint</code> and <code>Connection</code> TLS pair where the <code>EndPoint</code> reads the encrypted bytes from the network and the <code>Connection</code> decrypts them; next in the chain there is an <code>EndPoint</code> and <code>Connection</code> pair where the <code>EndPoint</code> "reads" decrypted bytes (provided by the previous <code>Connection</code>) and the <code>Connection</code> deserializes them into specific protocol objects (for example HTTP/2 frame objects).</p>
+There is an <code>EndPoint</code> and <code>Connection</code> TLS pair where the <code>EndPoint</code> reads the encrypted bytes from the socket and the <code>Connection</code> decrypts them; next in the chain there is an <code>EndPoint</code> and <code>Connection</code> pair where the <code>EndPoint</code> "reads" decrypted bytes (provided by the previous <code>Connection</code>) and the <code>Connection</code> deserializes them into specific protocol objects (for example HTTP/2 frame objects).</p>
 </div>
 <div class="paragraph">
-<p>Certain protocols, such as WebSocket, start the communication with the server using one protocol (e.g. HTTP/1.1), but then change the communication to use another protocol (e.g. WebSocket).
+<p>Certain protocols, such as WebSocket, start the communication with the server using one protocol (for example, HTTP/1.1), but then change the communication to use another protocol (for example, WebSocket).
 <code>EndPoint</code> supports changing the <code>Connection</code> object on-the-fly via <code>EndPoint.upgrade(Connection)</code>.
 This allows to use the HTTP/1.1 <code>Connection</code> during the initial communication and later to replace it with a WebSocket <code>Connection</code>.</p>
 </div>
@@ -11060,10 +12019,10 @@
 <p>Creating <code>Connection</code> instances is performed on the server-side by <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ConnectionFactory.html"><code>ConnectionFactory</code></a>s and on the client-side by <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/io/ClientConnectionFactory.html"><code>ClientConnectionFactory</code></a>s</p>
 </div>
 <div class="paragraph">
-<p>On the server-side, the component that aggregates a <code>SelectorManager</code> with a set of <code>ConnectionFactory</code>s is <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a>s, see <a href="#pg-server-io-arch">Server Libraries I/O Architecture</a>.</p>
+<p>On the server-side, the component that aggregates a <code>SelectorManager</code> with a set of <code>ConnectionFactory</code>s is <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a>s for TCP/IP sockets, and <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/unixdomain/server/UnixDomainServerConnector.html"><code>UnixDomainServerConnector</code></a> for Unix-Domain sockets (see the <a href="#pg-server-io-arch">server-side architecture section</a> for more information).</p>
 </div>
 <div class="paragraph">
-<p>On the client-side, the components that aggregates a <code>SelectorManager</code> with a set of <code>ClientConnectionFactory</code>s are <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/client/HttpClientTransport.html"><code>HttpClientTransport</code></a> subclasses, see <a href="#pg-client-io-arch">Client Libraries I/O Architecture</a>.</p>
+<p>On the client-side, the components that aggregates a <code>SelectorManager</code> with a set of <code>ClientConnectionFactory</code>s are <a href="https://www.eclipse.org/jetty/javadoc/jetty-10/org/eclipse/jetty/client/HttpClientTransport.html"><code>HttpClientTransport</code></a> subclasses (see the <a href="#pg-client-io-arch">client-side architecture section</a> for more information).</p>
 </div>
 </div>
 <div class="sect3">
@@ -11075,7 +12034,7 @@
 <p>At the Java NIO level, in order to be notified when a <code>SocketChannel</code> has data to be read, the <code>SelectionKey.OP_READ</code> flag must be set.</p>
 </div>
 <div class="paragraph">
-<p>In the Jetty I/O library, you can call <code>EndPoint.fillInterested(Callback)</code> to declare interest in the "read" (or "fill") event, and the <code>Callback</code> parameter is the object that is notified when such an event occurs.</p>
+<p>In the Jetty I/O library, you can call <code>EndPoint.fillInterested(Callback)</code> to declare interest in the "read" (also called "fill") event, and the <code>Callback</code> parameter is the object that is notified when such an event occurs.</p>
 </div>
 <div class="paragraph">
 <p>At the Java NIO level, a <code>SocketChannel</code> is always writable, unless it becomes TCP congested.
@@ -11490,7 +12449,7 @@
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
   <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty<span class="tag">&lt;/groupId&gt;</span>
   <span class="tag">&lt;artifactId&gt;</span>jetty-jmx<span class="tag">&lt;/artifactId&gt;</span>
-  <span class="tag">&lt;version&gt;</span>10.0.6<span class="tag">&lt;/version&gt;</span>
+  <span class="tag">&lt;version&gt;</span>10.0.7<span class="tag">&lt;/version&gt;</span>
 <span class="tag">&lt;/dependency&gt;</span></code></pre>
 </div>
 </div>
@@ -12382,10 +13341,9 @@
 </div>
 <div id="footer">
 <div id="footer-text">
-Version 10.0.6<br>
+Version 10.0.7<br>
 Last updated 2021-05-12 14:52:38 -0500
 </div>
 </div>
-<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </body>
 </html>
\ No newline at end of file
diff --git a/documentation/jetty-11/asciidoctor.css b/documentation/jetty-11/asciidoctor.css
index 9d9cc70..65ec3f3 100644
--- a/documentation/jetty-11/asciidoctor.css
+++ b/documentation/jetty-11/asciidoctor.css
@@ -37,7 +37,7 @@
 table{border-collapse:collapse;border-spacing:0}
 *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
 html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
 a:hover{cursor:pointer}
 img,object,embed{max-width:100%;height:auto}
 object,embed{height:100%}
@@ -52,10 +52,8 @@
 img,object,svg{display:inline-block;vertical-align:middle}
 textarea{height:auto;min-height:50px}
 select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.stretch{width:100%}
 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
 a{color:#2156a5;text-decoration:underline;line-height:inherit}
 a:hover,a:focus{color:#1d4b8f}
 a img{border:0}
@@ -86,28 +84,28 @@
 abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
 abbr{text-transform:none}
 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite::before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
 h1{font-size:2.75em}
 h2{font-size:2.3125em}
 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
 h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
 table thead,table tfoot{background:#f7f8f7}
 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
 table tr.even,table tr.alt{background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
 .clearfix::after,.float-group::after{clear:both}
-:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
-:not(pre)>code.nobreak{word-wrap:normal}
-:not(pre)>code.nowrap{white-space:nowrap}
+:not(pre).nobreak{word-wrap:normal}
+:not(pre).nowrap{white-space:nowrap}
+:not(pre).pre-wrap{white-space:pre-wrap}
+:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
 pre>code{display:block}
@@ -172,7 +170,7 @@
 #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
 #content #toc>:first-child{margin-top:0}
 #content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
+#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
 #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
 #content{margin-bottom:.625em}
 .sect1{padding-bottom:.625em}
@@ -195,7 +193,7 @@
 .admonitionblock>table td.icon{text-align:center;width:80px}
 .admonitionblock>table td.icon img{max-width:none}
 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
 .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
 .exampleblock>.content>:first-child{margin-top:0}
@@ -205,7 +203,7 @@
 .sidebarblock>:last-child{margin-bottom:0}
 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
 .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
@@ -250,22 +248,21 @@
 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
-.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
-table.tableblock{max-width:100%;border-collapse:separate}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
 p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
-td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
-table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
-table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
-table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
-table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
-table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
-table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.grid-all>*>tr>*{border-width:1px}
+table.grid-cols>*>tr>*{border-width:0 1px}
+table.grid-rows>*>tr>*{border-width:1px 0}
 table.frame-all{border-width:1px}
+table.frame-ends{border-width:1px 0}
 table.frame-sides{border-width:0 1px}
-table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
+table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
+table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
+table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
 table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
 th.halign-left,td.halign-left{text-align:left}
 th.halign-right,td.halign-right{text-align:right}
@@ -274,7 +271,7 @@
 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
 th.valign-middle,td.valign-middle{vertical-align:middle}
 table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th{background:#f7f8f7}
 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
 p.tableblock>code:only-child{background:none;padding:0}
 p.tableblock{font-size:1em}
@@ -303,6 +300,7 @@
 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+td.hdlist2{word-wrap:anywhere}
 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
 .colist td:not([class]):first-child img{max-width:none}
@@ -375,7 +373,7 @@
 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
 .conum[data-value] *{color:#fff!important}
 .conum[data-value]+b{display:none}
 .conum[data-value]::after{content:attr(data-value)}
@@ -402,6 +400,7 @@
 svg{max-width:100%}
 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#header,#content,#footnotes,#footer{max-width:none}
 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
 body.book #header{text-align:center}
diff --git a/documentation/jetty-11/contribution-guide/asciidoctor.css b/documentation/jetty-11/contribution-guide/asciidoctor.css
index 9d9cc70..65ec3f3 100644
--- a/documentation/jetty-11/contribution-guide/asciidoctor.css
+++ b/documentation/jetty-11/contribution-guide/asciidoctor.css
@@ -37,7 +37,7 @@
 table{border-collapse:collapse;border-spacing:0}
 *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
 html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
 a:hover{cursor:pointer}
 img,object,embed{max-width:100%;height:auto}
 object,embed{height:100%}
@@ -52,10 +52,8 @@
 img,object,svg{display:inline-block;vertical-align:middle}
 textarea{height:auto;min-height:50px}
 select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.stretch{width:100%}
 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
 a{color:#2156a5;text-decoration:underline;line-height:inherit}
 a:hover,a:focus{color:#1d4b8f}
 a img{border:0}
@@ -86,28 +84,28 @@
 abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
 abbr{text-transform:none}
 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite::before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
 h1{font-size:2.75em}
 h2{font-size:2.3125em}
 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
 h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
 table thead,table tfoot{background:#f7f8f7}
 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
 table tr.even,table tr.alt{background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
 .clearfix::after,.float-group::after{clear:both}
-:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
-:not(pre)>code.nobreak{word-wrap:normal}
-:not(pre)>code.nowrap{white-space:nowrap}
+:not(pre).nobreak{word-wrap:normal}
+:not(pre).nowrap{white-space:nowrap}
+:not(pre).pre-wrap{white-space:pre-wrap}
+:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
 pre>code{display:block}
@@ -172,7 +170,7 @@
 #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
 #content #toc>:first-child{margin-top:0}
 #content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
+#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
 #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
 #content{margin-bottom:.625em}
 .sect1{padding-bottom:.625em}
@@ -195,7 +193,7 @@
 .admonitionblock>table td.icon{text-align:center;width:80px}
 .admonitionblock>table td.icon img{max-width:none}
 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
 .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
 .exampleblock>.content>:first-child{margin-top:0}
@@ -205,7 +203,7 @@
 .sidebarblock>:last-child{margin-bottom:0}
 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
 .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
@@ -250,22 +248,21 @@
 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
-.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
-table.tableblock{max-width:100%;border-collapse:separate}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
 p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
-td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
-table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
-table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
-table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
-table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
-table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
-table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.grid-all>*>tr>*{border-width:1px}
+table.grid-cols>*>tr>*{border-width:0 1px}
+table.grid-rows>*>tr>*{border-width:1px 0}
 table.frame-all{border-width:1px}
+table.frame-ends{border-width:1px 0}
 table.frame-sides{border-width:0 1px}
-table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
+table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
+table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
+table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
 table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
 th.halign-left,td.halign-left{text-align:left}
 th.halign-right,td.halign-right{text-align:right}
@@ -274,7 +271,7 @@
 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
 th.valign-middle,td.valign-middle{vertical-align:middle}
 table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th{background:#f7f8f7}
 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
 p.tableblock>code:only-child{background:none;padding:0}
 p.tableblock{font-size:1em}
@@ -303,6 +300,7 @@
 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+td.hdlist2{word-wrap:anywhere}
 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
 .colist td:not([class]):first-child img{max-width:none}
@@ -375,7 +373,7 @@
 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
 .conum[data-value] *{color:#fff!important}
 .conum[data-value]+b{display:none}
 .conum[data-value]::after{content:attr(data-value)}
@@ -402,6 +400,7 @@
 svg{max-width:100%}
 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#header,#content,#footnotes,#footer{max-width:none}
 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
 body.book #header{text-align:center}
diff --git a/documentation/jetty-11/contribution-guide/index.html b/documentation/jetty-11/contribution-guide/index.html
index d1dc5bf..2ccd942 100644
--- a/documentation/jetty-11/contribution-guide/index.html
+++ b/documentation/jetty-11/contribution-guide/index.html
@@ -4,11 +4,12 @@
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 2.0.10">
+<meta name="generator" content="Asciidoctor 2.0.15">
 <title>Eclipse Jetty: Contribution Guide</title>
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
 <link rel="stylesheet" href="./asciidoctor.css">
 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </head>
 <body class="article toc2 toc-left">
 <div id="header">
@@ -16,8 +17,8 @@
 <div class="details">
 <span id="author" class="author">Jetty Developers</span><br>
 <span id="email" class="email"><a href="mailto:jetty-dev@eclipse.org">jetty-dev@eclipse.org</a></span><br>
-<span id="revnumber">version 11.0.6,</span>
-<span id="revdate">2021-06-29</span>
+<span id="revnumber">version 11.0.7,</span>
+<span id="revdate">2021-10-06</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Contribution Guide</div>
@@ -1094,10 +1095,9 @@
 </div>
 <div id="footer">
 <div id="footer-text">
-Version 11.0.6<br>
+Version 11.0.7<br>
 Last updated 2021-05-12 15:27:21 -0500
 </div>
 </div>
-<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </body>
 </html>
\ No newline at end of file
diff --git a/documentation/jetty-11/index.html b/documentation/jetty-11/index.html
index a4f04d0..137b5b2 100644
--- a/documentation/jetty-11/index.html
+++ b/documentation/jetty-11/index.html
@@ -4,7 +4,7 @@
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 2.0.10">
+<meta name="generator" content="Asciidoctor 2.0.15">
 <title>Eclipse Jetty Documentation</title>
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
 <link rel="stylesheet" href="./asciidoctor.css">
@@ -16,8 +16,8 @@
 <div class="details">
 <span id="author" class="author">Jetty Developers</span><br>
 <span id="email" class="email"><a href="mailto:jetty-dev@eclipse.org">jetty-dev@eclipse.org</a></span><br>
-<span id="revnumber">version 11.0.6,</span>
-<span id="revdate">2021-06-29</span>
+<span id="revnumber">version 11.0.7,</span>
+<span id="revdate">2021-10-06</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Table of Contents</div>
@@ -68,7 +68,7 @@
 </div>
 <div id="footer">
 <div id="footer-text">
-Version 11.0.6<br>
+Version 11.0.7<br>
 Last updated 2021-05-12 15:27:21 -0500
 </div>
 </div>
diff --git a/documentation/jetty-11/old_docs/asciidoctor.css b/documentation/jetty-11/old_docs/asciidoctor.css
index 9d9cc70..65ec3f3 100644
--- a/documentation/jetty-11/old_docs/asciidoctor.css
+++ b/documentation/jetty-11/old_docs/asciidoctor.css
@@ -37,7 +37,7 @@
 table{border-collapse:collapse;border-spacing:0}
 *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
 html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
 a:hover{cursor:pointer}
 img,object,embed{max-width:100%;height:auto}
 object,embed{height:100%}
@@ -52,10 +52,8 @@
 img,object,svg{display:inline-block;vertical-align:middle}
 textarea{height:auto;min-height:50px}
 select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.stretch{width:100%}
 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
 a{color:#2156a5;text-decoration:underline;line-height:inherit}
 a:hover,a:focus{color:#1d4b8f}
 a img{border:0}
@@ -86,28 +84,28 @@
 abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
 abbr{text-transform:none}
 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite::before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
 h1{font-size:2.75em}
 h2{font-size:2.3125em}
 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
 h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
 table thead,table tfoot{background:#f7f8f7}
 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
 table tr.even,table tr.alt{background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
 .clearfix::after,.float-group::after{clear:both}
-:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
-:not(pre)>code.nobreak{word-wrap:normal}
-:not(pre)>code.nowrap{white-space:nowrap}
+:not(pre).nobreak{word-wrap:normal}
+:not(pre).nowrap{white-space:nowrap}
+:not(pre).pre-wrap{white-space:pre-wrap}
+:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
 pre>code{display:block}
@@ -172,7 +170,7 @@
 #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
 #content #toc>:first-child{margin-top:0}
 #content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
+#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
 #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
 #content{margin-bottom:.625em}
 .sect1{padding-bottom:.625em}
@@ -195,7 +193,7 @@
 .admonitionblock>table td.icon{text-align:center;width:80px}
 .admonitionblock>table td.icon img{max-width:none}
 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
 .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
 .exampleblock>.content>:first-child{margin-top:0}
@@ -205,7 +203,7 @@
 .sidebarblock>:last-child{margin-bottom:0}
 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
 .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
@@ -250,22 +248,21 @@
 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
-.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
-table.tableblock{max-width:100%;border-collapse:separate}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
 p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
-td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
-table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
-table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
-table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
-table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
-table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
-table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.grid-all>*>tr>*{border-width:1px}
+table.grid-cols>*>tr>*{border-width:0 1px}
+table.grid-rows>*>tr>*{border-width:1px 0}
 table.frame-all{border-width:1px}
+table.frame-ends{border-width:1px 0}
 table.frame-sides{border-width:0 1px}
-table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
+table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
+table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
+table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
 table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
 th.halign-left,td.halign-left{text-align:left}
 th.halign-right,td.halign-right{text-align:right}
@@ -274,7 +271,7 @@
 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
 th.valign-middle,td.valign-middle{vertical-align:middle}
 table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th{background:#f7f8f7}
 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
 p.tableblock>code:only-child{background:none;padding:0}
 p.tableblock{font-size:1em}
@@ -303,6 +300,7 @@
 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+td.hdlist2{word-wrap:anywhere}
 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
 .colist td:not([class]):first-child img{max-width:none}
@@ -375,7 +373,7 @@
 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
 .conum[data-value] *{color:#fff!important}
 .conum[data-value]+b{display:none}
 .conum[data-value]::after{content:attr(data-value)}
@@ -402,6 +400,7 @@
 svg{max-width:100%}
 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#header,#content,#footnotes,#footer{max-width:none}
 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
 body.book #header{text-align:center}
diff --git a/documentation/jetty-11/old_docs/index.html b/documentation/jetty-11/old_docs/index.html
index 67a6ea0..c534678 100644
--- a/documentation/jetty-11/old_docs/index.html
+++ b/documentation/jetty-11/old_docs/index.html
@@ -4,11 +4,12 @@
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 2.0.10">
+<meta name="generator" content="Asciidoctor 2.0.15">
 <title>Eclipse Jetty: Old Documentation</title>
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
 <link rel="stylesheet" href="./asciidoctor.css">
 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </head>
 <body class="article toc2 toc-left">
 <div id="header">
@@ -16,8 +17,8 @@
 <div class="details">
 <span id="author" class="author">Jetty Developers</span><br>
 <span id="email" class="email"><a href="mailto:jetty-dev@eclipse.org">jetty-dev@eclipse.org</a></span><br>
-<span id="revnumber">version 11.0.6,</span>
-<span id="revdate">2021-06-29</span>
+<span id="revnumber">version 11.0.7,</span>
+<span id="revdate">2021-10-06</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Old Jetty Documentation</div>
@@ -987,6 +988,7 @@
 </ul>
 </li>
 <li><a href="#_authentication-and-authorization-with-embedded-jetty">Authentication and Authorization with Embedded Jetty</a></li>
+<li><a href="#_jakarta-authentication-jaspi">Jakarta Authentication (JASPI)</a></li>
 </ul>
 </li>
 <li><a href="#configuring-form-size">Limiting Form Content</a>
@@ -1423,7 +1425,7 @@
 </div>
 <div class="paragraph">
 <p>Below is an example application that sets up the standard <code>test-spec.war</code> webapp from the distribution in embedded fashion.
-It can also be found in the Jetty GitHub repository on the examples/embedded page as <a href="https://github.com/eclipse/jetty.project/tree/master/examples/embedded/src/main/java/org/eclipse/jetty/embedded"><code>ServerWithAnnotations.java</code>.</a>
+It can also be found in the Jetty GitHub repository on the examples/embedded page as <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/examples/embedded/src/main/java/org/eclipse/jetty/embedded"><code>ServerWithAnnotations.java</code>.</a>
 Note that the <code>test-spec.war</code> uses not only annotations, but also <a href="#jndi">JNDI</a>, so this example also enables their processing (via the <a href="#jndi-configuration-classes">org.eclipse.jetty.plus.webapp.EnvConfiguration</a>, <a href="#jndi-configuration-classes">org.eclipse.jetty.plus.webapp.PlusConfiguration</a> and their related jars).</p>
 </div>
 <div class="listingblock">
@@ -1451,7 +1453,7 @@
 </div>
 </div>
 <div class="paragraph">
-<p>You will also need the <a href="http://asm.ow2.org/">asm</a> jar, which you can obtain from <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/org.objectweb.asm/3.3.1.v201105211655/org.objectweb.asm-3.3.1.v201105211655.jar">this link.</a></p>
+<p>You will also need the <a href="http://asm.ow2.org/">asm</a> jar, which you can obtain from <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/org.objectweb.asm/3.3.1.v201105211655/org.objectweb.asm-3.3.1.v201105211655.jar">this link.</a></p>
 </div>
 </div>
 <div class="sect3">
@@ -2828,7 +2830,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">[mybase] java -jar $JETTY_HOME/start.jar
 2017-08-31 10:19:58.855:INFO::main: Logging initialized @372ms to org.eclipse.jetty.util.log.StdErrLog
-2017-08-31 10:19:59.076:INFO:oejs.Server:main: jetty-11.0.6
+2017-08-31 10:19:59.076:INFO:oejs.Server:main: jetty-11.0.7
 2017-08-31 10:19:59.125:INFO:oejs.AbstractConnector:main: Started ServerConnector@421e98e0{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 2017-08-31 10:19:59.150:INFO:oejus.SslContextFactory:main: x509=X509@5315b42e(jetty,h=[jetty.eclipse.org],w=[]) for SslContextFactory@2ef9b8bc(file:///var/my-jetty-base/etc/keystore,file:///var/my-jetty-base/etc/keystore)
 2017-08-31 10:19:59.151:INFO:oejus.SslContextFactory:main: x509=X509@5d624da6(mykey,h=[],w=[]) for SslContextFactory@2ef9b8bc(file:///var/my-jetty-base/etc/keystore,file:///var/my-jetty-base/etc/keystore)
@@ -2897,7 +2899,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">[my-base]$ java -jar /path/to/jetty-home/start.jar
 2017-08-31 10:31:32.955:INFO::main: Logging initialized @366ms to org.eclipse.jetty.util.log.StdErrLog
-2017-08-31 10:31:33.109:INFO:oejs.Server:main: jetty-11.0.6
+2017-08-31 10:31:33.109:INFO:oejs.Server:main: jetty-11.0.7
 2017-08-31 10:31:33.146:INFO:oejs.AbstractConnector:main: Started ServerConnector@2ef9b8bc{HTTP/1.1,[http/1.1]}{0.0.0.0:5231}
 ...
 2017-08-31 10:31:33.263:INFO:oejs.Server:main: Started @675ms</code></pre>
@@ -2964,28 +2966,28 @@
 </div>
 <div class="dlist">
 <dl>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a></dt>
 <dd>
 <p>Instantiates a <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a> that accepts HTTP connections (that may be upgraded to WebSocket connections).</p>
 </dd>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-ssl.xml"><code>jetty-ssl.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-ssl.xml"><code>jetty-ssl.xml</code></a></dt>
 <dd>
 <p>Instantiates a <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a> that accepts SSL/TLS connections.
 On it&#8217;s own, this connector is not functional and requires one or more of the following files to also be configured to add  <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/ConnectionFactory.html"><code>ConnectionFactories</code></a> to make the connector functional.</p>
 </dd>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a></dt>
 <dd>
 <p>Adds a <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/HttpConnectionFactory.html"><code>HttpConnectionFactory</code></a> to the <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a>  configured by <code>jetty-ssl.xml</code> which combine to provide support for HTTPS.</p>
 </dd>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-http-forwarded.xml"><code>jetty-http-forwarded.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-http-forwarded.xml"><code>jetty-http-forwarded.xml</code></a></dt>
 <dd>
 <p>Adds a <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/ForwardedRequestCustomizer.html"><code>ForwardedRequestCustomizer</code></a>to the HTTP Connector to process forwarded-for style headers from a proxy.</p>
 </dd>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml"><code>jetty-http2.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml"><code>jetty-http2.xml</code></a></dt>
 <dd>
 <p>Adds a <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/http2/server/HTTP2ServerConnectionFactory.html"><code>Http2ServerConnectionFactory</code></a> to the  <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a> configured by <code>jetty-ssl.xml</code> to support the http2 protocol.</p>
 </dd>
-<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-alpn/jetty-alpn-server/src/main/config/etc/jetty-alpn.xml"><code>jetty-alpn.xml</code></a></dt>
+<dt class="hdlist1"><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-alpn/jetty-alpn-server/src/main/config/etc/jetty-alpn.xml"><code>jetty-alpn.xml</code></a></dt>
 <dd>
 <p>Adds an <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/alpn/server/ALPNServerConnectionFactory.html"><code>ALPNServerConnectionFactory</code></a> to the <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a> configured by <code>jetty-ssl.xml</code> which allows the one SSL connector to support multiple protocols with the ALPN extension used to select the protocol to be used for each connection.</p>
 </dd>
@@ -2996,7 +2998,7 @@
 <h4 id="_constructing-a-serverconnector"><a class="anchor" href="#_constructing-a-serverconnector"></a><a class="link" href="#_constructing-a-serverconnector">Constructing a ServerConnector</a></h4>
 <div class="paragraph">
 <p>The services a <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/ServerConnector.html"><code>ServerConnector</code></a> instance uses are set by constructor injection and once instantiated cannot be changed.
-Many of the services may be defaulted with null or 0 values so that a reasonable default is used, thus for most purposes only the Server and the connection factories need to be passed to the connector constructor. In Jetty XML (that is, in <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a>) you can do this by:</p>
+Many of the services may be defaulted with null or 0 values so that a reasonable default is used, thus for most purposes only the Server and the connection factories need to be passed to the connector constructor. In Jetty XML (that is, in <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a>) you can do this by:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -3103,7 +3105,7 @@
 <div class="paragraph">
 <p>The <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/HttpConfiguration.html"><code>HttpConfiguration</code></a> class holds the configuration for <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/HttpChannel.html"><code>HttpChannel</code></a>s, which you can create 1:1 with each HTTP connection or 1:n on a multiplexed HTTP/2 connection.
 Thus a <code>HttpConfiguration</code> object is injected into both the HTTP and HTTP/2 connection factories.
-To avoid duplicate configuration, the standard Jetty distribution creates the common <code>HttpConfiguration</code> instance in <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty.xml"><code>jetty.xml</code></a>, which is a <code>Ref</code> element then used in <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a>, <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a> and in <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml"><code>jetty-http2.xml</code></a>.</p>
+To avoid duplicate configuration, the standard Jetty distribution creates the common <code>HttpConfiguration</code> instance in <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty.xml"><code>jetty.xml</code></a>, which is a <code>Ref</code> element then used in <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-http.xml"><code>jetty-http.xml</code></a>, <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a> and in <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml"><code>jetty-http2.xml</code></a>.</p>
 </div>
 <div class="paragraph">
 <p>A typical configuration of <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/HttpConfiguration.html">HttpConfiguration</a> is:</p>
@@ -3169,7 +3171,7 @@
 <div class="paragraph">
 <p>The SSL/TLS connectors for HTTPS and HTTP/2 require a certificate to establish a secure connection.
 Jetty holds certificates in standard JVM keystores and are configured as keystore and truststores on a <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/util/ssl/SslContextFactory.Server.html"><code>SslContextFactory.Server</code></a> instance that is injected into an <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/SslConnectionFactory.html"><code>SslConnectionFactory</code></a> instance.
-An example using the keystore distributed with Jetty (containing a self signed test certificate) is in <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a>.
+An example using the keystore distributed with Jetty (containing a self signed test certificate) is in <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-https.xml"><code>jetty-https.xml</code></a>.
 Read more about SSL keystores in <a href="#configuring-ssl">Configuring SSL</a>.</p>
 </div>
 </div>
@@ -5004,7 +5006,7 @@
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;dependency&gt;</span>
     <span class="tag">&lt;groupId&gt;</span>org.eclipse.jetty<span class="tag">&lt;/groupId&gt;</span>
     <span class="tag">&lt;artifactId&gt;</span>jetty-quickstart<span class="tag">&lt;/artifactId&gt;</span>
-    <span class="tag">&lt;version&gt;</span>11.0.6<span class="tag">&lt;/version&gt;</span>
+    <span class="tag">&lt;version&gt;</span>11.0.7<span class="tag">&lt;/version&gt;</span>
 <span class="tag">&lt;/dependency&gt;</span></code></pre>
 </div>
 </div>
@@ -5173,7 +5175,7 @@
 <div class="paragraph">
 <p>Jetty is decomposed into many jars and dependencies to achieve a minimal footprint by selecting the minimal set of jars.
 Typically it is best to use something like <a href="#jetty-maven-helloworld">Maven</a> to manage jars, however this tutorial uses an aggregate Jar that contains all of the required Jetty classes in one Jar.
-You can manually download the aggregate <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/11.0.6/jetty-all-11.0.6-uber.jar"><code>jetty-all.jar</code></a> using <code>curl</code> or a browser.</p>
+You can manually download the aggregate <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/11.0.7/jetty-all-11.0.7-uber.jar"><code>jetty-all.jar</code></a> using <code>curl</code> or a browser.</p>
 </div>
 <div class="quoteblock">
 <blockquote>
@@ -5216,7 +5218,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">&gt; mkdir Demo
 &gt; cd Demo
-&gt; curl -o jetty-all-uber.jar https://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/11.0.6/jetty-all-11.0.6-uber.jar</code></pre>
+&gt; curl -o jetty-all-uber.jar https://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/11.0.7/jetty-all-11.0.7-uber.jar</code></pre>
 </div>
 </div>
 </div>
@@ -5225,7 +5227,7 @@
 <div class="paragraph">
 <p>The <a href="#embedding">Embedding Jetty</a> section contains many examples of writing against the Jetty API.
 This tutorial uses a simple HelloWorld handler with a main method to run the server.
-You can either <a href="https://github.com/eclipse/jetty.project/tree/master/examples/embedded/src/main/java/org/eclipse/jetty/embedded/HelloWorld.java">download</a> or create in an editor the file <code>HelloWorld.java</code> with the following content:</p>
+You can either <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/examples/embedded/src/main/java/org/eclipse/jetty/embedded/HelloWorld.java">download</a> or create in an editor the file <code>HelloWorld.java</code> with the following content:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -5597,36 +5599,36 @@
 <div class="paragraph">
 <p>The typical way to configure an instance of the Jetty server is via <code>jetty.xml</code> and associated configuration files.
 However the Jetty XML configuration format is just a simple rendering of what you can do in code; it is very simple to write embedded code that does precisely what the jetty.xml configuration does.
-The <a href="https://github.com/eclipse/jetty.project/tree/master/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java">LikeJettyXml example</a> following renders in code the behavior obtained from the configuration files:</p>
+The <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java">LikeJettyXml example</a> following renders in code the behavior obtained from the configuration files:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty.xml">jetty.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty.xml">jetty.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-jmx/src/main/config/etc/jetty-jmx.xml">jetty-jmx.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-jmx/src/main/config/etc/jetty-jmx.xml">jetty-jmx.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-http.xml">jetty-http.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-http.xml">jetty-http.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-https.xml">jetty-https.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-https.xml">jetty-https.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-deploy/src/main/config/etc/jetty-deploy.xml">jetty-deploy.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-deploy/src/main/config/etc/jetty-deploy.xml">jetty-deploy.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-stats.xml">jetty-stats.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-stats.xml">jetty-stats.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-requestlog.xml">jetty-requestlog.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-requestlog.xml">jetty-requestlog.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/jetty-server/src/main/config/etc/jetty-lowresources.xml">jetty-lowresources.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-server/src/main/config/etc/jetty-lowresources.xml">jetty-lowresources.xml</a></p>
 </li>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/test-realm.xml">test-realm.xml</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jetty-webapp/src/main/config/demo-base/etc/test-realm.xml">test-realm.xml</a></p>
 </li>
 </ul>
 </div>
@@ -9816,7 +9818,7 @@
 <pre class="CodeRay highlight"><code data-lang="screen">[2093] java -jar start.jar
 
 2013-07-26 15:47:53.480:INFO:oejs.Server:main: jetty-9.0.4.v20130625
-2013-07-26 15:47:53.549:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/home/user/jetty-home-11.0.6/webapps/] at interval 1
+2013-07-26 15:47:53.549:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/home/user/jetty-home-11.0.7/webapps/] at interval 1
 Jul 26, 2013 3:47:53 PM com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextInitialized
 INFO: WSSERVLET12: JAX-WS context listener initializing
 Jul 26, 2013 3:47:56 PM com.sun.xml.ws.server.MonitorBase createRoot
@@ -9850,7 +9852,7 @@
 It also provides a Quick Start guide on how to get Jetty up and running as well as an overview of how and what to configure in Jetty.</p>
 </li>
 <li>
-<p>The <a href="../operations-guide/index.html">Operations Guide</a> details configuring Jetty as a distributed package at a more granular level.
+<p>The <a href="{OPGUIDE}">Operations Guide</a> details configuring Jetty as a distributed package at a more granular level.
 From server startup to session management, logging, HTTP/2 support and Jetty optimization, these chapters will help administrators get the most out of their distributed Jetty server instances.
 This section also covers configuring many of the most common servlet container features such as JNDI and JMX.</p>
 </li>
@@ -9861,7 +9863,7 @@
 This section also includes a guide on using the Jetty Maven plugin as well as information on debugging Jetty.</p>
 </li>
 <li>
-<p>The <a href="#../contribution-guide/index.html">Contribution Guide</a> is aimed at those who want to contribute to the Jetty open source project.
+<p>The <a href="#{CONTRIBGUIDE}">Contribution Guide</a> is aimed at those who want to contribute to the Jetty open source project.
 It includes instructions on interacting with the community, how to raise bugs, and how to report security issues.
 In addition, it also details source control and build information for the project.</p>
 </li>
@@ -10600,7 +10602,7 @@
 <pre class="CodeRay highlight"><code data-lang="screen">$ java -jar start.jar
 2017-09-20 15:45:11.986:INFO::main: Logging initialized @683ms to org.eclipse.jetty.util.log.StdErrLog
 2017-09-20 15:45:12.197:WARN:oejs.HomeBaseWarning:main: This instance of Jetty is not running from a separate {jetty.base} directory, this is not recommended.  See documentation at https://www.eclipse.org/jetty/documentation/current/startup.html
-2017-09-20 15:45:12.243:INFO:oejs.Server:main: 11.0.6
+2017-09-20 15:45:12.243:INFO:oejs.Server:main: 11.0.7
 2017-09-20 15:45:12.266:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///installs/repository/jetty/webapps/] at interval 1
 2017-09-20 15:45:12.298:INFO:oejs.AbstractConnector:main: Started ServerConnector@39c0f4a{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 2017-09-20 15:45:12.298:INFO:oejs.Server:main: Started @995ms</code></pre>
@@ -10647,14 +10649,14 @@
 [my-base]$ java -jar /path/to/jetty-home/start.jar
 2017-09-20 16:23:03.563:INFO::main: Logging initialized @429ms to org.eclipse.jetty.util.log.StdErrLog
 2017-09-20 16:23:03.802:WARN::main: demo test-realm is deployed. DO NOT USE IN PRODUCTION!
-2017-09-20 16:23:03.804:INFO:oejs.Server:main: 11.0.6
+2017-09-20 16:23:03.804:INFO:oejs.Server:main: 11.0.7
 2017-09-20 16:23:03.819:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///installs/repository/jetty/demo-base/webapps/] at interval 1
 2017-09-20 16:23:04.098:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=102ms
 2017-09-20 16:23:04.103:WARN::main: async-rest webapp is deployed. DO NOT USE IN PRODUCTION!
 2017-09-20 16:23:04.267:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0
 2017-09-20 16:23:04.267:INFO:oejs.session:main: No SessionScavenger set, using defaults
 2017-09-20 16:23:04.268:INFO:oejs.session:main: Scavenging every 660000ms
-2017-09-20 16:23:04.306:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@371a67ec{/async-rest,[file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-5319296087878801290.dir/webapp/, jar:file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-5319296087878801290.dir/webapp/WEB-INF/lib/example-async-rest-jar-11.0.6.jar!/META-INF/resources],AVAILABLE}{/async-rest.war}
+2017-09-20 16:23:04.306:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@371a67ec{/async-rest,[file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-5319296087878801290.dir/webapp/, jar:file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-5319296087878801290.dir/webapp/WEB-INF/lib/example-async-rest-jar-11.0.7.jar!/META-INF/resources],AVAILABLE}{/async-rest.war}
 2017-09-20 16:23:04.429:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=53ms
 2017-09-20 16:23:04.432:WARN::main: test webapp is deployed. DO NOT USE IN PRODUCTION!
 2017-09-20 16:23:04.511:INFO:oejsh.ManagedAttributeListener:main: update PushFilter null-&gt;org.eclipse.jetty.servlets.PushCacheFilter@2362f559 on o.e.j.w.WebAppContext@35e2d654{/test,file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test.war-_test-any-6279588879522983394.dir/webapp/,STARTING}{/test.war}
@@ -10671,7 +10673,7 @@
 2017-09-20 16:23:05.098:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@506ae4d4{/test-jaas,file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test-jaas.war-_test-jaas-any-8067423971450448377.dir/webapp/,AVAILABLE}{/test-jaas.war}
 2017-09-20 16:23:05.182:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=37ms
 2017-09-20 16:23:05.184:WARN::main: test-spec webapp is deployed. DO NOT USE IN PRODUCTION!
-2017-09-20 16:23:05.243:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@45099dd3{/test-spec,[file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-1205866915335004234.dir/webapp/, jar:file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-1205866915335004234.dir/webapp/WEB-INF/lib/test-web-fragment-11.0.6.jar!/META-INF/resources],AVAILABLE}{/test-spec.war}
+2017-09-20 16:23:05.243:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@45099dd3{/test-spec,[file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-1205866915335004234.dir/webapp/, jar:file:///private/var/folders/h6/yb_lbnnn11g0y1jjlvqg631h0000gn/T/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-1205866915335004234.dir/webapp/WEB-INF/lib/test-web-fragment-11.0.7.jar!/META-INF/resources],AVAILABLE}{/test-spec.war}
 2017-09-20 16:23:05.247:INFO:oejsh.ContextHandler:main: Started o.e.j.s.h.MovedContextHandler@3e08ff24{/oldContextPath,null,AVAILABLE}
 2017-09-20 16:23:05.274:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=18ms
 2017-09-20 16:23:05.296:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@5ddeb7cb{/,file:///installs/repository/jetty/demo-base/webapps/ROOT/,AVAILABLE}{/ROOT}
@@ -10808,7 +10810,7 @@
 2015-06-04 11:10:16.460:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///tmp/mybase/webapps/] at interval 1
 2015-06-04 11:10:16.581:WARN::main: async-rest webapp is deployed. DO NOT USE IN PRODUCTION!
 2015-06-04 11:10:16.589:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
-2015-06-04 11:10:16.628:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@1a407d53{/,[file:///tmp/jetty-0.0.0.0-8080-ROOT.war-_-any-4510228025526425427.dir/webapp/, jar:file:///tmp/jetty-0.0.0.0-8080-ROOT.war-_-any-4510228025526425427.dir/webapp/WEB-INF/lib/example-async-rest-jar-11.0.6.jar!/META-INF/resources],AVAILABLE}{/ROOT.war}
+2015-06-04 11:10:16.628:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@1a407d53{/,[file:///tmp/jetty-0.0.0.0-8080-ROOT.war-_-any-4510228025526425427.dir/webapp/, jar:file:///tmp/jetty-0.0.0.0-8080-ROOT.war-_-any-4510228025526425427.dir/webapp/WEB-INF/lib/example-async-rest-jar-11.0.7.jar!/META-INF/resources],AVAILABLE}{/ROOT.war}
 2015-06-04 11:10:16.645:INFO:oejs.ServerConnector:main: Started ServerConnector@3abbfa04{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 2015-06-04 11:10:16.646:INFO:oejs.Server:main: Started @634ms</code></pre>
 </div>
@@ -12880,7 +12882,7 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-As of Jetty 10, the <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.mail.glassfish/1.4.1.v201005082020/javax.mail.glassfish-1.4.1.v201005082020.jar"><code>javax.mail</code></a> and  <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.activation/1.1.0.v201105071233/javax.activation-1.1.0.v201105071233.jar"><code>javax.activation</code></a> jar files are not included in the Jetty Distribution and will need to be downloaded separately from Maven Central.
+As of Jetty 10, the <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/javax.mail.glassfish/1.4.1.v201005082020/javax.mail.glassfish-1.4.1.v201005082020.jar"><code>javax.mail</code></a> and  <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/javax.activation/1.1.0.v201105071233/javax.activation-1.1.0.v201105071233.jar"><code>javax.activation</code></a> jar files are not included in the Jetty Distribution and will need to be downloaded separately from Maven Central.
 </td>
 </tr>
 </table>
@@ -13036,11 +13038,11 @@
 </div>
 <div class="paragraph">
 <p>If you are using transactions, you will also need the <code>javax.transaction</code> api.
-You can obtain this jar <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.transaction/1.1.1.v201105210645/javax.transaction-1.1.1.v201105210645.jar">here.</a></p>
+You can obtain this jar <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/javax.transaction/1.1.1.v201105210645/javax.transaction-1.1.1.v201105210645.jar">here.</a></p>
 </div>
 <div class="paragraph">
-<p>If you wish to use mail, you will also need the <code>javax.mail</code> api and implementation which <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.mail.glassfish/1.4.1.v201005082020/javax.mail.glassfish-1.4.1.v201005082020.jar">you can download here.</a>
-Note that this jar also requires the <code>javax.activation</code> classes, which is available <a href="https://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.activation/1.1.0.v201105071233/javax.activation-1.1.0.v201105071233.jar">at this link.</a></p>
+<p>If you wish to use mail, you will also need the <code>javax.mail</code> api and implementation which <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/javax.mail.glassfish/1.4.1.v201005082020/javax.mail.glassfish-1.4.1.v201005082020.jar">you can download here.</a>
+Note that this jar also requires the <code>javax.activation</code> classes, which is available <a href="http://central.maven.org/maven2/org/eclipse/jetty/orbit/javax.activation/1.1.0.v201105071233/javax.activation-1.1.0.v201105071233.jar">at this link.</a></p>
 </div>
 </div>
 <div class="sect3">
@@ -14168,7 +14170,7 @@
 <div class="sect3">
 <h4 id="selecting-log-framework"><a class="anchor" href="#selecting-log-framework"></a><a class="link" href="#selecting-log-framework">Selecting the Log Framework</a></h4>
 <div class="paragraph">
-<p>Configure the Jetty logging layer via the <code>org.eclipse.jetty.util.log.Log</code> class, following <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-util/src/main/java/org/eclipse/jetty/util/log/Log.java">these rules</a>.</p>
+<p>Configure the Jetty logging layer via the <code>org.eclipse.jetty.util.log.Log</code> class, following <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-util/src/main/java/org/eclipse/jetty/util/log/Log.java">these rules</a>.</p>
 </div>
 <div class="olist arabic">
 <ol class="arabic">
@@ -14213,7 +14215,7 @@
 </td>
 <td class="content">
 You can create your own custom logging by providing an implementation of the <a href="https://www.eclipse.org/jetty/javadoc/jetty-11org/eclipse/jetty/util/log/Logger.html">Jetty Logger API</a>.
-For an example of a custom logger, see <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-util/src/main/java/org/eclipse/jetty/util/log/JavaUtilLog.java">JavaUtilLog.java</a>.
+For an example of a custom logger, see <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-util/src/main/java/org/eclipse/jetty/util/log/JavaUtilLog.java">JavaUtilLog.java</a>.
 </td>
 </tr>
 </table>
@@ -14394,7 +14396,7 @@
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">2016-10-21 15:31:01.248:INFO::main: Logging initialized @332ms to org.eclipse.jetty.util.log.StdErrLog
-2016-10-21 15:31:01.370:INFO:oejs.Server:main: jetty-11.0.6
+2016-10-21 15:31:01.370:INFO:oejs.Server:main: jetty-11.0.7
 2016-10-21 15:31:01.400:INFO:oejs.AbstractConnector:main: Started ServerConnector@2c330fbc{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 2016-10-21 15:31:01.400:INFO:oejs.Server:main: Started @485ms</code></pre>
 </div>
@@ -14405,7 +14407,7 @@
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">2016-10-21 15:31:35.020:INFO::main: Logging initialized @340ms to org.eclipse.jetty.util.log.StdErrLog
-2016-10-21 15:31:35.144:INFO:org.eclipse.jetty.server.Server:main: jetty-11.0.6
+2016-10-21 15:31:35.144:INFO:org.eclipse.jetty.server.Server:main: jetty-11.0.7
 2016-10-21 15:31:35.174:INFO:org.eclipse.jetty.server.AbstractConnector:main: Started ServerConnector@edf4efb{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 2016-10-21 15:31:35.175:INFO:org.eclipse.jetty.server.Server:main: Started @495ms</code></pre>
 </div>
@@ -15138,7 +15140,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">[my-base]$ java -jar /path/to/jetty-home/start.jar
 419  [main] INFO  org.eclipse.jetty.util.log - Logging initialized @508ms to org.eclipse.jetty.util.log.Slf4jLog
-540  [main] INFO  org.eclipse.jetty.server.Server - jetty-11.0.6
+540  [main] INFO  org.eclipse.jetty.server.Server - jetty-11.0.7
 575  [main] INFO  o.e.jetty.server.AbstractConnector - Started ServerConnector@3c0ecd4b{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
 575  [main] INFO  org.eclipse.jetty.server.Server - Started @668ms</code></pre>
 </div>
@@ -15575,8 +15577,8 @@
 Downloading JDK...
 Copying openjdk-1.7.0_21.tar.gz from the buildpack cache ...
 Unpacking JDK to .jdk
-Downloading Jetty: jetty-home-11.0.6.tar.gz
-Downloading jetty-home-11.0.6.tar.gz from http://repo2.maven.org/maven2/org/eclipse/jetty/jetty-home/10.0.0.v202012xx/ ...
+Downloading Jetty: jetty-home-11.0.7.tar.gz
+Downloading jetty-home-11.0.7.tar.gz from http://repo2.maven.org/maven2/org/eclipse/jetty/jetty-home/10.0.0.v202012xx/ ...
 Unpacking Jetty to .jetty
 -&gt; Uploading staged droplet (36M)
 -&gt; Uploaded droplet
@@ -16240,13 +16242,13 @@
 <div class="sect3">
 <h4 id="_configuring-an-authentication-mechanism"><a class="anchor" href="#_configuring-an-authentication-mechanism"></a><a class="link" href="#_configuring-an-authentication-mechanism">Configuring an Authentication mechanism</a></h4>
 <div class="paragraph">
-<p>Jetty server supports several standard authentication mechanisms: <a href="http://en.wikipedia.org/wiki/Basic_access_authentication">BASIC</a>; <a href="http://en.wikipedia.org/wiki/Digest_authentication">DIGEST</a>; <a href="http://en.wikipedia.org/wiki/Form-based_authentication">FORM</a>; CLIENT-CERT; and other mechanisms can be plugged in using the extensible <a href="http://docs.oracle.com/cd/E19462-01/819-6717/gcszc/index.html">JASPI</a> or <a href="http://en.wikipedia.org/wiki/SPNEGO">SPNEGO</a> mechanisms.</p>
+<p>Jetty server supports several standard authentication mechanisms: <a href="http://en.wikipedia.org/wiki/Basic_access_authentication">BASIC</a>; <a href="http://en.wikipedia.org/wiki/Digest_authentication">DIGEST</a>; <a href="http://en.wikipedia.org/wiki/Form-based_authentication">FORM</a>; CLIENT-CERT; and other mechanisms can be plugged in using the extensible <a href="https://jakarta.ee/specifications/authentication/2.0/jakarta-authentication-spec-2.0.pdf">JakartaAuthentication</a> or <a href="http://en.wikipedia.org/wiki/SPNEGO">SPNEGO</a> mechanisms.</p>
 </div>
 <div class="paragraph">
 <p>Internally, configuring an authentication mechanism is done by setting an instance of a the <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/security/Authenticator.html">Authenticator</a> interface onto the <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/security/SecurityHandler.html">SecurityHandler</a> of the context, but in most cases it is done by declaring a <code>&lt;login-config&gt;</code> element in the standard web.xml descriptor or via annotations.</p>
 </div>
 <div class="paragraph">
-<p>Below is an example taken from the <a href="https://github.com/eclipse/jetty.project/tree/master/tests/test-webapps/test-jetty-webapp/src/main/webapp/WEB-INF/web.xml?h=release-9">jetty-test-webapp web.xml</a> that configures BASIC authentication:</p>
+<p>Below is an example taken from the <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jetty-webapp/src/main/webapp/WEB-INF/web.xml?h=release-9">jetty-test-webapp web.xml</a> that configures BASIC authentication:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -16257,7 +16259,7 @@
 </div>
 </div>
 <div class="paragraph">
-<p>The <a href="https://github.com/eclipse/jetty.project/tree/master/tests/test-webapps/test-jetty-webapp/src/main/webapp/WEB-INF/web.xml?h=release-9">jetty-test-webapp web.xml</a> also includes commented out examples of other DIGEST and FORM configuration:</p>
+<p>The <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jetty-webapp/src/main/webapp/WEB-INF/web.xml?h=release-9">jetty-test-webapp web.xml</a> also includes commented out examples of other DIGEST and FORM configuration:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -16273,7 +16275,7 @@
 </div>
 <div class="paragraph">
 <p>With FORM Authentication, you must also configure URLs of pages to generate a login form and handle errors.
-Below is a simple HTML form from the <a href="https://github.com/eclipse/jetty.project/tree/master/tests/test-webapps/test-jetty-webapp/src/main/webapp/logon.html?h=release-9">test webapp logon.html</a>:</p>
+Below is a simple HTML form from the <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jetty-webapp/src/main/webapp/logon.html?h=release-9">test webapp logon.html</a>:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -16839,6 +16841,26 @@
 </div>
 </div>
 </div>
+<div class="sect3">
+<h4 id="_jakarta-authentication-jaspi"><a class="anchor" href="#_jakarta-authentication-jaspi"></a><a class="link" href="#_jakarta-authentication-jaspi">Jakarta Authentication (JASPI)</a></h4>
+<div class="paragraph">
+<p>Jetty can utilize portable authentication modules that implements the Jakara Authentication specification. This requires the jetty-jaspi module.</p>
+</div>
+<div class="paragraph">
+<p>Only modules conforming to the ServerAuthModule interface in the <a href="https://jakarta.ee/specifications/authentication/2.0/jakarta-authentication-spec-2.0.pdf">JakartaAuthentication</a> are supported. These modules must be configured before start-up.</p>
+</div>
+<div class="paragraph">
+<p>The following illustrates a jetty module setting up HTTP Basic Authentication using a Jakarta Authentication module that comes packaged with the jetty-jaspi module: <code>org.eclipse.jetty.security.jaspi.modules.BasicAuthenticationAuthModule</code></p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml">Unresolved directive in security/authentication.adoc - include::/Users/joakim/Code/Jetty/jetty.project-11.0.x/documentation/jetty-documentation/../jetty-jaspi/src/main/config/etc/jaspi/jaspi-demo.xml[tags=documentation]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Given the portability goal of Jakarta Authentication, custom or 3rd party <code>ServerAuthModule</code> implementations may be configured instead here.</p>
+</div>
+</div>
 </div>
 <div class="sect2">
 <h3 id="configuring-form-size"><a class="anchor" href="#configuring-form-size"></a><a class="link" href="#configuring-form-size">Limiting Form Content</a></h3>
@@ -17040,7 +17062,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp lib/jetty-util-11.0.6.jar org.eclipse.jetty.util.security.Password
+<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp lib/jetty-util-11.0.7.jar org.eclipse.jetty.util.security.Password
 
 Usage - java org.eclipse.jetty.util.security.Password [&lt;user&gt;] &lt;password&gt;
 If the password is ?, the user will be prompted for the password</code></pre>
@@ -17051,7 +17073,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp ../lib/jetty-util-11.0.6.jar org.eclipse.jetty.util.security.Password username password
+<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp ../lib/jetty-util-11.0.7.jar org.eclipse.jetty.util.security.Password username password
 2017-12-13 11:19:27.928:INFO::main: Logging initialized @95ms to org.eclipse.jetty.util.log.StdErrLog
 password
 OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v
@@ -17092,7 +17114,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp ../lib/jetty-util-11.0.6.jar org.eclipse.jetty.util.security.Password username username:realm:password
+<pre class="CodeRay highlight"><code data-lang="screen">$ java -cp ../lib/jetty-util-11.0.7.jar org.eclipse.jetty.util.security.Password username username:realm:password
 2017-12-13 11:34:33.263:INFO::main: Logging initialized @97ms to org.eclipse.jetty.util.log.StdErrLog
 username:realm:password
 OBF:1w281yf41v1x1z7e1xmi1v1p1tvv1v901c3j1x8k1ugo1ri71uh21x8a1c3j1v9m1tv71v2p1xms1z7o1v2h1yf21w1a
@@ -17864,7 +17886,7 @@
 <div class="ulist">
 <ul>
 <li>
-<p><a href="https://github.com/eclipse/jetty.project/tree/master/tests/test-webapps/test-jaas-webapp">https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jaas-webapp</a></p>
+<p><a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jaas-webapp">https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/tests/test-webapps/test-jaas-webapp</a></p>
 </li>
 </ul>
 </div>
@@ -18235,24 +18257,24 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">[/opt/jetty]# tar -zxf /home/user/downloads/jetty-home-11.0.6.tar.gz
-[/opt/jetty]# cd jetty-home-11.0.6/
-[/opt/jetty/jetty-home-11.0.6]# ls
+<pre class="CodeRay highlight"><code data-lang="screen">[/opt/jetty]# tar -zxf /home/user/downloads/jetty-home-11.0.7.tar.gz
+[/opt/jetty]# cd jetty-home-11.0.7/
+[/opt/jetty/jetty-home-11.0.7]# ls
 bin        lib                         modules      resources  start.jar
 demo-base  license-eplv10-aslv20.html  notice.html  start.d    VERSION.txt
 etc        logs                        README.TXT   start.ini  webapps
 
-[/opt/jetty/jetty-home-11.0.6]# cp bin/jetty.sh /etc/init.d/jetty
-[/opt/jetty/jetty-home-11.0.6]# echo JETTY_HOME=`pwd` &gt; /etc/default/jetty
-[/opt/jetty/jetty-home-11.0.6]# cat /etc/default/jetty
-JETTY_HOME=/opt/jetty/jetty-home-11.0.6
+[/opt/jetty/jetty-home-11.0.7]# cp bin/jetty.sh /etc/init.d/jetty
+[/opt/jetty/jetty-home-11.0.7]# echo JETTY_HOME=`pwd` &gt; /etc/default/jetty
+[/opt/jetty/jetty-home-11.0.7]# cat /etc/default/jetty
+JETTY_HOME=/opt/jetty/jetty-home-11.0.7
 
-[/opt/jetty/jetty-home-11.0.6]# service jetty start
+[/opt/jetty/jetty-home-11.0.7]# service jetty start
 Starting Jetty: OK Wed Nov 20 10:26:53 MST 2013</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>From this demonstration we can see that Jetty started successfully as a Unix Service from the <code>/opt/jetty/jetty-home-11.0.6</code> directory.</p>
+<p>From this demonstration we can see that Jetty started successfully as a Unix Service from the <code>/opt/jetty/jetty-home-11.0.7</code> directory.</p>
 </div>
 <div class="paragraph">
 <p>This configuration works well but it is running Jetty as the root user.</p>
@@ -18360,9 +18382,9 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">[/opt/jetty]# tar -zxf /home/user/Downloads/jetty-home-11.0.6.tar.gz
+<pre class="CodeRay highlight"><code data-lang="screen">[/opt/jetty]# tar -zxf /home/user/Downloads/jetty-home-11.0.7.tar.gz
 [/opt/jetty]# ls -F
-jetty-home-11.0.6/
+jetty-home-11.0.7/
 [/opt/jetty]# mkdir /opt/jetty/temp</code></pre>
 </div>
 </div>
@@ -18398,7 +18420,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen"># cd /opt/web/mybase/
 [/opt/web/mybase]# ls
-[/opt/web/mybase]# java -jar /opt/jetty/jetty-home-11.0.6/start.jar \
+[/opt/web/mybase]# java -jar /opt/jetty/jetty-home-11.0.7/start.jar \
    --add-to-start=deploy,http,console-capture
    INFO  : webapp          transitively enabled, ini template available with --add-to-start=webapp
    INFO  : server          transitively enabled, ini template available with --add-to-start=server
@@ -18477,8 +18499,8 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen"># cp /opt/jetty/jetty-home-11.0.6/bin/jetty.sh /etc/init.d/jetty
-# echo &quot;JETTY_HOME=/opt/jetty/jetty-home-11.0.6&quot; &gt; /etc/default/jetty
+<pre class="CodeRay highlight"><code data-lang="screen"># cp /opt/jetty/jetty-home-11.0.7/bin/jetty.sh /etc/init.d/jetty
+# echo &quot;JETTY_HOME=/opt/jetty/jetty-home-11.0.7&quot; &gt; /etc/default/jetty
 # echo &quot;JETTY_BASE=/opt/web/mybase&quot; &gt;&gt; /etc/default/jetty
 # echo &quot;TMPDIR=/opt/jetty/temp&quot; &gt;&gt; /etc/default/jetty</code></pre>
 </div>
@@ -18491,32 +18513,32 @@
 <pre class="CodeRay highlight"><code data-lang="screen"># service jetty status
 Checking arguments to Jetty:
 START_INI      =  /opt/web/mybase/start.ini
-JETTY_HOME     =  /opt/jetty/jetty-home-11.0.6
+JETTY_HOME     =  /opt/jetty/jetty-home-11.0.7
 JETTY_BASE     =  /opt/web/mybase
-JETTY_CONF     =  /opt/jetty/jetty-home-11.0.6/etc/jetty.conf
+JETTY_CONF     =  /opt/jetty/jetty-home-11.0.7/etc/jetty.conf
 JETTY_PID      =  /var/run/jetty.pid
-JETTY_START    =  /opt/jetty/jetty-home-11.0.6/start.jar
+JETTY_START    =  /opt/jetty/jetty-home-11.0.7/start.jar
 CLASSPATH      =
 JAVA           =  /usr/bin/java
 JAVA_OPTIONS   =  -Djetty.state=/opt/web/mybase/jetty.state
        -Djetty.logs=/opt/web/mybase/logs
-       -Djetty.home=/opt/jetty/jetty-home-11.0.6
+       -Djetty.home=/opt/jetty/jetty-home-11.0.7
        -Djetty.base=/opt/web/mybase
        -Djava.io.tmpdir=/opt/jetty/temp
 JETTY_ARGS     =  console-capture.xml jetty-started.xml
 RUN_CMD        =  /usr/bin/java
        -Djetty.state=/opt/web/mybase/jetty.state
        -Djetty.logs=/opt/web/mybase/logs
-       -Djetty.home=/opt/jetty/jetty-home-11.0.6
+       -Djetty.home=/opt/jetty/jetty-home-11.0.7
        -Djetty.base=/opt/web/mybase
        -Djava.io.tmpdir=/opt/jetty/temp
-       -jar /opt/jetty/jetty-home-11.0.6/start.jar
+       -jar /opt/jetty/jetty-home-11.0.7/start.jar
        console-capture.xml
        jetty-started.xml</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>You now have a configured <code>${jetty.base}</code> in <code>/opt/web/mybase</code> and a <code>${jetty.home}</code> in <code>/opt/jetty/jetty-home-11.0.6</code>, along with the service level files necessary to start the service.</p>
+<p>You now have a configured <code>${jetty.base}</code> in <code>/opt/web/mybase</code> and a <code>${jetty.home}</code> in <code>/opt/jetty/jetty-home-11.0.7</code>, along with the service level files necessary to start the service.</p>
 </div>
 <div class="paragraph">
 <p>Test the service to make sure it starts up and runs successfully.</p>
@@ -18625,7 +18647,7 @@
 <p>Download a copy of the ZIP distribution from the <a href="#jetty-downloading">Official Eclipse Download Site</a></p>
 </div>
 <div class="paragraph">
-<p>Extract the contents of the <code>jetty-home-11.0.6</code> directory to <code>C:\opt\jetty</code></p>
+<p>Extract the contents of the <code>jetty-home-11.0.7</code> directory to <code>C:\opt\jetty</code></p>
 </div>
 <div class="paragraph">
 <p>Once complete, the contents of the <code>C:\opt\jetty</code> directory should look like this:</p>
@@ -19331,7 +19353,7 @@
 <div class="sect3">
 <h4 id="_remedy-2"><a class="anchor" href="#_remedy-2"></a><a class="link" href="#_remedy-2">Remedy</a></h4>
 <div class="paragraph">
-<p>To help offset the delay in systems like OSX, Jetty defaults the value for non-native implementations to a <a href="https://github.com/eclipse/jetty.project/tree/master/jetty-util/src/main/java/org/eclipse/jetty/util/PathWatcher.java#L1431">time of 5000ms.</a>
+<p>To help offset the delay in systems like OSX, Jetty defaults the value for non-native implementations to a <a href="https://github.com/eclipse/jetty.project/tree/jetty-9.4.x/jetty-util/src/main/java/org/eclipse/jetty/util/PathWatcher.java#L1431">time of 5000ms.</a>
 Using values lower than 5000ms is not recommended and has shown to frequently fail.</p>
 </div>
 </div>
@@ -19755,10 +19777,9 @@
 </div>
 <div id="footer">
 <div id="footer-text">
-Version 11.0.6<br>
+Version 11.0.7<br>
 Last updated 2021-05-12 15:27:21 -0500
 </div>
 </div>
-<link rel="stylesheet" href="./coderay-asciidoctor.css">
 </body>
 </html>
\ No newline at end of file
diff --git a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-0f37d1d5b12f280e1587df6f3d528998.png.cache b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-0f37d1d5b12f280e1587df6f3d528998.png.cache
index 53e8ab8..70baea4 100644
--- a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-0f37d1d5b12f280e1587df6f3d528998.png.cache
+++ b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-0f37d1d5b12f280e1587df6f3d528998.png.cache
@@ -1 +1 @@
-{"checksum":"0f37d1d5b12f280e1587df6f3d528998","options":{"config":null},"width":363,"height":259}
\ No newline at end of file
+{"checksum":"0f37d1d5b12f280e1587df6f3d528998","options":{"size_limit":"4096"},"width":351,"height":245}
\ No newline at end of file
diff --git a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-176305f848d18dc8b0c4ef7bd331705d.png.cache b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-176305f848d18dc8b0c4ef7bd331705d.png.cache
index 780fcf0..2882c0a 100644
--- a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-176305f848d18dc8b0c4ef7bd331705d.png.cache
+++ b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-176305f848d18dc8b0c4ef7bd331705d.png.cache
@@ -1 +1 @@
-{"checksum":"176305f848d18dc8b0c4ef7bd331705d","options":{"config":null},"width":381,"height":281}
\ No newline at end of file
+{"checksum":"176305f848d18dc8b0c4ef7bd331705d","options":{"size_limit":"4096"},"width":374,"height":267}
\ No newline at end of file
diff --git a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-2830e38460d606111888c5df2a645163.png.cache b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-2830e38460d606111888c5df2a645163.png.cache
index 10ffe2e..a240360 100644
--- a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-2830e38460d606111888c5df2a645163.png.cache
+++ b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-2830e38460d606111888c5df2a645163.png.cache
@@ -1 +1 @@
-{"checksum":"2830e38460d606111888c5df2a645163","options":{"config":null},"width":336,"height":629}
\ No newline at end of file
+{"checksum":"2830e38460d606111888c5df2a645163","options":{"size_limit":"4096"},"width":332,"height":623}
\ No newline at end of file
diff --git a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-70817cc5c7137abc9759cdcd3edbb658.png.cache b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-70817cc5c7137abc9759cdcd3edbb658.png.cache
index 9a81721..a032db4 100644
--- a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-70817cc5c7137abc9759cdcd3edbb658.png.cache
+++ b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-70817cc5c7137abc9759cdcd3edbb658.png.cache
@@ -1 +1 @@
-{"checksum":"70817cc5c7137abc9759cdcd3edbb658","options":{"config":null},"width":225,"height":403}
\ No newline at end of file
+{"checksum":"70817cc5c7137abc9759cdcd3edbb658","options":{"size_limit":"4096"},"width":219,"height":397}
\ No newline at end of file
diff --git a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-7387dfbb6f9fb9cfa951a697aca488a8.png.cache b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-7387dfbb6f9fb9cfa951a697aca488a8.png.cache
index 185cc88..172db00 100644
--- a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-7387dfbb6f9fb9cfa951a697aca488a8.png.cache
+++ b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-7387dfbb6f9fb9cfa951a697aca488a8.png.cache
@@ -1 +1 @@
-{"checksum":"7387dfbb6f9fb9cfa951a697aca488a8","options":{"config":null},"width":140,"height":290}
\ No newline at end of file
+{"checksum":"7387dfbb6f9fb9cfa951a697aca488a8","options":{"size_limit":"4096"},"width":135,"height":284}
\ No newline at end of file
diff --git a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-792f4cd700f2b5af8fedd7b0249d25b4.png.cache b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-792f4cd700f2b5af8fedd7b0249d25b4.png.cache
index 90c49f3..cb6c307 100644
--- a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-792f4cd700f2b5af8fedd7b0249d25b4.png.cache
+++ b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-792f4cd700f2b5af8fedd7b0249d25b4.png.cache
@@ -1 +1 @@
-{"checksum":"792f4cd700f2b5af8fedd7b0249d25b4","options":{"config":null},"width":694,"height":177}
\ No newline at end of file
+{"checksum":"792f4cd700f2b5af8fedd7b0249d25b4","options":{"size_limit":"4096"},"width":686,"height":174}
\ No newline at end of file
diff --git a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-8a7fb4bb9c84453a4bf01a24558e8026.png.cache b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-8a7fb4bb9c84453a4bf01a24558e8026.png.cache
index 09e2f02..f0c6bf5 100644
--- a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-8a7fb4bb9c84453a4bf01a24558e8026.png.cache
+++ b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-8a7fb4bb9c84453a4bf01a24558e8026.png.cache
@@ -1 +1 @@
-{"checksum":"8a7fb4bb9c84453a4bf01a24558e8026","options":{"config":null},"width":421,"height":423}
\ No newline at end of file
+{"checksum":"8a7fb4bb9c84453a4bf01a24558e8026","options":{"size_limit":"4096"},"width":413,"height":420}
\ No newline at end of file
diff --git a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-9f323b812fd1edc8217715ca0c2ba8e9.png.cache b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-9f323b812fd1edc8217715ca0c2ba8e9.png.cache
index 7e9b92f..99cf2c8 100644
--- a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-9f323b812fd1edc8217715ca0c2ba8e9.png.cache
+++ b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-9f323b812fd1edc8217715ca0c2ba8e9.png.cache
@@ -1 +1 @@
-{"checksum":"9f323b812fd1edc8217715ca0c2ba8e9","options":{"config":null},"width":253,"height":414}
\ No newline at end of file
+{"checksum":"9f323b812fd1edc8217715ca0c2ba8e9","options":{"size_limit":"4096"},"width":247,"height":405}
\ No newline at end of file
diff --git a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-cb8a854642d32c964b17f0a090ef16e3.png.cache b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-cb8a854642d32c964b17f0a090ef16e3.png.cache
index 004d270..fcf8f5f 100644
--- a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-cb8a854642d32c964b17f0a090ef16e3.png.cache
+++ b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-cb8a854642d32c964b17f0a090ef16e3.png.cache
@@ -1 +1 @@
-{"checksum":"cb8a854642d32c964b17f0a090ef16e3","options":{"config":null},"width":450,"height":440}
\ No newline at end of file
+{"checksum":"cb8a854642d32c964b17f0a090ef16e3","options":{"size_limit":"4096"},"width":445,"height":430}
\ No newline at end of file
diff --git a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-e2488cc783b3434076c5a44ee7f19a2b.png.cache b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-e2488cc783b3434076c5a44ee7f19a2b.png.cache
index d3c802c..1bad91c 100644
--- a/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-e2488cc783b3434076c5a44ee7f19a2b.png.cache
+++ b/documentation/jetty-11/operations-guide/.asciidoctor/diagram/diag-e2488cc783b3434076c5a44ee7f19a2b.png.cache
@@ -1 +1 @@
-{"checksum":"e2488cc783b3434076c5a44ee7f19a2b","options":{"config":null},"width":384,"height":423}
\ No newline at end of file
+{"checksum":"e2488cc783b3434076c5a44ee7f19a2b","options":{"size_limit":"4096"},"width":376,"height":420}
\ No newline at end of file
diff --git a/documentation/jetty-11/operations-guide/.asciidoctorconfig b/documentation/jetty-11/operations-guide/.asciidoctorconfig
index 49b2a07..308cdcf 100644
--- a/documentation/jetty-11/operations-guide/.asciidoctorconfig
+++ b/documentation/jetty-11/operations-guide/.asciidoctorconfig
@@ -1,4 +1,5 @@
 // Asciidoctor IDE configuration file.
 // See https://github.com/asciidoctor/asciidoctor-intellij-plugin/wiki/Support-project-specific-configurations
 :experimental:
+:imagesdir: images
 :JETTY_HOME: ../../../../../../../jetty-home/target/jetty-home
diff --git a/documentation/jetty-11/operations-guide/asciidoctor.css b/documentation/jetty-11/operations-guide/asciidoctor.css
index 9d9cc70..65ec3f3 100644
--- a/documentation/jetty-11/operations-guide/asciidoctor.css
+++ b/documentation/jetty-11/operations-guide/asciidoctor.css
@@ -37,7 +37,7 @@
 table{border-collapse:collapse;border-spacing:0}
 *,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
 html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
 a:hover{cursor:pointer}
 img,object,embed{max-width:100%;height:auto}
 object,embed{height:100%}
@@ -52,10 +52,8 @@
 img,object,svg{display:inline-block;vertical-align:middle}
 textarea{height:auto;min-height:50px}
 select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.stretch{width:100%}
 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
 a{color:#2156a5;text-decoration:underline;line-height:inherit}
 a:hover,a:focus{color:#1d4b8f}
 a img{border:0}
@@ -86,28 +84,28 @@
 abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
 abbr{text-transform:none}
 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite::before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
 h1{font-size:2.75em}
 h2{font-size:2.3125em}
 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
 h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
 table thead,table tfoot{background:#f7f8f7}
 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
 table tr.even,table tr.alt{background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
 .clearfix::after,.float-group::after{clear:both}
-:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
-:not(pre)>code.nobreak{word-wrap:normal}
-:not(pre)>code.nowrap{white-space:nowrap}
+:not(pre).nobreak{word-wrap:normal}
+:not(pre).nowrap{white-space:nowrap}
+:not(pre).pre-wrap{white-space:pre-wrap}
+:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
 pre>code{display:block}
@@ -172,7 +170,7 @@
 #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
 #content #toc>:first-child{margin-top:0}
 #content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background:rgba(0,0,0,.8);padding:1.25em}
+#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
 #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
 #content{margin-bottom:.625em}
 .sect1{padding-bottom:.625em}
@@ -195,7 +193,7 @@
 .admonitionblock>table td.icon{text-align:center;width:80px}
 .admonitionblock>table td.icon img{max-width:none}
 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
 .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
 .exampleblock>.content>:first-child{margin-top:0}
@@ -205,7 +203,7 @@
 .sidebarblock>:last-child{margin-bottom:0}
 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
 .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
@@ -250,22 +248,21 @@
 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
-.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
-table.tableblock{max-width:100%;border-collapse:separate}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
 p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
-td.tableblock>.content>:last-child.sidebarblock{margin-bottom:0}
 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
-table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
-table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
-table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
-table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
-table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
-table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.grid-all>*>tr>*{border-width:1px}
+table.grid-cols>*>tr>*{border-width:0 1px}
+table.grid-rows>*>tr>*{border-width:1px 0}
 table.frame-all{border-width:1px}
+table.frame-ends{border-width:1px 0}
 table.frame-sides{border-width:0 1px}
-table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
+table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
+table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
+table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
 table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
 th.halign-left,td.halign-left{text-align:left}
 th.halign-right,td.halign-right{text-align:right}
@@ -274,7 +271,7 @@
 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
 th.valign-middle,td.valign-middle{vertical-align:middle}
 table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th{background:#f7f8f7}
 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
 p.tableblock>code:only-child{background:none;padding:0}
 p.tableblock{font-size:1em}
@@ -303,6 +300,7 @@
 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+td.hdlist2{word-wrap:anywhere}
 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
 .colist td:not([class]):first-child img{max-width:none}
@@ -375,7 +373,7 @@
 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
 .conum[data-value] *{color:#fff!important}
 .conum[data-value]+b{display:none}
 .conum[data-value]::after{content:attr(data-value)}
@@ -402,6 +400,7 @@
 svg{max-width:100%}
 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#header,#content,#footnotes,#footer{max-width:none}
 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
 body.book #header{text-align:center}
diff --git a/documentation/jetty-11/operations-guide/images/diag-0f37d1d5b12f280e1587df6f3d528998.png b/documentation/jetty-11/operations-guide/images/diag-0f37d1d5b12f280e1587df6f3d528998.png
new file mode 100644
index 0000000..cbaac46
--- /dev/null
+++ b/documentation/jetty-11/operations-guide/images/diag-0f37d1d5b12f280e1587df6f3d528998.png
Binary files differ
diff --git a/documentation/jetty-11/operations-guide/images/diag-176305f848d18dc8b0c4ef7bd331705d.png b/documentation/jetty-11/operations-guide/images/diag-176305f848d18dc8b0c4ef7bd331705d.png
new file mode 100644
index 0000000..c8cd925
--- /dev/null
+++ b/documentation/jetty-11/operations-guide/images/diag-176305f848d18dc8b0c4ef7bd331705d.png
Binary files differ
diff --git a/documentation/jetty-11/operations-guide/images/diag-2830e38460d606111888c5df2a645163.png b/documentation/jetty-11/operations-guide/images/diag-2830e38460d606111888c5df2a645163.png
new file mode 100644
index 0000000..4369313
--- /dev/null
+++ b/documentation/jetty-11/operations-guide/images/diag-2830e38460d606111888c5df2a645163.png
Binary files differ
diff --git a/documentation/jetty-11/operations-guide/images/diag-70817cc5c7137abc9759cdcd3edbb658.png b/documentation/jetty-11/operations-guide/images/diag-70817cc5c7137abc9759cdcd3edbb658.png
new file mode 100644
index 0000000..2f67b61
--- /dev/null
+++ b/documentation/jetty-11/operations-guide/images/diag-70817cc5c7137abc9759cdcd3edbb658.png
Binary files differ
diff --git a/documentation/jetty-11/operations-guide/images/diag-7387dfbb6f9fb9cfa951a697aca488a8.png b/documentation/jetty-11/operations-guide/images/diag-7387dfbb6f9fb9cfa951a697aca488a8.png
new file mode 100644
index 0000000..84c7c97
--- /dev/null
+++ b/documentation/jetty-11/operations-guide/images/diag-7387dfbb6f9fb9cfa951a697aca488a8.png
Binary files differ
diff --git a/documentation/jetty-11/operations-guide/images/diag-792f4cd700f2b5af8fedd7b0249d25b4.png b/documentation/jetty-11/operations-guide/images/diag-792f4cd700f2b5af8fedd7b0249d25b4.png
new file mode 100644
index 0000000..dba400e
--- /dev/null
+++ b/documentation/jetty-11/operations-guide/images/diag-792f4cd700f2b5af8fedd7b0249d25b4.png
Binary files differ
diff --git a/documentation/jetty-11/operations-guide/images/diag-8a7fb4bb9c84453a4bf01a24558e8026.png b/documentation/jetty-11/operations-guide/images/diag-8a7fb4bb9c84453a4bf01a24558e8026.png
new file mode 100644
index 0000000..37859ca
--- /dev/null
+++ b/documentation/jetty-11/operations-guide/images/diag-8a7fb4bb9c84453a4bf01a24558e8026.png
Binary files differ
diff --git a/documentation/jetty-11/operations-guide/images/diag-9f323b812fd1edc8217715ca0c2ba8e9.png b/documentation/jetty-11/operations-guide/images/diag-9f323b812fd1edc8217715ca0c2ba8e9.png
new file mode 100644
index 0000000..6f6202a
--- /dev/null
+++ b/documentation/jetty-11/operations-guide/images/diag-9f323b812fd1edc8217715ca0c2ba8e9.png
Binary files differ
diff --git a/documentation/jetty-11/operations-guide/images/diag-cb8a854642d32c964b17f0a090ef16e3.png b/documentation/jetty-11/operations-guide/images/diag-cb8a854642d32c964b17f0a090ef16e3.png
new file mode 100644
index 0000000..0bfa71e
--- /dev/null
+++ b/documentation/jetty-11/operations-guide/images/diag-cb8a854642d32c964b17f0a090ef16e3.png
Binary files differ
diff --git a/documentation/jetty-11/operations-guide/images/diag-e2488cc783b3434076c5a44ee7f19a2b.png b/documentation/jetty-11/operations-guide/images/diag-e2488cc783b3434076c5a44ee7f19a2b.png
new file mode 100644
index 0000000..c182024
--- /dev/null
+++ b/documentation/jetty-11/operations-guide/images/diag-e2488cc783b3434076c5a44ee7f19a2b.png
Binary files differ
diff --git a/documentation/jetty-11/operations-guide/images/jmc-server-dump.png b/documentation/jetty-11/operations-guide/images/jmc-server-dump.png
new file mode 100644
index 0000000..33cd929
--- /dev/null
+++ b/documentation/jetty-11/operations-guide/images/jmc-server-dump.png
Binary files differ
diff --git a/documentation/jetty-11/operations-guide/index.html b/documentation/jetty-11/operations-guide/index.html
index 15e37ed..03baed4 100644
--- a/documentation/jetty-11/operations-guide/index.html
+++ b/documentation/jetty-11/operations-guide/index.html
@@ -4,11 +4,12 @@
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 2.0.10">
+<meta name="generator" content="Asciidoctor 2.0.15">
 <title>Eclipse Jetty: Operations Guide</title>
 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
 <link rel="stylesheet" href="./asciidoctor.css">
 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+<link rel="stylesheet" href="./coderay-asciidoctor.css">
 <link rel="stylesheet" href="../styles.css">
 <link rel="stylesheet" href="../toc.css">
 <script src="../toc.js"></script>
@@ -19,8 +20,8 @@
 <div class="details">
 <span id="author" class="author">Jetty Developers</span><br>
 <span id="email" class="email"><a href="mailto:jetty-dev@eclipse.org">jetty-dev@eclipse.org</a></span><br>
-<span id="revnumber">version 11.0.6,</span>
-<span id="revdate">2021-06-29</span>
+<span id="revnumber">version 11.0.7,</span>
+<span id="revdate">2021-10-06</span>
 </div>
 <div id="toc" class="toc2">
 <div id="toctitle">Operations Guide</div>
@@ -114,7 +115,8 @@
 <li><a href="#og-modules-custom-create">Creating a New Module</a></li>
 </ul>
 </li>
-<li><a href="#og-modules-standard">Standard Modules</a>
+<li><a href="#og-modules-standard">Standard Modules</a></li>
+<li><a href="#og-module-alpn">Module <code>alpn</code></a>
 <ul class="sectlevel4">
 <li><a href="#og-module-bytebufferpool">Module <code>bytebufferpool</code></a></li>
 <li><a href="#og-module-deploy">Module <code>deploy</code></a></li>
@@ -128,6 +130,7 @@
 <li><a href="#og-module-http2c">Module <code>http2c</code></a></li>
 <li><a href="#og-module-http-forwarded">Module <code>http-forwarded</code></a></li>
 <li><a href="#og-module-https">Module <code>https</code></a></li>
+<li><a href="#og-module-jmx-remote">Module <code>jmx-remote</code></a></li>
 <li><a href="#og-module-server">Module <code>server</code></a>
 <ul class="sectlevel5">
 <li><a href="#og-module-server-http-config">HTTP Configuration Properties</a></li>
@@ -350,12 +353,12 @@
 </ul>
 </li>
 <li><a href="#og-jsp">Java Server Pages</a>
-<ul class="sectlevel4">
-<li><a href="#og-configuration-of-the-jsp-servlet">Configuration of the JSP servlet</a></li>
+<ul class="sectlevel3">
+<li><a href="#og-configuration-of-the-jsp-servlet">Configuration of the JSP Servlet</a></li>
 </ul>
 </li>
 <li><a href="#og-javaserver-pages-standard-tag-libraries">JavaServer Pages Standard Tag Libraries</a></li>
-<li><a href="#og-javaserver-faces-taglibs">JavaServer Faces Taglibs</a></li>
+<li><a href="#og-javaserver-faces-taglibs">JavaServer Faces TagLibs</a></li>
 <li><a href="#og-jndi">JNDI</a>
 <ul class="sectlevel3">
 <li><a href="#og-declaring-resources">Declaring resources</a>
@@ -395,6 +398,22 @@
 </li>
 </ul>
 </li>
+<li><a href="#og-jaspi">JASPI</a>
+<ul class="sectlevel3">
+<li><a href="#og-jaspi-configuration">Configuration</a>
+<ul class="sectlevel4">
+<li><a href="#og-jaspi-module">The <code>jaspi</code> module</a></li>
+<li><a href="#og-jaspi-xml">Configure JASPI</a>
+<ul class="sectlevel5">
+<li><a href="#og-jaspi-demo">JASPI Demo</a></li>
+</ul>
+</li>
+<li><a href="#og-integration-with-jetty-authentication-mechanisms">Integration with Jetty Authentication Mechanisms</a></li>
+<li><a href="#og-replacing-the-jetty-defaultauthconfigfactory">Replacing the Jetty DefaultAuthConfigFactory</a></li>
+</ul>
+</li>
+</ul>
+</li>
 <li><a href="#og-jmx">Eclipse Jetty Monitoring &amp; Management</a>
 <ul class="sectlevel3">
 <li><a href="#og-jmx-local">Enabling Local JMX Support</a></li>
@@ -554,7 +573,7 @@
 <div class="sect3">
 <h4 id="og-begin-install"><a class="anchor" href="#og-begin-install"></a><a class="link" href="#og-begin-install">Installing Jetty</a></h4>
 <div class="paragraph">
-<p>After the download, unpacking Eclipse Jetty will extract the files into a directory called <code>jetty-home-VERSION</code>, where <code>VERSION</code> is the version that you downloaded, for example <code>11.0.6</code>, so that the directory is called <code>jetty-home-11.0.6</code>.</p>
+<p>After the download, unpacking Eclipse Jetty will extract the files into a directory called <code>jetty-home-VERSION</code>, where <code>VERSION</code> is the version that you downloaded, for example <code>11.0.7</code>, so that the directory is called <code>jetty-home-11.0.7</code>.</p>
 </div>
 <div class="paragraph">
 <p>Unpack Eclipse Jetty compressed file in a convenient location, for example under <code>/opt</code>.</p>
@@ -675,9 +694,9 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 11:29:38.382:</strong>INFO :oejs.Server:main: jetty-11.0.6; built: 2021-06-29T16:16:33.537Z; git: 69469432898becda3aed32a32d4b0adbb7b6daee; jvm 11.0.9+11
-<strong>2021-06-29 11:29:38.455:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@298a5e20<mark>{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}</mark>
-<strong>2021-06-29 11:29:38.475:</strong>INFO :oejs.Server:main: Started Server@3059cbc{STARTING}[11.0.6,sto=5000] @1029ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 15:12:40.954:</strong>INFO :oejs.Server:main: jetty-11.0.7; built: 2021-10-06T19:59:39.004Z; git: 389a3587725d94cc2470ed06aa184c6e57fe9ce8; jvm 17+35
+<strong>2021-10-06 15:12:41.006:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@2fd05ff<mark>{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}</mark>
+<strong>2021-10-06 15:12:41.024:</strong>INFO :oejs.Server:main: Started Server@48524010{STARTING}[11.0.7,sto=5000] @836ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -763,9 +782,9 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 11:29:40.047:</strong>INFO :oejs.Server:main: jetty-11.0.6; built: 2021-06-29T16:16:33.537Z; git: 69469432898becda3aed32a32d4b0adbb7b6daee; jvm 11.0.9+11
-<strong>2021-06-29 11:29:40.115:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@298a5e20<mark>{HTTP/1.1, (http/1.1)}{0.0.0.0:9999}</mark>
-<strong>2021-06-29 11:29:40.141:</strong>INFO :oejs.Server:main: Started Server@3059cbc{STARTING}[11.0.6,sto=5000] @1142ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 15:12:42.262:</strong>INFO :oejs.Server:main: jetty-11.0.7; built: 2021-10-06T19:59:39.004Z; git: 389a3587725d94cc2470ed06aa184c6e57fe9ce8; jvm 17+35
+<strong>2021-10-06 15:12:42.312:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@4ddced80<mark>{HTTP/1.1, (http/1.1)}{0.0.0.0:9999}</mark>
+<strong>2021-10-06 15:12:42.328:</strong>INFO :oejs.Server:main: Started Server@48524010{STARTING}[11.0.7,sto=5000] @823ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -933,13 +952,13 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 11:29:43.493:</strong>INFO :oejs.Server:main: jetty-11.0.6; built: 2021-06-29T16:16:33.537Z; git: 69469432898becda3aed32a32d4b0adbb7b6daee; jvm 11.0.9+11
-<strong>2021-06-29 11:29:43.561:</strong>INFO :oejdp.ScanningAppProvider:main: Deployment monitor [file:///path/to/jetty.base/webapps/]
-<strong>2021-06-29 11:29:43.704:</strong>INFO :oejw.StandardDescriptorProcessor:main: NO JSP Support for /demo-simple, did not find org.eclipse.jetty.jsp.JettyJspServlet
-<strong>2021-06-29 11:29:43.720:</strong>INFO :oejss.DefaultSessionIdManager:main: Session workerName=node0
-<mark><strong>2021-06-29 11:29:43.769:</strong>INFO :oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@14a50707{Simple Web Application,/demo-simple,file:///path/to/jetty.base/work/jetty-0_0_0_0-8080-demo-simple_war-_demo-simple-any-/webapp/,AVAILABLE}{/path/to/jetty.base/webapps/demo-simple.war}</mark>
-<strong>2021-06-29 11:29:43.795:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@2ca15c06{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
-<strong>2021-06-29 11:29:43.817:</strong>INFO :oejs.Server:main: Started Server@7a5ceedd{STARTING}[11.0.6,sto=5000] @1364ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 15:12:45.077:</strong>INFO :oejs.Server:main: jetty-11.0.7; built: 2021-10-06T19:59:39.004Z; git: 389a3587725d94cc2470ed06aa184c6e57fe9ce8; jvm 17+35
+<strong>2021-10-06 15:12:45.129:</strong>INFO :oejdp.ScanningAppProvider:main: Deployment monitor [file:///path/to/jetty.base/webapps/]
+<strong>2021-10-06 15:12:45.255:</strong>INFO :oejw.StandardDescriptorProcessor:main: NO JSP Support for /demo-simple, did not find org.eclipse.jetty.jsp.JettyJspServlet
+<strong>2021-10-06 15:12:45.271:</strong>INFO :oejss.DefaultSessionIdManager:main: Session workerName=node0
+<mark><strong>2021-10-06 15:12:45.304:</strong>INFO :oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@610f7aa{Simple Web Application,/demo-simple,file:///path/to/jetty.base/work/jetty-0_0_0_0-8080-demo-simple_war-_demo-simple-any-/webapp/,AVAILABLE}{/path/to/jetty.base/webapps/demo-simple.war}</mark>
+<strong>2021-10-06 15:12:45.320:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@53fe15ff{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
+<strong>2021-10-06 15:12:45.334:</strong>INFO :oejs.Server:main: Started Server@10e31a9a{STARTING}[11.0.7,sto=5000] @1093ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -975,7 +994,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-cb8a854642d32c964b17f0a090ef16e3.png" alt="Diagram" width="450" height="440">
+<img src="images/diag-cb8a854642d32c964b17f0a090ef16e3.png" alt="Diagram" width="445" height="430">
 </div>
 </div>
 <div class="paragraph">
@@ -1552,11 +1571,25 @@
 <p>Since the module defines an <code>[exec]</code> section, it will fork <em>another</em> JVM when Jetty is started.</p>
 </div>
 <div class="paragraph">
-<p>This means that when you start Jetty, there will be <em>two</em> JVMs running: one spawned by you when you run <code>java -jar $JETTY_HOME/start.jar</code>, and another spawned by the Jetty start mechanism with the JVM options you specified (that cannot be applied to an already running JVM).</p>
+<p>This means that when you start Jetty, there will be <em>two</em> JVMs running: one created by you when you run <code>java -jar $JETTY_HOME/start.jar</code>, and another forked by the Jetty start mechanism with the JVM options you specified (that cannot be applied to an already running JVM).</p>
 </div>
 <div class="paragraph">
 <p>Again, you can <a href="#og-start-configure-dry-run">display the JVM command line</a> to verify that it is correct.</p>
 </div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The second JVM forked by the Jetty start mechanism when one of the modules requires forking, for example a module that contains an <code>[exec]</code> section, may not be desirable, and may be avoided as explained in <a href="#og-start-configure-dry-run">this section</a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
 </div>
 <div class="sect4">
 <h5 id="og-start-configure-display"><a class="anchor" href="#og-start-configure-display"></a><a class="link" href="#og-start-configure-display">Displaying the Configuration</a></h5>
@@ -1593,22 +1626,22 @@
 Java Environment:
 -----------------
  java.home = /path/to/java.home (null)
- java.vm.vendor = AdoptOpenJDK (null)
- java.vm.version = 11.0.9+11 (null)
+ java.vm.vendor = Eclipse Adoptium (null)
+ java.vm.version = 17+35 (null)
  java.vm.name = OpenJDK 64-Bit Server VM (null)
- java.vm.info = mixed mode (null)
+ java.vm.info = mixed mode, sharing (null)
  java.runtime.name = OpenJDK Runtime Environment (null)
- java.runtime.version = 11.0.9+11 (null)
+ java.runtime.version = 17+35 (null)
  java.io.tmpdir = /path/to/jetty.base/work (null)
  user.dir = /path/to/jetty.base (null)
  user.language = en (null)
  user.country = US (null)
 
 Jetty Environment:
------------------
- jetty.version = 11.0.6
- jetty.tag.version = jetty-11.0.6
- jetty.build = 69469432898becda3aed32a32d4b0adbb7b6daee
+------------------
+ jetty.version = 11.0.7
+ jetty.tag.version = jetty-11.0.7
+ jetty.build = 389a3587725d94cc2470ed06aa184c6e57fe9ce8
  jetty.home = /path/to/jetty.home
  jetty.base = /path/to/jetty.base
 
@@ -1618,8 +1651,8 @@
  ${jetty.base} -&gt; /path/to/jetty.base
  ${jetty.home} -&gt; /path/to/jetty.home
 
-JVM Arguments:
---------------
+Forked JVM Arguments:
+---------------------
  -Xmx1g
  -Xlog:gc*,gc+stats=off:file=logs/gc.log:time,level,tags
 
@@ -1629,11 +1662,11 @@
 
 Properties:
 -----------
- java.version = 11.0.9
- java.version.major = 11
- java.version.micro = 9
+ java.version = 17
+ java.version.major = 17
+ java.version.micro = 0
  java.version.minor = 0
- java.version.platform = 11
+ java.version.platform = 17
  jetty.base = /path/to/jetty.base
  jetty.base.uri = file:///path/to/jetty.base
  jetty.home = /path/to/jetty.home
@@ -1641,7 +1674,7 @@
  jetty.webapp.addServerClasses = org.eclipse.jetty.logging.,${jetty.home.uri}/lib/logging/,org.slf4j.
  postgresql-version = 42.2.18
  runtime.feature.alpn = true
- slf4j.version = 2.0.0-alpha1
+ slf4j.version = 2.0.0-alpha5
 
 Jetty Server Classpath:
 -----------------------
@@ -1649,14 +1682,14 @@
 Note: order presented here is how they would appear on the classpath.
       changes to the --module=name command line options will be reflected here.
  0:                    (dir) | ${jetty.base}/resources
- 1:             2.0.0-alpha1 | ${jetty.home}/lib/logging/slf4j-api-2.0.0-alpha1.jar
- 2:                   11.0.6 | ${jetty.home}/lib/logging/jetty-slf4j-impl-11.0.6.jar
+ 1:             2.0.0-alpha5 | ${jetty.home}/lib/logging/slf4j-api-2.0.0-alpha5.jar
+ 2:                   11.0.7 | ${jetty.home}/lib/logging/jetty-slf4j-impl-11.0.7.jar
  3:                    5.0.2 | ${jetty.home}/lib/jetty-jakarta-servlet-api-5.0.2.jar
- 4:                   11.0.6 | ${jetty.home}/lib/jetty-http-11.0.6.jar
- 5:                   11.0.6 | ${jetty.home}/lib/jetty-server-11.0.6.jar
- 6:                   11.0.6 | ${jetty.home}/lib/jetty-xml-11.0.6.jar
- 7:                   11.0.6 | ${jetty.home}/lib/jetty-util-11.0.6.jar
- 8:                   11.0.6 | ${jetty.home}/lib/jetty-io-11.0.6.jar
+ 4:                   11.0.7 | ${jetty.home}/lib/jetty-http-11.0.7.jar
+ 5:                   11.0.7 | ${jetty.home}/lib/jetty-server-11.0.7.jar
+ 6:                   11.0.7 | ${jetty.home}/lib/jetty-xml-11.0.7.jar
+ 7:                   11.0.7 | ${jetty.home}/lib/jetty-util-11.0.7.jar
+ 8:                   11.0.7 | ${jetty.home}/lib/jetty-io-11.0.7.jar
  9:                  42.2.18 | ${jetty.base}/lib/postgresql-42.2.18.jar
 
 Jetty Active XMLs:
@@ -1664,8 +1697,7 @@
  ${jetty.home}/etc/jetty-bytebufferpool.xml
  ${jetty.home}/etc/jetty-threadpool.xml
  ${jetty.home}/etc/jetty.xml
- ${jetty.home}/etc/jetty-http.xml
- ${jetty.home}/etc/jetty-halt.xml</code></pre>
+ ${jetty.home}/etc/jetty-http.xml</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1705,8 +1737,68 @@
 <div class="paragraph">
 <p>To start Jetty without forking a second JVM, the <code>--dry-run</code> option can be used to generate a command line that is then executed so that starting Jetty only spawns one JVM.</p>
 </div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+You can use the <code>--dry-run</code> option as explained below to avoid forking a second JVM when using modules that have the <code>[exec]</code> section, or the <code>--exec</code> option, or when using the <code>--jpms</code> option.
+</td>
+</tr>
+</table>
+</div>
 <div class="paragraph">
-<p>The <code>--dry-run</code> option is quite flexible and below you can find a few examples of how to use it to generate scripts or to create an arguments file that can be passed to the <code>java</code> executable.</p>
+<p>For example, using the <code>--dry-run</code> option with the <code>jvm.mod</code> introduced in <a href="#og-start-configure-custom-module-exec">this section</a> produces the following command line:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ java -jar $JETTY_HOME/start.jar --dry-run</pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight nowrap"><code>/path/to/java.home/bin/java \
+-Djava.io.tmpdir=/path/to/jetty.base/work \
+-Djetty.home=/path/to/jetty.home \
+-Djetty.base=/path/to/jetty.base \
+-Xmx1g \
+-Xlog:gc*,gc+stats=off:file=logs/gc.log:time,level,tags \
+--class-path \
+/path/to/jetty.base/resources:/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha5.jar:/path/to/jetty.home/lib/logging/jetty-slf4j-impl-11.0.7.jar:/path/to/jetty.home/lib/jetty-jakarta-servlet-api-5.0.2.jar:/path/to/jetty.home/lib/jetty-http-11.0.7.jar:/path/to/jetty.home/lib/jetty-server-11.0.7.jar:/path/to/jetty.home/lib/jetty-xml-11.0.7.jar:/path/to/jetty.home/lib/jetty-util-11.0.7.jar:/path/to/jetty.home/lib/jetty-io-11.0.7.jar \
+org.eclipse.jetty.xml.XmlConfiguration \
+java.version=17 \
+java.version.major=17 \
+java.version.micro=0 \
+java.version.minor=0 \
+java.version.platform=17 \
+jetty.base=/path/to/jetty.base \
+jetty.base.uri=file:///path/to/jetty.base \
+jetty.home=/path/to/jetty.home \
+jetty.home.uri=file:///path/to/jetty.home \
+jetty.webapp.addServerClasses=org.eclipse.jetty.logging.,${jetty.home.uri}/lib/logging/,org.slf4j. \
+runtime.feature.alpn=true \
+slf4j.version=2.0.0-alpha5 \
+/path/to/jetty.home/etc/jetty-bytebufferpool.xml \
+/path/to/jetty.home/etc/jetty-threadpool.xml \
+/path/to/jetty.home/etc/jetty.xml \
+/path/to/jetty.home/etc/jetty-http.xml</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can then run the generated command line.</p>
+</div>
+<div class="paragraph">
+<p>For example, in the Linux <code>bash</code> shell you can run it by wrapping it into <code>$(...)</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ $(java -jar $JETTY_HOME/start.jar --dry-run)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The <code>--dry-run</code> option is quite flexible and below you can find a few examples of how to use it to avoid forking a second JVM, or generating scripts or creating an arguments file that can be passed to (a possibly alternative) <code>java</code> executable.</p>
 </div>
 <div class="paragraph">
 <p>To display the <code>java</code> executable used to start Jetty:</p>
@@ -1750,14 +1842,14 @@
 <div class="content">
 <pre class="CodeRay highlight nowrap"><code>--class-path \
 /path/to/jetty.base/resources:\
-/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha1.jar:\
-/path/to/jetty.home/lib/logging/jetty-slf4j-impl-11.0.6.jar:\
+/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha5.jar:\
+/path/to/jetty.home/lib/logging/jetty-slf4j-impl-11.0.7.jar:\
 /path/to/jetty.home/lib/jetty-jakarta-servlet-api-5.0.2.jar:\
-/path/to/jetty.home/lib/jetty-http-11.0.6.jar:\
-/path/to/jetty.home/lib/jetty-server-11.0.6.jar:\
-/path/to/jetty.home/lib/jetty-xml-11.0.6.jar:\
-/path/to/jetty.home/lib/jetty-util-11.0.6.jar:\
-/path/to/jetty.home/lib/jetty-io-11.0.6.jar</code></pre>
+/path/to/jetty.home/lib/jetty-http-11.0.7.jar:\
+/path/to/jetty.home/lib/jetty-server-11.0.7.jar:\
+/path/to/jetty.home/lib/jetty-xml-11.0.7.jar:\
+/path/to/jetty.home/lib/jetty-util-11.0.7.jar:\
+/path/to/jetty.home/lib/jetty-io-11.0.7.jar</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1771,14 +1863,14 @@
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight nowrap"><code>--module-path \
-/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha1.jar:\
-/path/to/jetty.home/lib/logging/jetty-slf4j-impl-11.0.6.jar:\
+/path/to/jetty.home/lib/logging/slf4j-api-2.0.0-alpha5.jar:\
+/path/to/jetty.home/lib/logging/jetty-slf4j-impl-11.0.7.jar:\
 /path/to/jetty.home/lib/jetty-jakarta-servlet-api-5.0.2.jar:\
-/path/to/jetty.home/lib/jetty-http-11.0.6.jar:\
-/path/to/jetty.home/lib/jetty-server-11.0.6.jar:\
-/path/to/jetty.home/lib/jetty-xml-11.0.6.jar:\
-/path/to/jetty.home/lib/jetty-util-11.0.6.jar:\
-/path/to/jetty.home/lib/jetty-io-11.0.6.jar \
+/path/to/jetty.home/lib/jetty-http-11.0.7.jar:\
+/path/to/jetty.home/lib/jetty-server-11.0.7.jar:\
+/path/to/jetty.home/lib/jetty-xml-11.0.7.jar:\
+/path/to/jetty.home/lib/jetty-util-11.0.7.jar:\
+/path/to/jetty.home/lib/jetty-io-11.0.7.jar \
 --class-path \
 /path/to/jetty.base/resources \
 --add-modules \
@@ -1825,23 +1917,22 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code>java.version=11.0.9 \
-java.version.major=11 \
-java.version.micro=9 \
+<pre class="CodeRay highlight nowrap"><code>java.version=17 \
+java.version.major=17 \
+java.version.micro=0 \
 java.version.minor=0 \
-java.version.platform=11 \
+java.version.platform=17 \
 jetty.base=/path/to/jetty.base \
 jetty.base.uri=file:///path/to/jetty.base \
 jetty.home=/path/to/jetty.home \
 jetty.home.uri=file:///path/to/jetty.home \
 jetty.webapp.addServerClasses=org.eclipse.jetty.logging.,${jetty.home.uri}/lib/logging/,org.slf4j. \
 runtime.feature.alpn=true \
-slf4j.version=2.0.0-alpha1 \
+slf4j.version=2.0.0-alpha5 \
 /path/to/jetty.home/etc/jetty-bytebufferpool.xml \
 /path/to/jetty.home/etc/jetty-threadpool.xml \
 /path/to/jetty.home/etc/jetty.xml \
-/path/to/jetty.home/etc/jetty-http.xml \
-/path/to/jetty.home/etc/jetty-halt.xml</code></pre>
+/path/to/jetty.home/etc/jetty-http.xml</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1857,7 +1948,15 @@
 </div>
 </div>
 <div class="paragraph">
-<p>Alternatively, they can be combined in a shell script:</p>
+<p>Using <code>--dry-run=opts,path,main,args</code> can be used to avoid that the Jetty start mechanism forks a second JVM when using modules that require forking:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ java $(java -jar $JETTY_HOME/start.jar --dry-run=opts,path,main,args)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The output of different <code>--dry-run</code> executions can be creatively combined in a shell script:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1905,7 +2004,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-0f37d1d5b12f280e1587df6f3d528998.png" alt="Diagram" width="363" height="259">
+<img src="images/diag-0f37d1d5b12f280e1587df6f3d528998.png" alt="Diagram" width="351" height="245">
 </div>
 </div>
 <div class="paragraph">
@@ -1918,7 +2017,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-176305f848d18dc8b0c4ef7bd331705d.png" alt="Diagram" width="381" height="281">
+<img src="images/diag-176305f848d18dc8b0c4ef7bd331705d.png" alt="Diagram" width="374" height="267">
 </div>
 </div>
 <div class="paragraph">
@@ -2160,10 +2259,10 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><mark>STOP.KEY=1m7p52kcextz4</mark>
-<strong>2021-06-29 11:30:01.527:</strong>INFO :oejs.Server:main: jetty-11.0.6; built: 2021-06-29T16:16:33.537Z; git: 69469432898becda3aed32a32d4b0adbb7b6daee; jvm 11.0.9+11
-<strong>2021-06-29 11:30:01.592:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@2cf3d63b{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
-<strong>2021-06-29 11:30:01.612:</strong>INFO :oejs.Server:main: Started Server@73700b80{STARTING}[11.0.6,sto=5000] @1058ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><mark>STOP.KEY=1wgxtdywsum80</mark>
+<strong>2021-10-06 15:13:01.027:</strong>INFO :oejs.Server:main: jetty-11.0.7; built: 2021-10-06T19:59:39.004Z; git: 389a3587725d94cc2470ed06aa184c6e57fe9ce8; jvm 17+35
+<strong>2021-10-06 15:13:01.072:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@bef2d72{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
+<strong>2021-10-06 15:13:01.084:</strong>INFO :oejs.Server:main: Started Server@6295d394{STARTING}[11.0.7,sto=5000] @864ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -3049,6 +3148,9 @@
 <p>This is necessary because JVM options such as <code>-Xmx</code> (that specifies the max JVM heap size) cannot be changed in a running JVM.
 For an example, see <a href="#og-start-configure-custom-module-exec">this section</a>.</p>
 </div>
+<div class="paragraph">
+<p>You can avoid that the Jetty start mechanism forks the second JVM, as explained in <a href="#og-start-configure-dry-run">this section</a>.</p>
+</div>
 </div>
 <div class="sect4">
 <h5 id="og-modules-directive-jpms"><a class="anchor" href="#og-modules-directive-jpms"></a><a class="link" href="#og-modules-directive-jpms">[jpms]</a></h5>
@@ -3380,7 +3482,7 @@
 This custom auditing component should measure the HTTP request processing times and record them (how they are recorded is irrelevant here&#8201;&#8212;&#8201;could be in a local log file or sent via network to an external service).</p>
 </div>
 <div class="paragraph">
-<p>The Jetty libraries already provide a way to measure HTTP request processing times via <a href="../programming-guide/index.html#pg-server-http-channel-events"><code>HttpChannel</code> events</a>: you write a custom component that implements the <code>HttpChannel.Listener</code> interface and add it as a bean to the <code>ServerConnector</code> that receives the HTTP requests.</p>
+<p>The Jetty libraries already provide a way to measure HTTP request processing times via <a href="../programming-guide/index.html#pg-server-http-channel-events"><code>HttpChannel</code> events</a>: you write a custom component that implements the <code>HttpChannel.Listener</code> interface and add it as a bean to the server <code>Connector</code> that receives the HTTP requests.</p>
 </div>
 <div class="paragraph">
 <p>The steps to create a Jetty module are similar to those necessary to <a href="#og-modules-custom-modify">modify an existing module</a>:</p>
@@ -3541,6 +3643,30 @@
 </div>
 <div class="sect3">
 <h4 id="og-modules-standard"><a class="anchor" href="#og-modules-standard"></a><a class="link" href="#og-modules-standard">Standard Modules</a></h4>
+
+</div>
+<div class="sect3">
+<h4 id="og-module-alpn"><a class="anchor" href="#og-module-alpn"></a><a class="link" href="#og-module-alpn">Module <code>alpn</code></a></h4>
+<div class="paragraph">
+<p>The <code>alpn</code> module enables support for the ALPN negotiation mechanism of the TLS protocol.</p>
+</div>
+<div class="paragraph">
+<p>You can configure the list of application protocols negotiated by the ALPN mechanism, as well as the default protocol to use if the ALPN negotiation fails (for example, the client does not support ALPN).</p>
+</div>
+<div class="paragraph">
+<p>The module properties are:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>## Specifies the ordered list of application protocols supported by the server.
+## The default list is specified by the list of the protocol modules that have
+## been enabled, and the order is specified by the module dependencies.
+# jetty.alpn.protocols=h2,http/1.1
+
+## Specifies the protocol to use when the ALPN negotiation fails.
+# jetty.alpn.defaultProtocol=http/1.1</pre>
+</div>
+</div>
 <div class="sect4">
 <h5 id="og-module-bytebufferpool"><a class="anchor" href="#og-module-bytebufferpool"></a><a class="link" href="#og-module-bytebufferpool">Module <code>bytebufferpool</code></a></h5>
 <div class="paragraph">
@@ -3710,6 +3836,9 @@
 ## Whether to enable the SO_REUSEADDR socket option.
 # jetty.http.reuseAddress=true
 
+## Whether to enable the SO_REUSEPORT socket option.
+# jetty.http.reusePort=false
+
 ## Whether to enable the TCP_NODELAY socket option on accepted sockets.
 # jetty.http.acceptedTcpNoDelay=true
 
@@ -3815,7 +3944,7 @@
 
 ## Specifies the maximum number of bad frames and pings per second,
 ## after which a session is closed to avoid denial of service attacks.
-# jetty.http2.rateControl.maxEventsPerSecond=20</pre>
+# jetty.http2.rateControl.maxEventsPerSecond=50</pre>
 </div>
 </div>
 <div class="paragraph">
@@ -3842,18 +3971,18 @@
 <pre>## Specifies the maximum number of concurrent requests per session.
 # jetty.http2c.maxConcurrentStreams=128
 
-  ## Specifies the initial stream receive window (client to server) in bytes.
+## Specifies the initial stream receive window (client to server) in bytes.
 # jetty.http2c.initialStreamRecvWindow=524288
 
 ## Specifies the initial session receive window (client to server) in bytes.
-# jetty.http2.initialSessionRecvWindow=1232896
+# jetty.http2c.initialSessionRecvWindow=1232896
 
 ## Specifies the maximum number of keys in all SETTINGS frames received by a session.
-# jetty.http2.maxSettingsKeys=64
+# jetty.http2c.maxSettingsKeys=64
 
 ## Specifies the maximum number of bad frames and pings per second,
 ## after which a session is closed to avoid denial of service attacks.
-# jetty.http2.rateControl.maxEventsPerSecond=20</pre>
+# jetty.http2c.rateControl.maxEventsPerSecond=50</pre>
 </div>
 </div>
 <div class="paragraph">
@@ -3955,6 +4084,55 @@
 </div>
 </div>
 <div class="sect4">
+<h5 id="og-module-jmx-remote"><a class="anchor" href="#og-module-jmx-remote"></a><a class="link" href="#og-module-jmx-remote">Module <code>jmx-remote</code></a></h5>
+<div class="paragraph">
+<p>The <code>jmx-remote</code> module provides remote access to JMX clients.</p>
+</div>
+<div class="paragraph">
+<p>The module properties to configure remote JMX connector are:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>## The host/address to bind the RMI server to.
+# jetty.jmxremote.rmiserverhost=localhost
+
+## The port the RMI server listens to (0 means a random port is chosen).
+# jetty.jmxremote.rmiserverport=1099
+
+## The host/address to bind the RMI registry to.
+# jetty.jmxremote.rmiregistryhost=localhost
+
+## The port the RMI registry listens to.
+# jetty.jmxremote.rmiregistryport=1099
+
+## The host name exported in the RMI stub.
+-Djava.rmi.server.hostname=localhost</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The system property <code>java.rmi.server.hostname</code> is specified with the usual notation, prepending a <code>-D</code> in front of the system property name.</p>
+</div>
+<div class="paragraph">
+<p>The system property <code>java.rmi.server.hostname</code> is uncommented because it is necessary in the default configuration&#8201;&#8212;&#8201;most systems do not have the local name resolution configured properly for remote access.</p>
+</div>
+<div class="paragraph">
+<p>As an example, in a Linux machine named <code>beryl</code>, the <code>/etc/hosts</code> file may contain these entries:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>127.0.0.1 localhost
+127.0.1.1 beryl</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If the system property <code>java.rmi.server.hostname</code> is not specified, the RMI implementation uses the host name <code>beryl</code> to figure out the IP address to store in the RMI stub, in this case <code>127.0.1.1</code>.
+However, we the RMI server is configured to bind to <code>localhost</code>, i.e. <code>127.0.0.1</code>.</p>
+</div>
+<div class="paragraph">
+<p>If the system property <code>java.rmi.server.hostname</code> is not specified, the RMI client will try to connect to <code>127.0.1.1</code> (because that&#8217;s what in the RMI stub) and fail because nothing is listening on that address.</p>
+</div>
+</div>
+<div class="sect4">
 <h5 id="og-module-server"><a class="anchor" href="#og-module-server"></a><a class="link" href="#og-module-server">Module <code>server</code></a></h5>
 <div class="paragraph">
 <p>The <code>server</code> module provides generic server support, and configures generic HTTP properties that apply to all HTTP protocols, the scheduler properties and the server specific properties.</p>
@@ -4048,7 +4226,7 @@
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="screen">HTTP/1.1 200 OK
 Content-Length: 0
-Server: Jetty(11.0.6)</code></pre>
+Server: Jetty(11.0.7)</code></pre>
 </div>
 </div>
 </dd>
@@ -4140,7 +4318,7 @@
 <p>A comma-separated list of violations to allow or forbid, as specified by the <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/http/HttpCompliance.html#from(java.lang.String)"><code>HttpCompliance.from(String)</code></a> method.
 For example, <code>jetty.httpConfig.compliance=RFC7230,MULTIPLE_CONTENT_LENGTHS</code> means that the HTTP compliance is that defined by <code>RFC7230</code>, but also allows the <code>HttpCompliance.Violation.MULTIPLE_CONTENT_LENGTHS</code>, so that requests that have multiple <code>Content-Length</code> headers are accepted (they would be rejected when using just <code>HttpCompliance.RFC7230</code>).</p>
 <div class="paragraph">
-<p>For more information about <code>HttpCompliance</code> see also <a href="#pg-server-compliance-http">this section</a>.</p>
+<p>For more information about <code>HttpCompliance</code> see also <a href="../programming-guide/index.html#pg-server-compliance-http">this section</a>.</p>
 </div>
 </li>
 </ul>
@@ -4160,7 +4338,7 @@
 <p>A comma-separated list of violations to allow or forbid, as specified by the <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/http/UriCompliance.html#from(java.lang.String)"><code>UriCompliance.from(String)</code></a> method.
 For example, <code>jetty.httpConfig.uriCompliance=RFC3986,-AMBIGUOUS_PATH_SEPARATOR</code> means that the URI compliance is that defined by <code>RFC3986</code>, but also does not allow the <code>UriCompliance.Violation.AMBIGUOUS_PATH_SEPARATOR</code>, so that requests that have URIs such as <code>/foo/bar%2Fbaz</code> (where <code>%2F</code> is the URL-encoded <code>/</code> character) are rejected (they would be accepted when using just <code>UriCompliance.RFC3986</code>).</p>
 <div class="paragraph">
-<p>For more information about <code>UriCompliance</code> see also <a href="#pg-server-compliance-uri">this section</a>.</p>
+<p>For more information about <code>UriCompliance</code> see also <a href="../programming-guide/index.html#pg-server-compliance-uri">this section</a>.</p>
 </div>
 </li>
 </ul>
@@ -4181,7 +4359,7 @@
 <p>A comma-separated list of violations to allow or forbid, as specified by the <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/http/CookieCompliance.html#from(java.lang.String)"><code>CookieCompliance.from(String)</code></a> method.
 For example, <code>jetty.httpConfig.requestCookieCompliance=RFC6265,-RESERVED_NAMES_NOT_DOLLAR_PREFIXED</code> means that the cookie compliance is that defined by <code>RFC6265</code>, but also does not allow the <code>CookieCompliance.Violation.RESERVED_NAMES_NOT_DOLLAR_PREFIXED</code>, so that requests that have cookie headers such as <code>Cookie: $foo=bar</code> are rejected (they would be accepted when using just <code>CookieCompliance.RFC6265</code>).</p>
 <div class="paragraph">
-<p>For more information about <code>CookieCompliance</code> see also <a href="#pg-server-compliance-cookie">this section</a>.</p>
+<p>For more information about <code>CookieCompliance</code> see also <a href="../programming-guide/index.html#pg-server-compliance-cookie">this section</a>.</p>
 </div>
 </li>
 </ul>
@@ -4248,6 +4426,9 @@
 ## Whether to enable the SO_REUSEADDR socket option.
 # jetty.ssl.reuseAddress=true
 
+## Whether to enable the SO_REUSEPORT socket option.
+# jetty.ssl.reusePort=false
+
 ## Whether to enable the TCP_NODELAY socket option on accepted sockets.
 # jetty.ssl.acceptedTcpNoDelay=true
 
@@ -4859,8 +5040,8 @@
 </dd>
 <dt class="hdlist1"><code>@ConnectorName</code></dt>
 <dd>
-<p>A Jetty <code>ServerConnector</code> name to indicate that a web application should handle requests received on the <code>ServerConnector</code> with that name, and therefore received on a specific IP port.
-A <code>ServerConnector</code> name can be set via <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/AbstractConnector.html#setName(java.lang.String)" class="bare">https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/AbstractConnector.html#setName(java.lang.String)</a>.</p>
+<p>A Jetty server <code>Connector</code> name to indicate that a web application should handle requests received on the server <code>Connector</code> with that name, and therefore received on a specific socket address (either an IP port for <code>ServerConnector</code>, or a Unix-Domain path for <code>UnixDomainServerConnector</code>).
+A server <code>Connector</code> name can be set via <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/AbstractConnector.html#setName(java.lang.String)" class="bare">https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/AbstractConnector.html#setName(java.lang.String)</a>.</p>
 </dd>
 <dt class="hdlist1"><code>www.√integral.com</code></dt>
 <dd>
@@ -4983,7 +5164,7 @@
 <div class="sect4">
 <h5 id="og-deploy-virtual-hosts-port"><a class="anchor" href="#og-deploy-virtual-hosts-port"></a><a class="link" href="#og-deploy-virtual-hosts-port">Different Port, Different Web Application</a></h5>
 <div class="paragraph">
-<p>Sometimes it is required to serve different web applications from different IP ports, and therefore from different <code>ServerConnector</code>s.</p>
+<p>Sometimes it is required to serve different web applications from different socket addresses (either different IP ports, or different Unix-Domain paths), and therefore from different server <code>Connector</code>s.</p>
 </div>
 <div class="paragraph">
 <p>For example, you want requests to <code>http://localhost:8080/</code> to be served by one web application, but requests to <code>http://localhost:9090/</code> to be served by another web application.</p>
@@ -5347,11 +5528,11 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 11:30:06.511:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
-<strong>2021-06-29 11:30:07.394:</strong>INFO :oejs.Server:main: jetty-11.0.6; built: 2021-06-29T16:16:33.537Z; git: 69469432898becda3aed32a32d4b0adbb7b6daee; jvm 11.0.9+11
-<strong>2021-06-29 11:30:07.609:</strong>INFO :oejus.SslContextFactory:main: x509=X509@7f36662c(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@1817f1eb[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
-<strong>2021-06-29 11:30:07.755:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@7bb6ab3a<mark>{SSL, (ssl, http/1.1)}{0.0.0.0:8443}</mark>
-<strong>2021-06-29 11:30:07.778:</strong>INFO :oejs.Server:main: Started Server@53dbe163{STARTING}[11.0.6,sto=5000] @2598ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 15:13:05.188:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
+<strong>2021-10-06 15:13:05.876:</strong>INFO :oejs.Server:main: jetty-11.0.7; built: 2021-10-06T19:59:39.004Z; git: 389a3587725d94cc2470ed06aa184c6e57fe9ce8; jvm 17+35
+<strong>2021-10-06 15:13:06.001:</strong>INFO :oejus.SslContextFactory:main: x509=X509@7975d1d8(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@24105dc5[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
+<strong>2021-10-06 15:13:06.110:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@5c45d770<mark>{SSL, (ssl, http/1.1)}{0.0.0.0:8443}</mark>
+<strong>2021-10-06 15:13:06.125:</strong>INFO :oejs.Server:main: Started Server@72c8e7b{STARTING}[11.0.7,sto=5000] @2035ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -5406,7 +5587,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-e2488cc783b3434076c5a44ee7f19a2b.png" alt="Diagram" width="384" height="423">
+<img src="images/diag-e2488cc783b3434076c5a44ee7f19a2b.png" alt="Diagram" width="376" height="420">
 </div>
 </div>
 <div class="paragraph">
@@ -5414,7 +5595,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-8a7fb4bb9c84453a4bf01a24558e8026.png" alt="Diagram" width="421" height="423">
+<img src="images/diag-8a7fb4bb9c84453a4bf01a24558e8026.png" alt="Diagram" width="413" height="420">
 </div>
 </div>
 <div class="paragraph">
@@ -5432,7 +5613,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-7387dfbb6f9fb9cfa951a697aca488a8.png" alt="Diagram" width="140" height="290">
+<img src="images/diag-7387dfbb6f9fb9cfa951a697aca488a8.png" alt="Diagram" width="135" height="284">
 </div>
 </div>
 <div class="paragraph">
@@ -5440,7 +5621,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-70817cc5c7137abc9759cdcd3edbb658.png" alt="Diagram" width="225" height="403">
+<img src="images/diag-70817cc5c7137abc9759cdcd3edbb658.png" alt="Diagram" width="219" height="397">
 </div>
 </div>
 <div class="paragraph">
@@ -5448,7 +5629,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-2830e38460d606111888c5df2a645163.png" alt="Diagram" width="336" height="629">
+<img src="images/diag-2830e38460d606111888c5df2a645163.png" alt="Diagram" width="332" height="623">
 </div>
 </div>
 </div>
@@ -5502,11 +5683,11 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 11:30:10.899:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
-<strong>2021-06-29 11:30:11.630:</strong>INFO :oejs.Server:main: jetty-11.0.6; built: 2021-06-29T16:16:33.537Z; git: 69469432898becda3aed32a32d4b0adbb7b6daee; jvm 11.0.9+11
-<strong>2021-06-29 11:30:11.852:</strong>INFO :oejus.SslContextFactory:main: x509=X509@60975100(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@3b0c9195[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
-<strong>2021-06-29 11:30:11.992:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@4d18aa28<mark>{SSL, (ssl, alpn, h2, http/1.1)}{0.0.0.0:8443}</mark>
-<strong>2021-06-29 11:30:12.010:</strong>INFO :oejs.Server:main: Started Server@614df0a4{STARTING}[11.0.6,sto=5000] @2441ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 15:13:08.734:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
+<strong>2021-10-06 15:13:09.725:</strong>INFO :oejs.Server:main: jetty-11.0.7; built: 2021-10-06T19:59:39.004Z; git: 389a3587725d94cc2470ed06aa184c6e57fe9ce8; jvm 17+35
+<strong>2021-10-06 15:13:09.843:</strong>INFO :oejus.SslContextFactory:main: x509=X509@7bf3a5d8(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@39b43d60[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
+<strong>2021-10-06 15:13:09.955:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@17d88132<mark>{SSL, (ssl, alpn, h2, http/1.1)}{0.0.0.0:8443}</mark>
+<strong>2021-10-06 15:13:09.971:</strong>INFO :oejs.Server:main: Started Server@730d2164{STARTING}[11.0.7,sto=5000] @2372ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -5558,9 +5739,9 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 11:30:14.002:</strong>INFO :oejs.Server:main: jetty-11.0.6; built: 2021-06-29T16:16:33.537Z; git: 69469432898becda3aed32a32d4b0adbb7b6daee; jvm 11.0.9+11
-<strong>2021-06-29 11:30:14.072:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@6a2accf7<mark>{HTTP/1.1, (http/1.1, h2c)}{0.0.0.0:8080}</mark>
-<strong>2021-06-29 11:30:14.098:</strong>INFO :oejs.Server:main: Started Server@36916eb0{STARTING}[11.0.6,sto=5000] @1060ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 15:13:11.625:</strong>INFO :oejs.Server:main: jetty-11.0.7; built: 2021-10-06T19:59:39.004Z; git: 389a3587725d94cc2470ed06aa184c6e57fe9ce8; jvm 17+35
+<strong>2021-10-06 15:13:11.675:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@40e233c3<mark>{HTTP/1.1, (http/1.1, h2c)}{0.0.0.0:8080}</mark>
+<strong>2021-10-06 15:13:11.688:</strong>INFO :oejs.Server:main: Started Server@45b9a632{STARTING}[11.0.7,sto=5000] @861ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -6108,7 +6289,7 @@
 </div>
 <div class="imageblock">
 <div class="content">
-<img src="diag-9f323b812fd1edc8217715ca0c2ba8e9.png" alt="Diagram" width="253" height="414">
+<img src="images/diag-9f323b812fd1edc8217715ca0c2ba8e9.png" alt="Diagram" width="247" height="405">
 </div>
 </div>
 <div class="admonitionblock warning">
@@ -6263,9 +6444,9 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 11:30:18.245:</strong>INFO :oejs.Server:main: jetty-11.0.6; built: 2021-06-29T16:16:33.537Z; git: 69469432898becda3aed32a32d4b0adbb7b6daee; jvm 11.0.9+11
-<strong>2021-06-29 11:30:18.313:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@4308d56<mark>{[proxy], ([proxy], http/1.1)}{0.0.0.0:8080}</mark>
-<strong>2021-06-29 11:30:18.334:</strong>INFO :oejs.Server:main: Started Server@6d4e5011{STARTING}[11.0.6,sto=5000] @1060ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 15:13:15.000:</strong>INFO :oejs.Server:main: jetty-11.0.7; built: 2021-10-06T19:59:39.004Z; git: 389a3587725d94cc2470ed06aa184c6e57fe9ce8; jvm 17+35
+<strong>2021-10-06 15:13:15.058:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@bef2d72<mark>{[proxy], ([proxy], http/1.1)}{0.0.0.0:8080}</mark>
+<strong>2021-10-06 15:13:15.075:</strong>INFO :oejs.Server:main: Started Server@b62fe6d{STARTING}[11.0.7,sto=5000] @831ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -6307,11 +6488,11 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight nowrap"><code><strong>2021-06-29 11:30:21.895:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
-<strong>2021-06-29 11:30:22.964:</strong>INFO :oejs.Server:main: jetty-11.0.6; built: 2021-06-29T16:16:33.537Z; git: 69469432898becda3aed32a32d4b0adbb7b6daee; jvm 11.0.9+11
-<strong>2021-06-29 11:30:23.180:</strong>INFO :oejus.SslContextFactory:main: x509=X509@626c44e7(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@3b00856b[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
-<strong>2021-06-29 11:30:23.310:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@232f7d69<mark>{[proxy], ([proxy], ssl, http/1.1)}{0.0.0.0:8443}</mark>
-<strong>2021-06-29 11:30:23.327:</strong>INFO :oejs.Server:main: Started Server@4982cc36{STARTING}[11.0.6,sto=5000] @2698ms</code></pre>
+<pre class="CodeRay highlight nowrap"><code><strong>2021-10-06 15:13:17.968:</strong>WARN :oejk.KeystoreGenerator:main: Generating Test Keystore: DO NOT USE IN PRODUCTION!
+<strong>2021-10-06 15:13:18.731:</strong>INFO :oejs.Server:main: jetty-11.0.7; built: 2021-10-06T19:59:39.004Z; git: 389a3587725d94cc2470ed06aa184c6e57fe9ce8; jvm 17+35
+<strong>2021-10-06 15:13:18.840:</strong>INFO :oejus.SslContextFactory:main: x509=X509@7d7758be(jetty-test-keystore,h=[localhost],a=[],w=[]) for Server@5f9edf14[provider=null,keyStore=file:///path/to/jetty.base/etc/test-keystore.p12,trustStore=null]
+<strong>2021-10-06 15:13:18.948:</strong>INFO :oejs.AbstractConnector:main: Started ServerConnector@78ed0eb<mark>{[proxy], ([proxy], ssl, http/1.1)}{0.0.0.0:8443}</mark>
+<strong>2021-10-06 15:13:18.963:</strong>INFO :oejs.Server:main: Started Server@4d14b6c2{STARTING}[11.0.7,sto=5000] @2082ms</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -6604,9 +6785,6 @@
 <p>When using the Jetty WebSocket Client APIs, web applications should include the required jars and their dependencies in the <code>WEB-INF/lib</code> directory of the <code>*.war</code> file.
 Alternatively, when deploying your web applications in Jetty, you can enable the <code>websocket-jetty-client</code> Jetty module to allow web applications to use the Jetty WebSocket Client APIs provided by Jetty, without the need to include jars and their dependencies in the <code>*.war</code> file.</p>
 </div>
-<div class="paragraph">
-<p>Unresolved directive in index.adoc - include::compliance/server-compliance.adoc[]</p>
-</div>
 </div>
 </div>
 </div>
@@ -8710,8 +8888,21 @@
 </div>
 <div class="paragraph">
 <p>The <code>quickstart</code> module allows a webapp to be pre-scanned, making startup predictable and faster.
-During scanning all declarative configuration (ie from web.xml, web-fragment.xml and annotations) are encoded into an effective <code>web.xml</code>, called <code>WEB-INF/quickstart-web.xml</code>, which can be inspected to understand what will be deployed.
-NOTE:: Programmatic configuration is <em>not</em> encoded into the generated <code>quickstart-web.xml</code> file.</p>
+During scanning all declarative configuration (ie from web.xml, web-fragment.xml and annotations) are encoded into an effective <code>web.xml</code>, called <code>WEB-INF/quickstart-web.xml</code>, which can be inspected to understand what will be deployed.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Programmatic configuration is <em>not</em> encoded into the generated <code>quickstart-web.xml</code> file.</p>
+</div>
+</td>
+</tr>
+</table>
 </div>
 <div class="paragraph">
 <p>With <code>quickstart</code>, webapps that took many seconds to scan and deploy can now be deployed in a few hundred milliseconds.</p>
@@ -8723,8 +8914,8 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="screen">$ cd $JETTY-BASE
-$ java -jar $JETTY_HOME/start.jar --add-module=quickstart</code></pre>
+<pre>$ cd $JETTY-BASE
+$ java -jar $JETTY_HOME/start.jar --add-module=quickstart</pre>
 </div>
 </div>
 <div class="paragraph">
@@ -9178,14 +9369,14 @@
 <div class="paragraph">
 <p>Logging has been bridged to Jetty logging, so you can enable logging for the <code>org.apache.jasper</code> package, subpackages and classes as usual.</p>
 </div>
-<div class="sect4">
-<h5 id="og-configuration-of-the-jsp-servlet"><a class="anchor" href="#og-configuration-of-the-jsp-servlet"></a><a class="link" href="#og-configuration-of-the-jsp-servlet">Configuration of the JSP servlet</a></h5>
+<div class="sect3">
+<h4 id="og-configuration-of-the-jsp-servlet"><a class="anchor" href="#og-configuration-of-the-jsp-servlet"></a><a class="link" href="#og-configuration-of-the-jsp-servlet">Configuration of the JSP Servlet</a></h4>
 <div class="paragraph">
-<p>The <code>org.eclipse.jetty.jsp.JettyJspServlet</code> is the servlet responsible for serving jsps.</p>
+<p>The <code>org.eclipse.jetty.jsp.JettyJspServlet</code> is the servlet responsible for serving JSPs.</p>
 </div>
 <div class="paragraph">
-<p>It is configured as the default jsp servlet in the <a href="../../../../../../../jetty-home/target/jetty-home/etc/webdefault.xml">webdefault.xml</a> file.
-Notice that Jetty identifies the jsp servlet by the presence of the <code>id=jsp</code> attribute in the <code>&lt;servlet&gt;</code> declaration.</p>
+<p>It is configured as the default jsp servlet in the <code>$JETTY_HOME/etc/webdefault.xml</code> file.
+Notice that Jetty identifies the jsp servlet by the presence of the <code>id="jsp"</code> attribute in the <code>&lt;servlet&gt;</code> declaration.</p>
 </div>
 <div class="paragraph">
 <p>That file maps the <code>org.eclipse.jetty.jsp.JettyJspServlet</code> to the following partial urls:</p>
@@ -9226,13 +9417,13 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"> <span class="tag">&lt;servlet</span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">jsp</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>  <i class="conum" data-value="1"></i><b>(1)</b>
-     <span class="tag">&lt;servlet-name&gt;</span>jsp<span class="tag">&lt;/servlet-name&gt;</span> <i class="conum" data-value="2"></i><b>(2)</b>
-     <span class="tag">&lt;init-param&gt;</span>
-         <span class="tag">&lt;param-name&gt;</span>keepgenerated<span class="tag">&lt;/param-name&gt;</span> <i class="conum" data-value="3"></i><b>(3)</b>
-         <span class="tag">&lt;param-value&gt;</span>true<span class="tag">&lt;/param-value&gt;</span>  <i class="conum" data-value="4"></i><b>(4)</b>
-     <span class="tag">&lt;/init-param&gt;</span>
-   <span class="tag">&lt;/servlet&gt;</span></code></pre>
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;servlet</span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">jsp</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>  <i class="conum" data-value="1"></i><b>(1)</b>
+  <span class="tag">&lt;servlet-name&gt;</span>jsp<span class="tag">&lt;/servlet-name&gt;</span> <i class="conum" data-value="2"></i><b>(2)</b>
+  <span class="tag">&lt;init-param&gt;</span>
+    <span class="tag">&lt;param-name&gt;</span>keepgenerated<span class="tag">&lt;/param-name&gt;</span> <i class="conum" data-value="3"></i><b>(3)</b>
+    <span class="tag">&lt;param-value&gt;</span>true<span class="tag">&lt;/param-value&gt;</span>  <i class="conum" data-value="4"></i><b>(4)</b>
+  <span class="tag">&lt;/init-param&gt;</span>
+<span class="tag">&lt;/servlet&gt;</span></code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -9283,10 +9474,10 @@
 </table>
 </div>
 <div class="paragraph">
-<p>There are many configuration parameters for the Apache Jasper jsp servlet, here are some of them:</p>
+<p>There are many configuration parameters for the Apache Jasper JSP Servlet, here are some of them:</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 4. Jsp Servlet Parameters</caption>
+<caption class="title">Table 4. JSP Servlet Parameters</caption>
 <colgroup>
 <col style="width: 25%;">
 <col style="width: 25%;">
@@ -9318,7 +9509,7 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">classdebuginfo</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Include debugging info in class file.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
@@ -9349,26 +9540,26 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">development</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">If <code>true</code> recompilation checks occur at the frequency governed by <code>modificationTestInterval</code>.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">displaySourceFragment</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Should a source fragment be included in
 exception messages</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">dumpSmap</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Dump SMAP JSR45 info to a file.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">enablePooling</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Determines whether tag handler pooling is enabled.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
@@ -9384,19 +9575,19 @@
 <td class="tableblock halign-left valign-top"><p class="tableblock">Should Jasper issue an error when
 the value of the class attribute in an useBean action is not a valid
 bean class</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">fork</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Only relevant if you use Ant to compile jsps: by default Jetty will use the Eclipse jdt compiler.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Only relevant if you use Ant to compile JSPs: by default Jetty will use the Eclipse jdt compiler.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">genStrAsCharArray</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Option for generating Strings as char arrays.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
@@ -9422,14 +9613,14 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">keepgenerated</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Do you want to keep the generated Java files around?</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">mappedFile</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Support for mapped Files. Generates a servlet that has a
-print statement per line of the JSP file </p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+print statement per line of the JSP file</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
@@ -9452,7 +9643,7 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">quoteAttributeEL</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">When EL is used in an attribute value on a JSP page, should the rules for quoting of attributes described in JSP.1.6 be applied to the expression</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
 </tr>
 <tr>
@@ -9462,7 +9653,7 @@
 re-compilation attempt? Used in development mode only and is disabled by
 default as compilation may be expensive and could lead to excessive
 resource usage.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
@@ -9474,44 +9665,50 @@
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">strictQuoteEscaping</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Should the quote escaping required by section JSP.1.6 of the JSP specification be applied to scriplet expression.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">TRUE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">suppressSmap</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Generation of SMAP info for JSR45 debugging.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">trimSpaces</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Should template text that consists entirely of whitespace be removed from the output (true), replaced with a single space (single) or left unchanged (false)? Note that if a JSP page or tag file specifies a trimDirectiveWhitespaces value of true, that will take precedence over this configuration setting for that page/tag.
 trimmed?</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">–</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">xpoweredBy</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Generate an X-Powered-By response header.</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">FALSE</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
 </tr>
 </tbody>
 </table>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">NOTE</dt>
-<dd>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
 <p>If the value you set doesn&#8217;t take effect, try using all lower case instead of camel case, or capitalizing only some of the words in the name, as Jasper is inconsistent in its parameter naming strategy.</p>
-</dd>
-</dl>
+</div>
+</td>
+</tr>
+</table>
 </div>
 </div>
 </div>
 <div class="sect2">
 <h3 id="og-javaserver-pages-standard-tag-libraries"><a class="anchor" href="#og-javaserver-pages-standard-tag-libraries"></a><a class="link" href="#og-javaserver-pages-standard-tag-libraries">JavaServer Pages Standard Tag Libraries</a></h3>
 <div class="paragraph">
-<p>The JavaServer Pages Standlard Tag Library (JSTL) is part of the Jetty distribution, and is available via the <code>jstl</code> module:</p>
+<p>The JavaServer Pages Standard Tag Library (JSTL) is part of the Jetty distribution, and is available via the <code>jstl</code> module:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -9530,9 +9727,9 @@
 </div>
 </div>
 <div class="sect2">
-<h3 id="og-javaserver-faces-taglibs"><a class="anchor" href="#og-javaserver-faces-taglibs"></a><a class="link" href="#og-javaserver-faces-taglibs">JavaServer Faces Taglibs</a></h3>
+<h3 id="og-javaserver-faces-taglibs"><a class="anchor" href="#og-javaserver-faces-taglibs"></a><a class="link" href="#og-javaserver-faces-taglibs">JavaServer Faces TagLibs</a></h3>
 <div class="paragraph">
-<p>If you want to use JSF with your webapp, you should copy the relevant jars from your implementation of choice into your <code>$jetty.base</code> directory, ideally into <code>$jetty.base/lib/ext</code>.
+<p>If you want to use JSF with your webapp, you should copy the relevant jars from your implementation of choice into your <code>$JETTY_BASE</code> directory, ideally into <code>$JETTY_BASE/lib/ext</code>.
 If that directory does not exist, enable the <code>ext</code> module, which will create the directory and ensure all jars within it are put onto the container classpath.</p>
 </div>
 <div class="paragraph">
@@ -9551,7 +9748,7 @@
 <span class="tag">&lt;Configure</span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">org.eclipse.jetty.webapp.WebAppContext</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span> <i class="conum" data-value="1"></i><b>(1)</b>
     <span class="tag">&lt;Call</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">setAttribute</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span> <i class="conum" data-value="2"></i><b>(2)</b>
       <span class="tag">&lt;Arg&gt;</span>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern<span class="tag">&lt;/Arg&gt;</span> <i class="conum" data-value="3"></i><b>(3)</b>
-      <span class="tag">&lt;Arg.</span><span class="error">*</span><span class="error">/</span><span class="attribute-name">jetty-servlet-api-</span><span class="error">[</span><span class="error">^</span><span class="error">/</span><span class="error">]</span><span class="error">*</span><span class="error">\</span><span class="attribute-name">.jar</span><span class="error">$</span><span class="error">|</span><span class="attribute-name">.</span><span class="error">*</span><span class="error">/</span><span class="attribute-name">javax.servlet.jsp.jstl-.</span><span class="error">*</span><span class="error">\</span><span class="attribute-name">.jar</span><span class="error">$</span><span class="error">|</span><span class="attribute-name">.</span><span class="error">*</span><span class="error">/</span><span class="attribute-name">org.apache.taglibs.taglibs-standard-impl-.</span><span class="error">*</span><span class="error">\</span><span class="attribute-name">.jar</span><span class="error">$</span><span class="error">|</span><span class="attribute-name">.</span><span class="error">*</span><span class="error">/</span><span class="attribute-name">jsf-</span><span class="error">[</span><span class="error">^</span><span class="error">/</span><span class="error">]</span><span class="error">*</span><span class="error">\</span><span class="attribute-name">.jar</span><span class="error">$</span><span class="tag">&gt;</span><span class="tag">&lt;/Arg&gt;</span> <i class="conum" data-value="4"></i><b>(4)</b>
+      <span class="tag">&lt;Arg&gt;</span>.*/jetty-servlet-api-[^/]*\.jar$|.*/javax.servlet.jsp.jstl-.*\.jar$|.*/org.apache.taglibs.taglibs-standard-impl-.*\.jar$|.*/jsf-[^/]*\.jar$<span class="tag">&lt;/Arg&gt;</span> <i class="conum" data-value="4"></i><b>(4)</b>
     <span class="tag">&lt;/Call&gt;</span>
 <span class="tag">&lt;/Configure&gt;</span></code></pre>
 </div>
@@ -9923,7 +10120,7 @@
 </table>
 </div>
 <div class="paragraph">
-<p>The webapp performs a lookup for <code>java:comp/env/mail/Session</code> at runtime and obtains a <code>javax.mail.Session</code> that has the correct configuration to permit it to send email via SMTP.</p>
+<p>The webapp performs a lookup for <code>java:comp/env/mail/Session</code> at runtime and obtains a <code>javax.mail.Session</code> that has the correct configuration to permit it to send email via SMTP.</p>
 </div>
 <div class="admonitionblock note">
 <table>
@@ -10189,7 +10386,7 @@
 </div>
 <div class="paragraph">
 <p>The Jetty JAAS support aims to dictate as little as possible whilst providing a sufficiently flexible infrastructure to allow users to drop either one of the <a href="#og-jaas-loginmodules">JAAS Login Modules that ships with Jetty</a>, or their
-own custom <a href="https://docs.oracle.com/javase/7/docs/api/javax/security/auth/spi/LoginModule.html">LoginModules</a>.</p>
+own custom <a href="https://docs.oracle.com/javase/7/docs/api/javax/security/auth/spi/LoginModule.html">LoginModule</a>s.</p>
 </div>
 <div class="sect3">
 <h4 id="og-jaas-configuration"><a class="anchor" href="#og-jaas-configuration"></a><a class="link" href="#og-jaas-configuration">Configuration</a></h4>
@@ -10227,9 +10424,9 @@
 <dl>
 <dt class="hdlist1">jetty.jaas.login.conf</dt>
 <dd>
-<p>This is the location of the file that will be referenced by the System property <code>java.security.auth.login.config</code>: Jetty sets this System property for you based on the value of this property.
-The value of this property is assumed to be <em>relative to the <code>$jetty.base</code></em>.
-The default value is <code>etc/login.conf</code>, which resolves to  <code>$jetty.base/etc/login.conf</code>.
+<p>This is the location of the file that will be referenced by the system property <code>java.security.auth.login.config</code>: Jetty sets this system property for you based on the value of this property.
+The value of this property is assumed to be <em>relative to <code>$JETTY_BASE</code></em>.
+The default value is <code>etc/login.conf</code>, which resolves to  <code>$JETTY_BASE/etc/login.conf</code>.
 If you don&#8217;t want to put your login module configuration file here, you can change this property to point to where it is.</p>
 </dd>
 </dl>
@@ -10302,39 +10499,30 @@
 <div class="paragraph">
 <p>Here&#8217;s an example of this type of XML file:</p>
 </div>
-</li>
-</ul>
-</div>
 <div class="listingblock">
 <div class="content">
-<pre>&lt;?xml version="1.0"?&gt;
-&lt;!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_10_0.dtd"&gt;
-
-&lt;Configure id="Server" class="org.eclipse.jetty.server.Server"&gt;
-
-  &lt;Call name="addBean"&gt;
-    &lt;Arg&gt;
-      &lt;New class="org.eclipse.jetty.jaas.JAASLoginService"&gt;
-        &lt;Set name="name"&gt;Test JAAS Realm&lt;/Set&gt;
-        &lt;Set name="LoginModuleName"&gt;xyz&lt;/Set&gt;
-      &lt;/New&gt;
-    &lt;/Arg&gt;
-  &lt;/Call&gt;
-
-&lt;/Configure&gt;</pre>
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="preprocessor">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
+<span class="doctype">&lt;!DOCTYPE Configure PUBLIC &quot;-//Jetty//Configure//EN&quot; &quot;https://www.eclipse.org/jetty/configure_10_0.dtd&quot;&gt;</span>
+<span class="tag">&lt;Configure</span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">Server</span><span class="delimiter">&quot;</span></span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">org.eclipse.jetty.server.Server</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+  <span class="tag">&lt;Call</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">addBean</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+    <span class="tag">&lt;Arg&gt;</span>
+      <span class="tag">&lt;New</span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">org.eclipse.jetty.jaas.JAASLoginService</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+        <span class="tag">&lt;Set</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>Test JAAS Realm<span class="tag">&lt;/Set&gt;</span>
+        <span class="tag">&lt;Set</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">LoginModuleName</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>xyz<span class="tag">&lt;/Set&gt;</span>
+      <span class="tag">&lt;/New&gt;</span>
+    <span class="tag">&lt;/Arg&gt;</span>
+  <span class="tag">&lt;/Call&gt;</span>
+<span class="tag">&lt;/Configure&gt;</span></code></pre>
 </div>
 </div>
-<div class="ulist">
-<ul>
+</li>
 <li>
 <p>Alternatively, if you want to use JAAS with a specific webapp only, you declare your <code>org.eclipse.jetty.jaas.JAASLoginService</code> in a context XLM file specific to that webapp:</p>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="preprocessor">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
 <span class="doctype">&lt;!DOCTYPE Configure PUBLIC &quot;-//Jetty//Configure//EN&quot; &quot;https://www.eclipse.org/jetty/configure_10_0.dtd&quot;&gt;</span>
-
 <span class="tag">&lt;Configure</span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">org.eclipse.jetty.webapp.WebAppContext</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
-
   <span class="tag">&lt;Set</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">securityHandler</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
     <span class="tag">&lt;New</span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">org.eclipse.jetty.security.ConstraintSecurityHandler</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
      <span class="tag">&lt;Set</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">loginService</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
@@ -10345,7 +10533,6 @@
      <span class="tag">&lt;/Set&gt;</span>
     <span class="tag">&lt;/New&gt;</span>
   <span class="tag">&lt;/Set&gt;</span>
-
 <span class="tag">&lt;/Configure&gt;</span></code></pre>
 </div>
 </div>
@@ -10364,10 +10551,10 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="ini">xyz  { <i class="conum" data-value="1"></i><b>(1)</b>
-       com.acme.SomeLoginModule required debug=true; <i class="conum" data-value="2"></i><b>(2)</b>
-       com.other.OtherLoginModule optional; <i class="conum" data-value="3"></i><b>(3)</b>
-     };</code></pre>
+<pre class="CodeRay highlight"><code>xyz  { <i class="conum" data-value="1"></i><b>(1)</b>
+  com.acme.SomeLoginModule required debug=true; <i class="conum" data-value="2"></i><b>(2)</b>
+  com.other.OtherLoginModule optional; <i class="conum" data-value="3"></i><b>(3)</b>
+};</code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -10408,8 +10595,6 @@
 </li>
 </ul>
 </div>
-<div class="quoteblock">
-<blockquote>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -10417,14 +10602,14 @@
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-Passwords can be stored in clear text, obfuscated or checksummed.
-The class <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/util/security/Password.html"><code>org.eclipse.jetty.util.security.Password</code></a> should be used to generate all varieties of passwords,the output from which can be put in to property files or entered into database tables.
+<div class="paragraph">
+<p>Passwords can be stored in clear text, obfuscated or checksummed.
+The class <a href="https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/util/security/Password.html"><code>org.eclipse.jetty.util.security.Password</code></a> should be used to generate all varieties of passwords,the output from which can be put in to property files or entered into database tables.</p>
+</div>
 </td>
 </tr>
 </table>
 </div>
-</blockquote>
-</div>
 <div class="sect4">
 <h5 id="og-jdbcloginmodule"><a class="anchor" href="#og-jdbcloginmodule"></a><a class="link" href="#og-jdbcloginmodule">JDBCLoginModule</a></h5>
 <div class="paragraph">
@@ -10436,18 +10621,18 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="ini">jdbc { <i class="conum" data-value="1"></i><b>(1)</b>
-      org.eclipse.jetty.jaas.spi.JDBCLoginModule required <i class="conum" data-value="2"></i><b>(2)</b> <i class="conum" data-value="3"></i><b>(3)</b>
-      dbUrl=&quot;jdbc:hsqldb:.&quot; <i class="conum" data-value="4"></i><b>(4)</b>
-      dbUserName=&quot;sa&quot; <i class="conum" data-value="5"></i><b>(5)</b>
-      dbDriver=&quot;org.hsqldb.jdbcDriver&quot; <i class="conum" data-value="6"></i><b>(6)</b>
-      userTable=&quot;myusers&quot; <i class="conum" data-value="7"></i><b>(7)</b>
-      userField=&quot;myuser&quot; <i class="conum" data-value="8"></i><b>(8)</b>
-      credentialField=&quot;mypassword&quot; <i class="conum" data-value="9"></i><b>(9)</b>
-      userRoleTable=&quot;myuserroles&quot; <i class="conum" data-value="10"></i><b>(10)</b>
-      userRoleUserField=&quot;myuser&quot; <i class="conum" data-value="11"></i><b>(11)</b>
-      userRoleRoleField=&quot;myrole&quot;; <i class="conum" data-value="12"></i><b>(12)</b>
-      };</code></pre>
+<pre class="CodeRay highlight"><code>jdbc { <i class="conum" data-value="1"></i><b>(1)</b>
+  org.eclipse.jetty.jaas.spi.JDBCLoginModule required <i class="conum" data-value="2"></i><b>(2)</b> <i class="conum" data-value="3"></i><b>(3)</b>
+  dbUrl=&quot;jdbc:hsqldb:.&quot; <i class="conum" data-value="4"></i><b>(4)</b>
+  dbUserName=&quot;sa&quot; <i class="conum" data-value="5"></i><b>(5)</b>
+  dbDriver=&quot;org.hsqldb.jdbcDriver&quot; <i class="conum" data-value="6"></i><b>(6)</b>
+  userTable=&quot;myusers&quot; <i class="conum" data-value="7"></i><b>(7)</b>
+  userField=&quot;myuser&quot; <i class="conum" data-value="8"></i><b>(8)</b>
+  credentialField=&quot;mypassword&quot; <i class="conum" data-value="9"></i><b>(9)</b>
+  userRoleTable=&quot;myuserroles&quot; <i class="conum" data-value="10"></i><b>(10)</b>
+  userRoleUserField=&quot;myuser&quot; <i class="conum" data-value="11"></i><b>(11)</b>
+  userRoleRoleField=&quot;myrole&quot;; <i class="conum" data-value="12"></i><b>(12)</b>
+};</code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -10507,10 +10692,8 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="sql">  <span class="class">select</span> &lt;credentialField&gt; <span class="keyword">from</span> &lt;userTable&gt;
-          <span class="keyword">where</span> &lt;userField&gt; =<span class="error">?</span>
-  <span class="class">select</span> &lt;userRoleRoleField&gt; <span class="keyword">from</span> &lt;userRoleTable&gt;
-          <span class="keyword">where</span> &lt;userRoleUserField&gt; =<span class="error">?</span></code></pre>
+<pre class="CodeRay highlight"><code data-lang="sql"><span class="class">select</span> &lt;credentialField&gt; <span class="keyword">from</span> &lt;userTable&gt; <span class="keyword">where</span> &lt;userField&gt;=<span class="error">?</span>
+<span class="class">select</span> &lt;userRoleRoleField&gt; <span class="keyword">from</span> &lt;userRoleTable&gt; <span class="keyword">where</span> &lt;userRoleUserField&gt;=<span class="error">?</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -10519,7 +10702,7 @@
 When the user logs out or the session expires, the information is flushed from memory.</p>
 </div>
 <div class="paragraph">
-<p>Note that passwords can be stored in the database in plain text or encoded formats - see the note on "Passwords/Credentials" above.</p>
+<p>Note that passwords can be stored in the database in plain text or encoded formats&#8201;&#8212;&#8201;see the note on "Passwords/Credentials" above.</p>
 </div>
 </div>
 <div class="sect4">
@@ -10533,16 +10716,16 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre>ds { <i class="conum" data-value="1"></i><b>(1)</b>
-     org.eclipse.jetty.jaas.spi.DataSourceLoginModule required <i class="conum" data-value="2"></i><b>(2)</b><i class="conum" data-value="3"></i><b>(3)</b>
-     dbJNDIName="ds" <i class="conum" data-value="4"></i><b>(4)</b>
-     userTable="myusers" <i class="conum" data-value="5"></i><b>(5)</b>
-     userField="myuser" <i class="conum" data-value="6"></i><b>(6)</b>
-     credentialField="mypassword" <i class="conum" data-value="7"></i><b>(7)</b>
-     userRoleTable="myuserroles" <i class="conum" data-value="8"></i><b>(8)</b>
-     userRoleUserField="myuser" <i class="conum" data-value="9"></i><b>(9)</b>
-     userRoleRoleField="myrole"; <i class="conum" data-value="10"></i><b>(10)</b>
-    };</pre>
+<pre class="CodeRay highlight"><code>ds { <i class="conum" data-value="1"></i><b>(1)</b>
+  org.eclipse.jetty.jaas.spi.DataSourceLoginModule required <i class="conum" data-value="2"></i><b>(2)</b> <i class="conum" data-value="3"></i><b>(3)</b>
+  dbJNDIName=&quot;ds&quot; <i class="conum" data-value="4"></i><b>(4)</b>
+  userTable=&quot;myusers&quot; <i class="conum" data-value="5"></i><b>(5)</b>
+  userField=&quot;myuser&quot; <i class="conum" data-value="6"></i><b>(6)</b>
+  credentialField=&quot;mypassword&quot; <i class="conum" data-value="7"></i><b>(7)</b>
+  userRoleTable=&quot;myuserroles&quot; <i class="conum" data-value="8"></i><b>(8)</b>
+  userRoleUserField=&quot;myuser&quot; <i class="conum" data-value="9"></i><b>(9)</b>
+  userRoleRoleField=&quot;myrole&quot;; <i class="conum" data-value="10"></i><b>(10)</b>
+};</code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -10597,10 +10780,10 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre>props { <i class="conum" data-value="1"></i><b>(1)</b>
-        org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required  <i class="conum" data-value="2"></i><b>(2)</b><i class="conum" data-value="3"></i><b>(3)</b>
-        file="/somewhere/somefile.props"; <i class="conum" data-value="4"></i><b>(4)</b>
-      };</pre>
+<pre class="CodeRay highlight"><code>props { <i class="conum" data-value="1"></i><b>(1)</b>
+  org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required  <i class="conum" data-value="2"></i><b>(2)</b> <i class="conum" data-value="3"></i><b>(3)</b>
+  file=&quot;/somewhere/somefile.props&quot;; <i class="conum" data-value="4"></i><b>(4)</b>
+};</code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -10628,7 +10811,7 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="text subs=verbatim">&lt;username&gt;: &lt;password&gt; [,&lt;rolename&gt; ...]</code></pre>
+<pre class="CodeRay highlight"><code data-lang="text">&lt;username&gt;: &lt;password&gt; [,&lt;rolename&gt; ...]</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -10636,10 +10819,10 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="ini">fred: OBF:1xmk1w261u9r1w1c1xmq,user,admin
+<pre>fred: OBF:1xmk1w261u9r1w1c1xmq,user,admin
 harry: changeme,user,developer
 tom: MD5:164c88b302622e17050af52c89945d44,user
-dick: CRYPT:adpexzg3FUZAk,admin</code></pre>
+dick: CRYPT:adpexzg3FUZAk,admin</pre>
 </div>
 </div>
 <div class="paragraph">
@@ -10657,27 +10840,27 @@
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="ini">example  { <i class="conum" data-value="1"></i><b>(1)</b>
-   org.eclipse.jetty.jaas.spi.LdapLoginModule required  <i class="conum" data-value="2"></i><b>(2)</b> <i class="conum" data-value="3"></i><b>(3)</b>
-   contextFactory=&quot;com.sun.jndi.ldap.LdapCtxFactory&quot; <i class="conum" data-value="4"></i><b>(4)</b>
-   hostname=&quot;ldap.example.com&quot; <i class="conum" data-value="5"></i><b>(5)</b>
-   port=&quot;389&quot; <i class="conum" data-value="6"></i><b>(6)</b>
-   bindDn=&quot;cn=Directory Manager&quot; <i class="conum" data-value="7"></i><b>(7)</b>
-   bindPassword=&quot;directory&quot; <i c