- 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 classAProxyHandlerthat can be used to implement a forward proxy server.protected static classprotected classstatic classAProxyHandlerthat 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.NonBlockingNested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener, org.eclipse.jetty.util.component.AbstractLifeCycle.StopExceptionNested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container
org.eclipse.jetty.util.component.Container.InheritedListener, org.eclipse.jetty.util.component.Container.ListenerNested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
org.eclipse.jetty.util.component.Dumpable.DumpableContainerNested 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.WrapperNested 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.TaskNested 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, STOPPINGFields inherited from interface org.eclipse.jetty.util.component.Dumpable
KEYFields inherited from interface org.eclipse.jetty.util.thread.Invocable
__nonBlocking, NOOP -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddForwardedHeader(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) protected voidaddProxyHeaders(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) protected voidaddViaHeader(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) protected voidconfigureHttpClient(org.eclipse.jetty.client.HttpClient httpClient) Configures theHttpClientinstance before it is started.protected voidcopyRequestHeaders(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) protected voiddoStart()protected org.eclipse.jetty.http.HttpFieldfilterServerToProxyResponseField(org.eclipse.jetty.http.HttpField serverToProxyResponseField) org.eclipse.jetty.client.HttpClientGet the proxy-to-serverHostheader value.Get the value to use for theViaheader.booleanhandle(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback) protected org.eclipse.jetty.client.HttpClientCreates a newHttpClientinstance, by default with a thread pool namedproxy-clientand with thedynamic transportconfigured only with HTTP/1.1.protected org.eclipse.jetty.client.RequestnewProxyToServerRequest(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.http.HttpURI newHttpURI) protected org.eclipse.jetty.client.Request.ContentnewProxyToServerRequestContent(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.client.Request proxyToServerRequest) protected org.eclipse.jetty.client.Response.CompleteListenernewServerToProxyResponseListener(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 voidonProxyToClientResponseComplete(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 voidonProxyToClientResponseFailure(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 voidonServerToProxyResponse100Continue(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest) protected voidonServerToProxyResponse102Processing(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 voidonServerToProxyResponse103EarlyHints(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 voidonServerToProxyResponseFailure(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 StringrequestId(org.eclipse.jetty.server.Request clientToProxyRequest) protected abstract org.eclipse.jetty.http.HttpURIrewriteHttpURI(org.eclipse.jetty.server.Request clientToProxyRequest) Rewrites the client-to-proxy request URI to the proxy-to-server request URI.protected voidsendProxyToServerRequest(org.eclipse.jetty.server.Request clientToProxyRequest, org.eclipse.jetty.client.Request proxyToServerRequest, org.eclipse.jetty.server.Response proxyToClientResponse, org.eclipse.jetty.util.Callback proxyToClientCallback) voidsetHttpClient(org.eclipse.jetty.client.HttpClient httpClient) voidsetProxyToServerHost(String host) Sets the value to use for theHostheader in proxy-to-server requests.voidsetViaHost(String viaHost) Sets the value to use for theViaheader in proxy-to-server requests.Methods inherited from class org.eclipse.jetty.server.Handler.Abstract
destroy, doStop, getInvocationType, getServer, setServerMethods 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, updateBeansMethods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stop, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.jetty.util.component.Container
getCachedBeans, getEventListenersMethods inherited from interface org.eclipse.jetty.util.component.Dumpable
dumpSelfMethods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer
isDumpableMethods 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-serverHostheader value.- Returns:
- the proxy-to-server
Hostheader value
-
setProxyToServerHost
Sets the value to use for the
Hostheader in proxy-to-server requests.If
null, the client-to-proxy value is used.- Parameters:
host- the proxy-to-serverHostheader value
-
getViaHost
Get the value to use for theViaheader.- Returns:
- the value to use for the
Viaheader
-
setViaHost
Sets the value to use for the
Viaheader in proxy-to-server requests.If
null, the local host name is used.- Parameters:
viaHost- the value to use for theViaheader
-
doStart
- Overrides:
doStartin classorg.eclipse.jetty.server.Handler.Abstract- Throws:
Exception
-
newHttpClient
protected org.eclipse.jetty.client.HttpClient newHttpClient()Creates a new
HttpClientinstance, by default with a thread pool namedproxy-clientand with thedynamic transportconfigured only with HTTP/1.1.- Returns:
- a new
HttpClientinstance
-
configureHttpClient
protected void configureHttpClient(org.eclipse.jetty.client.HttpClient httpClient) Configures the
HttpClientinstance before it is started.- Parameters:
httpClient- theHttpClientinstance 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
HttpURIfor 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)
-