blob: 604c04555f92d15ad025800a5c493f9c2e1d2ca8 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.10) on Fri Feb 26 09:50:23 CST 2021 -->
<title>AbstractProxyServlet (Jetty :: Project 9.4.38.v20210224 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-02-26">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="AbstractProxyServlet (Jetty :: Project 9.4.38.v20210224 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":6,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AbstractProxyServlet.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.eclipse.jetty.proxy</a></div>
<h2 title="Class AbstractProxyServlet" class="title">Class AbstractProxyServlet</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>javax.servlet.GenericServlet</li>
<li>
<ul class="inheritance">
<li>javax.servlet.http.HttpServlet</li>
<li>
<ul class="inheritance">
<li>org.eclipse.jetty.proxy.AbstractProxyServlet</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code>java.io.Serializable</code>, <code>javax.servlet.Servlet</code>, <code>javax.servlet.ServletConfig</code></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="AsyncMiddleManServlet.html" title="class in org.eclipse.jetty.proxy">AsyncMiddleManServlet</a></code>, <code><a href="ProxyServlet.html" title="class in org.eclipse.jetty.proxy">ProxyServlet</a></code></dd>
</dl>
<hr>
<pre>public abstract class <span class="typeNameLabel">AbstractProxyServlet</span>
extends javax.servlet.http.HttpServlet</pre>
<div class="block"><p>Abstract base class for proxy servlets.</p>
<p>Forwards requests to another server either as a standard web reverse
proxy or as a transparent reverse proxy (as defined by RFC 7230).</p>
<p>To facilitate JMX monitoring, the <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client"><code>HttpClient</code></a> instance is set
as ServletContext attribute, prefixed with this servlet's name and
exposed by the mechanism provided by
<code>ServletContext.setAttribute(String, Object)</code>.</p>
<p>The following init parameters may be used to configure the servlet:</p>
<ul>
<li>preserveHost - the host header specified by the client is forwarded to the server</li>
<li>hostHeader - forces the host header to a particular value</li>
<li>viaHost - the name to use in the Via header: Via: http/1.1 &lt;viaHost&gt;</li>
<li>whiteList - comma-separated list of allowed proxy hosts</li>
<li>blackList - comma-separated list of forbidden proxy hosts</li>
</ul>
<p>In addition, see <a href="#createHttpClient()"><code>createHttpClient()</code></a> for init parameters
used to configure the <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client"><code>HttpClient</code></a> instance.</p>
<p>NOTE: By default the Host header sent to the server by this proxy
servlet is the server's host name. However, this breaks redirects.
Set <code>preserveHost</code> to <code>true</code> to make redirects working,
although this may break server's virtual host selection.</p>
<p>The default behavior of not preserving the Host header mimics
the default behavior of Apache httpd and Nginx, which both have
a way to be configured to preserve the Host header.</p></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../serialized-form.html#org.eclipse.jetty.proxy.AbstractProxyServlet">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="AbstractProxyServlet.TransparentDelegate.html" title="class in org.eclipse.jetty.proxy">AbstractProxyServlet.TransparentDelegate</a></span></code></th>
<td class="colLast">
<div class="block">Utility class that implement transparent proxy functionalities.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../util/log/Logger.html" title="interface in org.eclipse.jetty.util.log">Logger</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_log">_log</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#CLIENT_REQUEST_ATTRIBUTE">CLIENT_REQUEST_ATTRIBUTE</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static java.util.Set&lt;java.lang.String&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#HOP_HEADERS">HOP_HEADERS</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">AbstractProxyServlet</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addProxyHeaders(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">addProxyHeaders</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addViaHeader(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">addViaHeader</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></th>
<td class="colLast">
<div class="block">Adds the HTTP <code>Via</code> header to the proxied request, taking into account data present in the client request.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addViaHeader(org.eclipse.jetty.client.api.Request)">addViaHeader</a></span>&#8203;(<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></th>
<td class="colLast">
<div class="block">Adds the HTTP <code>Via</code> header to the proxied request.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addXForwardedHeaders(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">addXForwardedHeaders</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#clientRequestStatus(java.lang.Throwable)">clientRequestStatus</a></span>&#8203;(java.lang.Throwable&nbsp;failure)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#copyRequestHeaders(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">copyRequestHeaders</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createHttpClient()">createHttpClient</a></span>()</code></th>
<td class="colLast">
<div class="block">Creates a <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client"><code>HttpClient</code></a> instance, configured with init parameters of this servlet.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>protected <a href="../util/log/Logger.html" title="interface in org.eclipse.jetty.util.log">Logger</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createLogger()">createLogger</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#destroy()">destroy</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#expects100Continue(javax.servlet.http.HttpServletRequest)">expects100Continue</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;request)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#filterServerResponseHeader(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Response,java.lang.String,java.lang.String)">filterServerResponseHeader</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse,
java.lang.String&nbsp;headerName,
java.lang.String&nbsp;headerValue)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>protected java.util.Set&lt;java.lang.String&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#findConnectionHeaders(javax.servlet.http.HttpServletRequest)">findConnectionHeaders</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>java.util.Set&lt;java.lang.String&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getBlackListHosts()">getBlackListHosts</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getHostHeader()">getHostHeader</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>protected <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getHttpClient()">getHttpClient</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>protected int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRequestId(javax.servlet.http.HttpServletRequest)">getRequestId</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTimeout()">getTimeout</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getViaHost()">getViaHost</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>java.util.Set&lt;java.lang.String&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getWhiteListHosts()">getWhiteListHosts</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hasContent(javax.servlet.http.HttpServletRequest)">hasContent</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#init()">init</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>protected <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newHttpClient()">newHttpClient</a></span>()</code></th>
<td class="colLast">
<div class="block">The servlet init parameter 'selectors' can be set for the number of
selector threads to be used by the HttpClient.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>protected <a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newProxyRequest(javax.servlet.http.HttpServletRequest,java.lang.String)">newProxyRequest</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;request,
java.lang.String&nbsp;rewrittenTarget)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>protected abstract <a href="../client/api/Response.CompleteListener.html" title="interface in org.eclipse.jetty.client.api">Response.CompleteListener</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newProxyResponseListener(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">newProxyResponseListener</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onClientRequestFailure(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request,javax.servlet.http.HttpServletResponse,java.lang.Throwable)">onClientRequestFailure</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
java.lang.Throwable&nbsp;failure)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onContinue(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">onContinue</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onProxyResponseFailure(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response,java.lang.Throwable)">onProxyResponseFailure</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse,
java.lang.Throwable&nbsp;failure)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onProxyResponseSuccess(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response)">onProxyResponseSuccess</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onProxyRewriteFailed(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">onProxyRewriteFailed</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse)</code></th>
<td class="colLast">
<div class="block">Callback method invoked when the URI rewrite performed
in <a href="#rewriteTarget(javax.servlet.http.HttpServletRequest)"><code>rewriteTarget(HttpServletRequest)</code></a> returns null
indicating that no rewrite can be performed.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onServerResponseHeaders(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response)">onServerResponseHeaders</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>protected int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#proxyResponseStatus(java.lang.Throwable)">proxyResponseStatus</a></span>&#8203;(java.lang.Throwable&nbsp;failure)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#rewriteTarget(javax.servlet.http.HttpServletRequest)">rewriteTarget</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#sendProxyRequest(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Request)">sendProxyRequest</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#sendProxyResponseError(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,int)">sendProxyResponseError</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
int&nbsp;status)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setTimeout(long)">setTimeout</a></span>&#8203;(long&nbsp;timeout)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateDestination(java.lang.String,int)">validateDestination</a></span>&#8203;(java.lang.String&nbsp;host,
int&nbsp;port)</code></th>
<td class="colLast">
<div class="block">Checks the given <code>host</code> and <code>port</code> against whitelist and blacklist.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.javax.servlet.http.HttpServlet">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;javax.servlet.http.HttpServlet</h3>
<code>doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service, service</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.javax.servlet.GenericServlet">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;javax.servlet.GenericServlet</h3>
<code>getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="CLIENT_REQUEST_ATTRIBUTE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>CLIENT_REQUEST_ATTRIBUTE</h4>
<pre>protected static final&nbsp;java.lang.String CLIENT_REQUEST_ATTRIBUTE</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#org.eclipse.jetty.proxy.AbstractProxyServlet.CLIENT_REQUEST_ATTRIBUTE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="HOP_HEADERS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>HOP_HEADERS</h4>
<pre>protected static final&nbsp;java.util.Set&lt;java.lang.String&gt; HOP_HEADERS</pre>
</li>
</ul>
<a id="_log">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>_log</h4>
<pre>protected&nbsp;<a href="../util/log/Logger.html" title="interface in org.eclipse.jetty.util.log">Logger</a> _log</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AbstractProxyServlet</h4>
<pre>public&nbsp;AbstractProxyServlet()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="init()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;init()
throws javax.servlet.ServletException</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>init</code>&nbsp;in class&nbsp;<code>javax.servlet.GenericServlet</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code></dd>
</dl>
</li>
</ul>
<a id="destroy()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>destroy</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;destroy()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>destroy</code>&nbsp;in interface&nbsp;<code>javax.servlet.Servlet</code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>destroy</code>&nbsp;in class&nbsp;<code>javax.servlet.GenericServlet</code></dd>
</dl>
</li>
</ul>
<a id="getHostHeader()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getHostHeader</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;getHostHeader()</pre>
</li>
</ul>
<a id="getViaHost()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getViaHost</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;getViaHost()</pre>
</li>
</ul>
<a id="getTimeout()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTimeout</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;getTimeout()</pre>
</li>
</ul>
<a id="setTimeout(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setTimeout</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setTimeout&#8203;(long&nbsp;timeout)</pre>
</li>
</ul>
<a id="getWhiteListHosts()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getWhiteListHosts</h4>
<pre class="methodSignature">public&nbsp;java.util.Set&lt;java.lang.String&gt;&nbsp;getWhiteListHosts()</pre>
</li>
</ul>
<a id="getBlackListHosts()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBlackListHosts</h4>
<pre class="methodSignature">public&nbsp;java.util.Set&lt;java.lang.String&gt;&nbsp;getBlackListHosts()</pre>
</li>
</ul>
<a id="createLogger()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createLogger</h4>
<pre class="methodSignature">protected&nbsp;<a href="../util/log/Logger.html" title="interface in org.eclipse.jetty.util.log">Logger</a>&nbsp;createLogger()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a logger instance with a name derived from this servlet's name.</dd>
</dl>
</li>
</ul>
<a id="createHttpClient()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createHttpClient</h4>
<pre class="methodSignature">protected&nbsp;<a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a>&nbsp;createHttpClient()
throws javax.servlet.ServletException</pre>
<div class="block"><p>Creates a <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client"><code>HttpClient</code></a> instance, configured with init parameters of this servlet.</p>
<p>The init parameters used to configure the <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client"><code>HttpClient</code></a> instance are:</p>
<table>
<caption>Init Parameters</caption>
<thead>
<tr>
<th>init-param</th>
<th>default</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>maxThreads</td>
<td>256</td>
<td>The max number of threads of HttpClient's Executor. If not set, or set to the value of "-", then the
Jetty server thread pool will be used.</td>
</tr>
<tr>
<td>maxConnections</td>
<td>32768</td>
<td>The max number of connections per destination, see <a href="../client/HttpClient.html#setMaxConnectionsPerDestination(int)"><code>HttpClient.setMaxConnectionsPerDestination(int)</code></a></td>
</tr>
<tr>
<td>idleTimeout</td>
<td>30000</td>
<td>The idle timeout in milliseconds, see <a href="../client/HttpClient.html#setIdleTimeout(long)"><code>HttpClient.setIdleTimeout(long)</code></a></td>
</tr>
<tr>
<td>timeout</td>
<td>60000</td>
<td>The total timeout in milliseconds, see <a href="../client/api/Request.html#timeout(long,java.util.concurrent.TimeUnit)"><code>Request.timeout(long, java.util.concurrent.TimeUnit)</code></a></td>
</tr>
<tr>
<td>requestBufferSize</td>
<td>HttpClient's default</td>
<td>The request buffer size, see <a href="../client/HttpClient.html#setRequestBufferSize(int)"><code>HttpClient.setRequestBufferSize(int)</code></a></td>
</tr>
<tr>
<td>responseBufferSize</td>
<td>HttpClient's default</td>
<td>The response buffer size, see <a href="../client/HttpClient.html#setResponseBufferSize(int)"><code>HttpClient.setResponseBufferSize(int)</code></a></td>
</tr>
<tr>
<td>selectors</td>
<td>cores / 2</td>
<td>The number of NIO selectors used by <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client"><code>HttpClient</code></a></td>
</tr>
</tbody>
</table></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client"><code>HttpClient</code></a> configured from the <code>servlet configuration</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>javax.servlet.ServletException</code> - if the <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client"><code>HttpClient</code></a> cannot be created</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#newHttpClient()"><code>newHttpClient()</code></a></dd>
</dl>
</li>
</ul>
<a id="newHttpClient()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newHttpClient</h4>
<pre class="methodSignature">protected&nbsp;<a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a>&nbsp;newHttpClient()</pre>
<div class="block">The servlet init parameter 'selectors' can be set for the number of
selector threads to be used by the HttpClient.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a new HttpClient instance</dd>
</dl>
</li>
</ul>
<a id="getHttpClient()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getHttpClient</h4>
<pre class="methodSignature">protected&nbsp;<a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a>&nbsp;getHttpClient()</pre>
</li>
</ul>
<a id="validateDestination(java.lang.String,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateDestination</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;validateDestination&#8203;(java.lang.String&nbsp;host,
int&nbsp;port)</pre>
<div class="block">Checks the given <code>host</code> and <code>port</code> against whitelist and blacklist.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>host</code> - the host to check</dd>
<dd><code>port</code> - the port to check</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if it is allowed to be proxy to the given host and port</dd>
</dl>
</li>
</ul>
<a id="rewriteTarget(javax.servlet.http.HttpServletRequest)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rewriteTarget</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;rewriteTarget&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest)</pre>
</li>
</ul>
<a id="onProxyRewriteFailed(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onProxyRewriteFailed</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;onProxyRewriteFailed&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse)</pre>
<div class="block"><p>Callback method invoked when the URI rewrite performed
in <a href="#rewriteTarget(javax.servlet.http.HttpServletRequest)"><code>rewriteTarget(HttpServletRequest)</code></a> returns null
indicating that no rewrite can be performed.</p>
<p>It is possible to use blocking API in this method,
like <code>HttpServletResponse.sendError(int)</code>.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>clientRequest</code> - the client request</dd>
<dd><code>proxyResponse</code> - the client response</dd>
</dl>
</li>
</ul>
<a id="hasContent(javax.servlet.http.HttpServletRequest)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasContent</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;hasContent&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest)</pre>
</li>
</ul>
<a id="expects100Continue(javax.servlet.http.HttpServletRequest)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>expects100Continue</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;expects100Continue&#8203;(javax.servlet.http.HttpServletRequest&nbsp;request)</pre>
</li>
</ul>
<a id="newProxyRequest(javax.servlet.http.HttpServletRequest,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newProxyRequest</h4>
<pre class="methodSignature">protected&nbsp;<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;newProxyRequest&#8203;(javax.servlet.http.HttpServletRequest&nbsp;request,
java.lang.String&nbsp;rewrittenTarget)</pre>
</li>
</ul>
<a id="copyRequestHeaders(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>copyRequestHeaders</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;copyRequestHeaders&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</pre>
</li>
</ul>
<a id="findConnectionHeaders(javax.servlet.http.HttpServletRequest)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>findConnectionHeaders</h4>
<pre class="methodSignature">protected&nbsp;java.util.Set&lt;java.lang.String&gt;&nbsp;findConnectionHeaders&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest)</pre>
</li>
</ul>
<a id="addProxyHeaders(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addProxyHeaders</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;addProxyHeaders&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</pre>
</li>
</ul>
<a id="addViaHeader(org.eclipse.jetty.client.api.Request)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addViaHeader</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;addViaHeader&#8203;(<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</pre>
<div class="block">Adds the HTTP <code>Via</code> header to the proxied request.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>proxyRequest</code> - the request being proxied</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#addViaHeader(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)"><code>addViaHeader(HttpServletRequest, Request)</code></a></dd>
</dl>
</li>
</ul>
<a id="addViaHeader(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addViaHeader</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;addViaHeader&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</pre>
<div class="block"><p>Adds the HTTP <code>Via</code> header to the proxied request, taking into account data present in the client request.</p>
<p>This method considers the protocol of the client request when forming the proxied request. If it
is HTTP, then the protocol name will not be included in the <code>Via</code> header that is sent by the proxy, and only
the protocol version will be sent. If it is not, the entire protocol (name and version) will be included.
If the client request includes a <code>Via</code> header, the result will be appended to that to form a chain.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>clientRequest</code> - the client request</dd>
<dd><code>proxyRequest</code> - the request being proxied</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://tools.ietf.org/html/rfc7230#section-5.7.1">RFC 7230 section 5.7.1</a></dd>
</dl>
</li>
</ul>
<a id="addXForwardedHeaders(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addXForwardedHeaders</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;addXForwardedHeaders&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</pre>
</li>
</ul>
<a id="sendProxyRequest(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Request)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sendProxyRequest</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;sendProxyRequest&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</pre>
</li>
</ul>
<a id="newProxyResponseListener(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newProxyResponseListener</h4>
<pre class="methodSignature">protected abstract&nbsp;<a href="../client/api/Response.CompleteListener.html" title="interface in org.eclipse.jetty.client.api">Response.CompleteListener</a>&nbsp;newProxyResponseListener&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse)</pre>
</li>
</ul>
<a id="onClientRequestFailure(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request,javax.servlet.http.HttpServletResponse,java.lang.Throwable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onClientRequestFailure</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;onClientRequestFailure&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
java.lang.Throwable&nbsp;failure)</pre>
</li>
</ul>
<a id="clientRequestStatus(java.lang.Throwable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clientRequestStatus</h4>
<pre class="methodSignature">protected&nbsp;int&nbsp;clientRequestStatus&#8203;(java.lang.Throwable&nbsp;failure)</pre>
</li>
</ul>
<a id="onServerResponseHeaders(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onServerResponseHeaders</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;onServerResponseHeaders&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse)</pre>
</li>
</ul>
<a id="filterServerResponseHeader(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Response,java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>filterServerResponseHeader</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;filterServerResponseHeader&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse,
java.lang.String&nbsp;headerName,
java.lang.String&nbsp;headerValue)</pre>
</li>
</ul>
<a id="onProxyResponseSuccess(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onProxyResponseSuccess</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;onProxyResponseSuccess&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse)</pre>
</li>
</ul>
<a id="onProxyResponseFailure(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response,java.lang.Throwable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onProxyResponseFailure</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;onProxyResponseFailure&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse,
java.lang.Throwable&nbsp;failure)</pre>
</li>
</ul>
<a id="proxyResponseStatus(java.lang.Throwable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>proxyResponseStatus</h4>
<pre class="methodSignature">protected&nbsp;int&nbsp;proxyResponseStatus&#8203;(java.lang.Throwable&nbsp;failure)</pre>
</li>
</ul>
<a id="getRequestId(javax.servlet.http.HttpServletRequest)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRequestId</h4>
<pre class="methodSignature">protected&nbsp;int&nbsp;getRequestId&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest)</pre>
</li>
</ul>
<a id="sendProxyResponseError(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sendProxyResponseError</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;sendProxyResponseError&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
javax.servlet.http.HttpServletResponse&nbsp;proxyResponse,
int&nbsp;status)</pre>
</li>
</ul>
<a id="onContinue(javax.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>onContinue</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;onContinue&#8203;(javax.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</pre>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/AbstractProxyServlet.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2021 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>