blob: ce77bf86ecde31131bc343a647048815697a489c [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) on Thu Sep 15 14:13:16 CDT 2022 -->
<title>AbstractProxyServlet (Eclipse Jetty API Doc - v11.0.12)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2022-09-15">
<meta name="description" content="declaration: package: org.eclipse.jetty.proxy, class: AbstractProxyServlet">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">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#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<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="sub-nav-list">
<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>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.eclipse.jetty.proxy</a></div>
<h1 title="Class AbstractProxyServlet" class="title">Class AbstractProxyServlet</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">jakarta.servlet.GenericServlet
<div class="inheritance">jakarta.servlet.http.HttpServlet
<div class="inheritance">org.eclipse.jetty.proxy.AbstractProxyServlet</div>
</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code>jakarta.servlet.Servlet</code>, <code>jakarta.servlet.ServletConfig</code>, <code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
</dl>
<dl class="notes">
<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>
<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">AbstractProxyServlet</span>
<span class="extends-implements">extends jakarta.servlet.http.HttpServlet</span></div>
<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 class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../serialized-form.html#org.eclipse.jetty.proxy.AbstractProxyServlet">Serialized Form</a></li>
</ul>
</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested-class-summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected static class&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="AbstractProxyServlet.TransparentDelegate.html" class="type-name-link" title="class in org.eclipse.jetty.proxy">AbstractProxyServlet.TransparentDelegate</a></code></div>
<div class="col-last even-row-color">
<div class="block">Utility class that implement transparent proxy functionalities.</div>
</div>
</div>
</section>
</li>
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>protected org.slf4j.Logger</code></div>
<div class="col-second even-row-color"><code><a href="#_log" class="member-name-link">_log</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>protected static final <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color"><code><a href="#CLIENT_REQUEST_ATTRIBUTE" class="member-name-link">CLIENT_REQUEST_ATTRIBUTE</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>protected static final <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#HOP_HEADERS" class="member-name-link">HOP_HEADERS</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">AbstractProxyServlet</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addProxyHeaders(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)" class="member-name-link">addProxyHeaders</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addViaHeader(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)" class="member-name-link">addViaHeader</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Adds the HTTP <code>Via</code> header to the proxied request, taking into account data present in the client request.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addViaHeader(org.eclipse.jetty.client.api.Request)" class="member-name-link">addViaHeader</a><wbr>(<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Adds the HTTP <code>Via</code> header to the proxied request.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addXForwardedHeaders(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)" class="member-name-link">addXForwardedHeaders</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#clientRequestStatus(java.lang.Throwable)" class="member-name-link">clientRequestStatus</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;failure)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#copyRequestHeaders(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)" class="member-name-link">copyRequestHeaders</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createHttpClient()" class="member-name-link">createHttpClient</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<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>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.slf4j.Logger</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createLogger()" class="member-name-link">createLogger</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#destroy()" class="member-name-link">destroy</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#expects100Continue(jakarta.servlet.http.HttpServletRequest)" class="member-name-link">expects100Continue</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;request)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#filterServerResponseHeader(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Response,java.lang.String,java.lang.String)" class="member-name-link">filterServerResponseHeader</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;headerName,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;headerValue)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#findConnectionHeaders(jakarta.servlet.http.HttpServletRequest)" class="member-name-link">findConnectionHeaders</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBlackListHosts()" class="member-name-link">getBlackListHosts</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getHostHeader()" class="member-name-link">getHostHeader</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getHttpClient()" class="member-name-link">getHttpClient</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRequestId(jakarta.servlet.http.HttpServletRequest)" class="member-name-link">getRequestId</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTimeout()" class="member-name-link">getTimeout</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getViaHost()" class="member-name-link">getViaHost</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWhiteListHosts()" class="member-name-link">getWhiteListHosts</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hasContent(jakarta.servlet.http.HttpServletRequest)" class="member-name-link">hasContent</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#init()" class="member-name-link">init</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../io/ClientConnector.html" title="class in org.eclipse.jetty.io">ClientConnector</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#newClientConnector()" class="member-name-link">newClientConnector</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#newHttpClient()" class="member-name-link">newHttpClient</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">The servlet init parameter 'selectors' can be set for the number of
selector threads to be used by the HttpClient.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#newHttpClient(org.eclipse.jetty.io.ClientConnector)" class="member-name-link">newHttpClient</a><wbr>(<a href="../io/ClientConnector.html" title="class in org.eclipse.jetty.io">ClientConnector</a>&nbsp;clientConnector)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#newProxyRequest(jakarta.servlet.http.HttpServletRequest,java.lang.String)" class="member-name-link">newProxyRequest</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;request,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;rewrittenTarget)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>protected abstract <a href="../client/api/Response.CompleteListener.html" title="interface in org.eclipse.jetty.client.api">Response.CompleteListener</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#newProxyResponseListener(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse)" class="member-name-link">newProxyResponseListener</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onClientRequestFailure(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request,jakarta.servlet.http.HttpServletResponse,java.lang.Throwable)" class="member-name-link">onClientRequestFailure</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;failure)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onContinue(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)" class="member-name-link">onContinue</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onProxyResponseFailure(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response,java.lang.Throwable)" class="member-name-link">onProxyResponseFailure</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;failure)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onProxyResponseSuccess(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response)" class="member-name-link">onProxyResponseSuccess</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onProxyRewriteFailed(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse)" class="member-name-link">onProxyRewriteFailed</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Callback method invoked when the URI rewrite performed
in <a href="#rewriteTarget(jakarta.servlet.http.HttpServletRequest)"><code>rewriteTarget(HttpServletRequest)</code></a> returns null
indicating that no rewrite can be performed.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onServerResponseHeaders(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response)" class="member-name-link">onServerResponseHeaders</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#proxyResponseStatus(java.lang.Throwable)" class="member-name-link">proxyResponseStatus</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;failure)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#rewriteTarget(jakarta.servlet.http.HttpServletRequest)" class="member-name-link">rewriteTarget</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sendProxyRequest(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Request)" class="member-name-link">sendProxyRequest</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sendProxyResponseError(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse,int)" class="member-name-link">sendProxyResponseError</a><wbr>(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
int&nbsp;status)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setTimeout(long)" class="member-name-link">setTimeout</a><wbr>(long&nbsp;timeout)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateDestination(java.lang.String,int)" class="member-name-link">validateDestination</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;host,
int&nbsp;port)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Checks the given <code>host</code> and <code>port</code> against whitelist and blacklist.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-jakarta.servlet.http.HttpServlet">Methods inherited from class&nbsp;jakarta.servlet.http.HttpServlet</h3>
<code>doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service, service</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-jakarta.servlet.GenericServlet">Methods inherited from class&nbsp;jakarta.servlet.GenericServlet</h3>
<code>getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="CLIENT_REQUEST_ATTRIBUTE">
<h3>CLIENT_REQUEST_ATTRIBUTE</h3>
<div class="member-signature"><span class="modifiers">protected static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CLIENT_REQUEST_ATTRIBUTE</span></div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="../../../../constant-values.html#org.eclipse.jetty.proxy.AbstractProxyServlet.CLIENT_REQUEST_ATTRIBUTE">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="HOP_HEADERS">
<h3>HOP_HEADERS</h3>
<div class="member-signature"><span class="modifiers">protected static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">HOP_HEADERS</span></div>
</section>
</li>
<li>
<section class="detail" id="_log">
<h3>_log</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">org.slf4j.Logger</span>&nbsp;<span class="element-name">_log</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>AbstractProxyServlet</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AbstractProxyServlet</span>()</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="init()">
<h3>init</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">init</span>()
throws <span class="exceptions">jakarta.servlet.ServletException</span></div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code>init</code>&nbsp;in class&nbsp;<code>jakarta.servlet.GenericServlet</code></dd>
<dt>Throws:</dt>
<dd><code>jakarta.servlet.ServletException</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="destroy()">
<h3>destroy</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">destroy</span>()</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code>destroy</code>&nbsp;in interface&nbsp;<code>jakarta.servlet.Servlet</code></dd>
<dt>Overrides:</dt>
<dd><code>destroy</code>&nbsp;in class&nbsp;<code>jakarta.servlet.GenericServlet</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getHostHeader()">
<h3>getHostHeader</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getHostHeader</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getViaHost()">
<h3>getViaHost</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getViaHost</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getTimeout()">
<h3>getTimeout</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getTimeout</span>()</div>
</section>
</li>
<li>
<section class="detail" id="setTimeout(long)">
<h3>setTimeout</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setTimeout</span><wbr><span class="parameters">(long&nbsp;timeout)</span></div>
</section>
</li>
<li>
<section class="detail" id="getWhiteListHosts()">
<h3>getWhiteListHosts</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">getWhiteListHosts</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getBlackListHosts()">
<h3>getBlackListHosts</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">getBlackListHosts</span>()</div>
</section>
</li>
<li>
<section class="detail" id="createLogger()">
<h3>createLogger</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">org.slf4j.Logger</span>&nbsp;<span class="element-name">createLogger</span>()</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>a logger instance with a name derived from this servlet's name.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="createHttpClient()">
<h3>createHttpClient</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a></span>&nbsp;<span class="element-name">createHttpClient</span>()
throws <span class="exceptions">jakarta.servlet.ServletException</span></div>
<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 class="notes">
<dt>Returns:</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>Throws:</dt>
<dd><code>jakarta.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>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="#newHttpClient()"><code>newHttpClient()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="newHttpClient()">
<h3>newHttpClient</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a></span>&nbsp;<span class="element-name">newHttpClient</span>()</div>
<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 class="notes">
<dt>Returns:</dt>
<dd>a new HttpClient instance</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="newHttpClient(org.eclipse.jetty.io.ClientConnector)">
<h3>newHttpClient</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a></span>&nbsp;<span class="element-name">newHttpClient</span><wbr><span class="parameters">(<a href="../io/ClientConnector.html" title="class in org.eclipse.jetty.io">ClientConnector</a>&nbsp;clientConnector)</span></div>
</section>
</li>
<li>
<section class="detail" id="newClientConnector()">
<h3>newClientConnector</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../io/ClientConnector.html" title="class in org.eclipse.jetty.io">ClientConnector</a></span>&nbsp;<span class="element-name">newClientConnector</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getHttpClient()">
<h3>getHttpClient</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../client/HttpClient.html" title="class in org.eclipse.jetty.client">HttpClient</a></span>&nbsp;<span class="element-name">getHttpClient</span>()</div>
</section>
</li>
<li>
<section class="detail" id="validateDestination(java.lang.String,int)">
<h3>validateDestination</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">validateDestination</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;host,
int&nbsp;port)</span></div>
<div class="block">Checks the given <code>host</code> and <code>port</code> against whitelist and blacklist.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>host</code> - the host to check</dd>
<dd><code>port</code> - the port to check</dd>
<dt>Returns:</dt>
<dd>true if it is allowed to be proxy to the given host and port</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="rewriteTarget(jakarta.servlet.http.HttpServletRequest)">
<h3>rewriteTarget</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">rewriteTarget</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest)</span></div>
</section>
</li>
<li>
<section class="detail" id="onProxyRewriteFailed(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse)">
<h3>onProxyRewriteFailed</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onProxyRewriteFailed</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse)</span></div>
<div class="block"><p>Callback method invoked when the URI rewrite performed
in <a href="#rewriteTarget(jakarta.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 class="notes">
<dt>Parameters:</dt>
<dd><code>clientRequest</code> - the client request</dd>
<dd><code>proxyResponse</code> - the client response</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="hasContent(jakarta.servlet.http.HttpServletRequest)">
<h3>hasContent</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">hasContent</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest)</span></div>
</section>
</li>
<li>
<section class="detail" id="expects100Continue(jakarta.servlet.http.HttpServletRequest)">
<h3>expects100Continue</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">expects100Continue</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;request)</span></div>
</section>
</li>
<li>
<section class="detail" id="newProxyRequest(jakarta.servlet.http.HttpServletRequest,java.lang.String)">
<h3>newProxyRequest</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a></span>&nbsp;<span class="element-name">newProxyRequest</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;request,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;rewrittenTarget)</span></div>
</section>
</li>
<li>
<section class="detail" id="copyRequestHeaders(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">
<h3>copyRequestHeaders</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">copyRequestHeaders</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</span></div>
</section>
</li>
<li>
<section class="detail" id="findConnectionHeaders(jakarta.servlet.http.HttpServletRequest)">
<h3>findConnectionHeaders</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">findConnectionHeaders</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest)</span></div>
</section>
</li>
<li>
<section class="detail" id="addProxyHeaders(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">
<h3>addProxyHeaders</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addProxyHeaders</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</span></div>
</section>
</li>
<li>
<section class="detail" id="addViaHeader(org.eclipse.jetty.client.api.Request)">
<h3>addViaHeader</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addViaHeader</span><wbr><span class="parameters">(<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</span></div>
<div class="block">Adds the HTTP <code>Via</code> header to the proxied request.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>proxyRequest</code> - the request being proxied</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="#addViaHeader(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)"><code>addViaHeader(HttpServletRequest, Request)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="addViaHeader(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">
<h3>addViaHeader</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addViaHeader</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</span></div>
<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 class="notes">
<dt>Parameters:</dt>
<dd><code>clientRequest</code> - the client request</dd>
<dd><code>proxyRequest</code> - the request being proxied</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list">
<li><a href="https://tools.ietf.org/html/rfc7230#section-5.7.1">RFC 7230 section 5.7.1</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="addXForwardedHeaders(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">
<h3>addXForwardedHeaders</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addXForwardedHeaders</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</span></div>
</section>
</li>
<li>
<section class="detail" id="sendProxyRequest(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Request)">
<h3>sendProxyRequest</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendProxyRequest</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</span></div>
</section>
</li>
<li>
<section class="detail" id="newProxyResponseListener(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse)">
<h3>newProxyResponseListener</h3>
<div class="member-signature"><span class="modifiers">protected abstract</span>&nbsp;<span class="return-type"><a href="../client/api/Response.CompleteListener.html" title="interface in org.eclipse.jetty.client.api">Response.CompleteListener</a></span>&nbsp;<span class="element-name">newProxyResponseListener</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse)</span></div>
</section>
</li>
<li>
<section class="detail" id="onClientRequestFailure(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request,jakarta.servlet.http.HttpServletResponse,java.lang.Throwable)">
<h3>onClientRequestFailure</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onClientRequestFailure</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;failure)</span></div>
</section>
</li>
<li>
<section class="detail" id="clientRequestStatus(java.lang.Throwable)">
<h3>clientRequestStatus</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">clientRequestStatus</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;failure)</span></div>
</section>
</li>
<li>
<section class="detail" id="onServerResponseHeaders(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response)">
<h3>onServerResponseHeaders</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onServerResponseHeaders</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse)</span></div>
</section>
</li>
<li>
<section class="detail" id="filterServerResponseHeader(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Response,java.lang.String,java.lang.String)">
<h3>filterServerResponseHeader</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">filterServerResponseHeader</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;headerName,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;headerValue)</span></div>
</section>
</li>
<li>
<section class="detail" id="onProxyResponseSuccess(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response)">
<h3>onProxyResponseSuccess</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onProxyResponseSuccess</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse)</span></div>
</section>
</li>
<li>
<section class="detail" id="onProxyResponseFailure(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse,org.eclipse.jetty.client.api.Response,java.lang.Throwable)">
<h3>onProxyResponseFailure</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onProxyResponseFailure</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
<a href="../client/api/Response.html" title="interface in org.eclipse.jetty.client.api">Response</a>&nbsp;serverResponse,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;failure)</span></div>
</section>
</li>
<li>
<section class="detail" id="proxyResponseStatus(java.lang.Throwable)">
<h3>proxyResponseStatus</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">proxyResponseStatus</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;failure)</span></div>
</section>
</li>
<li>
<section class="detail" id="getRequestId(jakarta.servlet.http.HttpServletRequest)">
<h3>getRequestId</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getRequestId</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest)</span></div>
</section>
</li>
<li>
<section class="detail" id="sendProxyResponseError(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse,int)">
<h3>sendProxyResponseError</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">sendProxyResponseError</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
jakarta.servlet.http.HttpServletResponse&nbsp;proxyResponse,
int&nbsp;status)</span></div>
</section>
</li>
<li>
<section class="detail" id="onContinue(jakarta.servlet.http.HttpServletRequest,org.eclipse.jetty.client.api.Request)">
<h3>onContinue</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onContinue</span><wbr><span class="parameters">(jakarta.servlet.http.HttpServletRequest&nbsp;clientRequest,
<a href="../client/api/Request.html" title="interface in org.eclipse.jetty.client.api">Request</a>&nbsp;proxyRequest)</span></div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 1995&#x2013;2022 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>