- All Implemented Interfaces:
org.eclipse.jetty.server.Handler
,org.eclipse.jetty.server.Request.Handler
,org.eclipse.jetty.util.component.Container
,org.eclipse.jetty.util.component.Destroyable
,org.eclipse.jetty.util.component.Dumpable
,org.eclipse.jetty.util.component.Dumpable.DumpableContainer
,org.eclipse.jetty.util.component.LifeCycle
,org.eclipse.jetty.util.thread.Invocable
- Direct Known Subclasses:
ProxyHandler.Forward
,ProxyHandler.Reverse
A Handler
that can be used to implement a forward
proxy ("proxy")
or a reverse proxy ("gateway")
as defined by
RFC 7230.
This class uses HttpClient
to send requests from the proxy to the server.
The HttpClient
instance is either
set explicitly
, or created implicitly.
To customize the implicit HttpClient
instance, applications can
override newHttpClient()
and configureHttpClient(HttpClient)
.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
AProxyHandler
that can be used to implement a forward proxy server.protected static class
protected class
static class
AProxyHandler
that can be used to implement a reverse proxy.Nested classes/interfaces inherited from class org.eclipse.jetty.server.Handler.Abstract
org.eclipse.jetty.server.Handler.Abstract.NonBlocking
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener, org.eclipse.jetty.util.component.AbstractLifeCycle.StopException
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container
org.eclipse.jetty.util.component.Container.InheritedListener, org.eclipse.jetty.util.component.Container.Listener
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
org.eclipse.jetty.util.component.Dumpable.DumpableContainer
Nested classes/interfaces inherited from interface org.eclipse.jetty.server.Handler
org.eclipse.jetty.server.Handler.Abstract, org.eclipse.jetty.server.Handler.AbstractContainer, org.eclipse.jetty.server.Handler.Collection, org.eclipse.jetty.server.Handler.Container, org.eclipse.jetty.server.Handler.Sequence, org.eclipse.jetty.server.Handler.Singleton, org.eclipse.jetty.server.Handler.Wrapper
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.thread.Invocable
org.eclipse.jetty.util.thread.Invocable.Callable, org.eclipse.jetty.util.thread.Invocable.InvocationType, org.eclipse.jetty.util.thread.Invocable.ReadyTask, org.eclipse.jetty.util.thread.Invocable.Task
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
org.eclipse.jetty.util.component.LifeCycle.Listener
-
Field Summary
Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
FAILED, STARTED, STARTING, STOPPED, STOPPING
Fields inherited from interface org.eclipse.jetty.util.component.Dumpable
KEY
Fields inherited from interface org.eclipse.jetty.util.thread.Invocable
__nonBlocking, NOOP
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addForwardedHeader
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) protected void
addProxyHeaders
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) protected void
addViaHeader
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) protected void
configureHttpClient
(org.eclipse.jetty.client.HttpClient httpClient) Configures theHttpClient
instance before it is started.protected void
copyRequestHeaders
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) protected void
doStart()
protected org.eclipse.jetty.http.HttpField
filterServerToProxyResponseField
(org.eclipse.jetty.http.HttpField serverToProxyResponseField) org.eclipse.jetty.client.HttpClient
Get the proxy-to-serverHost
header value.Get the value to use for theVia
header.boolean
handle
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback) protected org.eclipse.jetty.client.HttpClient
Creates a newHttpClient
instance, by default with a thread pool namedproxy-client
and with thedynamic transport
configured only with HTTP/1.1.protected org.eclipse.jetty.client.Request
newProxyToServerRequest
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.http.HttpURI newHttpURI) protected org.eclipse.jetty.client.Request.Content
newProxyToServerRequestContent
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.client.Request proxyToServerRequest) protected org.eclipse.jetty.client.Response.CompleteListener
newServerToProxyResponseListener
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback) protected void
onProxyToClientResponseComplete
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.client.Response serverToProxyResponse, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback) protected void
onProxyToClientResponseFailure
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.client.Response serverToProxyResponse, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback, Throwable failure) protected void
onServerToProxyResponse100Continue
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) protected void
onServerToProxyResponse102Processing
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.http.HttpFields serverToProxyResponseHeaders, org.eclipse.jetty.server.Response proxyToClientResponse) protected void
onServerToProxyResponse103EarlyHints
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.http.HttpFields serverToProxyResponseHeaders, org.eclipse.jetty.server.Response proxyToClientResponse) protected void
onServerToProxyResponseFailure
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.client.Response serverToProxyResponse, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback, Throwable failure) protected static String
requestId
(org.eclipse.jetty.server.Request clientToProxyRequest) protected abstract org.eclipse.jetty.http.HttpURI
rewriteHttpURI
(org.eclipse.jetty.server.Request clientToProxyRequest) Rewrites the client-to-proxy request URI to the proxy-to-server request URI.protected void
sendProxyToServerRequest
(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback) void
setHttpClient
(org.eclipse.jetty.client.HttpClient httpClient) void
setProxyToServerHost
(String host) Sets the value to use for theHost
header in proxy-to-server requests.void
setViaHost
(String viaHost) Sets the value to use for theVia
header in proxy-to-server requests.Methods inherited from class org.eclipse.jetty.server.Handler.Abstract
destroy, doStop, getInvocationType, getServer, setServer
Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, dump, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, start, stop, unmanage, updateBean, updateBean, updateBeans, updateBeans
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stop, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.jetty.util.component.Container
getCachedBeans, getEventListeners
Methods inherited from interface org.eclipse.jetty.util.component.Dumpable
dumpSelf
Methods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer
isDumpable
Methods inherited from interface org.eclipse.jetty.util.component.LifeCycle
addEventListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeEventListener, start, stop
-
Constructor Details
-
ProxyHandler
public ProxyHandler()
-
-
Method Details
-
getHttpClient
public org.eclipse.jetty.client.HttpClient getHttpClient() -
setHttpClient
public void setHttpClient(org.eclipse.jetty.client.HttpClient httpClient) -
getProxyToServerHost
Get the proxy-to-serverHost
header value.- Returns:
- the proxy-to-server
Host
header value
-
setProxyToServerHost
Sets the value to use for the
Host
header in proxy-to-server requests.If
null
, the client-to-proxy value is used.- Parameters:
host
- the proxy-to-serverHost
header value
-
getViaHost
Get the value to use for theVia
header.- Returns:
- the value to use for the
Via
header
-
setViaHost
Sets the value to use for the
Via
header in proxy-to-server requests.If
null
, the local host name is used.- Parameters:
viaHost
- the value to use for theVia
header
-
doStart
- Overrides:
doStart
in classorg.eclipse.jetty.server.Handler.Abstract
- Throws:
Exception
-
newHttpClient
protected org.eclipse.jetty.client.HttpClient newHttpClient()Creates a new
HttpClient
instance, by default with a thread pool namedproxy-client
and with thedynamic transport
configured only with HTTP/1.1.- Returns:
- a new
HttpClient
instance
-
configureHttpClient
protected void configureHttpClient(org.eclipse.jetty.client.HttpClient httpClient) Configures the
HttpClient
instance before it is started.- Parameters:
httpClient
- theHttpClient
instance to configure
-
requestId
-
handle
public boolean handle(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback) -
rewriteHttpURI
protected abstract org.eclipse.jetty.http.HttpURI rewriteHttpURI(org.eclipse.jetty.server.Request clientToProxyRequest) Rewrites the client-to-proxy request URI to the proxy-to-server request URI.
- Parameters:
clientToProxyRequest
- the client-to-proxy request- Returns:
- an
HttpURI
for the proxy-to-server request
-
newProxyToServerRequest
protected org.eclipse.jetty.client.Request newProxyToServerRequest(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.http.HttpURI newHttpURI) -
copyRequestHeaders
protected void copyRequestHeaders(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) -
addProxyHeaders
protected void addProxyHeaders(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) -
addViaHeader
protected void addViaHeader(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) -
addForwardedHeader
protected void addForwardedHeader(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) -
newProxyToServerRequestContent
protected org.eclipse.jetty.client.Request.Content newProxyToServerRequestContent(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.client.Request proxyToServerRequest) -
sendProxyToServerRequest
protected void sendProxyToServerRequest(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback) -
newServerToProxyResponseListener
protected org.eclipse.jetty.client.Response.CompleteListener newServerToProxyResponseListener(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback) -
filterServerToProxyResponseField
protected org.eclipse.jetty.http.HttpField filterServerToProxyResponseField(org.eclipse.jetty.http.HttpField serverToProxyResponseField) -
onServerToProxyResponseFailure
protected void onServerToProxyResponseFailure(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.client.Response serverToProxyResponse, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback, Throwable failure) -
onServerToProxyResponse100Continue
protected void onServerToProxyResponse100Continue(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) -
onServerToProxyResponse102Processing
protected void onServerToProxyResponse102Processing(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.http.HttpFields serverToProxyResponseHeaders, org.eclipse.jetty.server.Response proxyToClientResponse) -
onServerToProxyResponse103EarlyHints
protected void onServerToProxyResponse103EarlyHints(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.http.HttpFields serverToProxyResponseHeaders, org.eclipse.jetty.server.Response proxyToClientResponse) -
onProxyToClientResponseComplete
protected void onProxyToClientResponseComplete(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.client.Response serverToProxyResponse, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback) -
onProxyToClientResponseFailure
protected void onProxyToClientResponseFailure(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.client.Response serverToProxyResponse, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback, Throwable failure)
-