Package org.eclipse.jetty.proxy
Class BalancerServlet
- java.lang.Object
-
- javax.servlet.GenericServlet
-
- javax.servlet.http.HttpServlet
-
- org.eclipse.jetty.proxy.AbstractProxyServlet
-
- org.eclipse.jetty.proxy.ProxyServlet
-
- org.eclipse.jetty.proxy.BalancerServlet
-
- All Implemented Interfaces:
java.io.Serializable
,javax.servlet.Servlet
,javax.servlet.ServletConfig
public class BalancerServlet extends ProxyServlet
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
BalancerServlet.BalancerMember
-
Nested classes/interfaces inherited from class org.eclipse.jetty.proxy.ProxyServlet
ProxyServlet.ProxyInputStreamContentProvider, ProxyServlet.ProxyResponseListener, ProxyServlet.Transparent
-
Nested classes/interfaces inherited from class org.eclipse.jetty.proxy.AbstractProxyServlet
AbstractProxyServlet.ProxyContinueProtocolHandler, AbstractProxyServlet.TransparentDelegate
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<BalancerServlet.BalancerMember>
_balancerMembers
private boolean
_proxyPassReverse
private boolean
_stickySessions
private static java.lang.String
BALANCER_MEMBER_PREFIX
private java.util.concurrent.atomic.AtomicLong
counter
private static java.util.List<java.lang.String>
FORBIDDEN_CONFIG_PARAMETERS
private static java.lang.String
JSESSIONID
private static java.lang.String
JSESSIONID_URL_PREFIX
private static java.util.List<java.lang.String>
REVERSE_PROXY_HEADERS
-
Fields inherited from class org.eclipse.jetty.proxy.AbstractProxyServlet
_log, CLIENT_REQUEST_ATTRIBUTE, HOP_HEADERS
-
-
Constructor Summary
Constructors Constructor Description BalancerServlet()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.lang.String
extractBalancerMemberNameFromSessionId(java.lang.String sessionId)
protected java.lang.String
filterServerResponseHeader(javax.servlet.http.HttpServletRequest request, Response serverResponse, java.lang.String headerName, java.lang.String headerValue)
private BalancerServlet.BalancerMember
findBalancerMemberByName(java.lang.String name)
private java.lang.String
getBalancerMemberNameFromSessionCookie(javax.servlet.http.HttpServletRequest request)
private java.lang.String
getBalancerMemberNameFromSessionId(javax.servlet.http.HttpServletRequest request)
private java.lang.String
getBalancerMemberNameFromURL(javax.servlet.http.HttpServletRequest request)
private java.util.Set<java.lang.String>
getBalancerNames()
void
init()
private void
initBalancers()
private void
initProxyPassReverse()
private void
initStickySessions()
private boolean
isBackendLocation(java.net.URI locationURI)
protected java.lang.String
rewriteTarget(javax.servlet.http.HttpServletRequest request)
private BalancerServlet.BalancerMember
selectBalancerMember(javax.servlet.http.HttpServletRequest request)
private void
validateConfig()
boolean
validateDestination(java.lang.String host, int port)
Checks the givenhost
andport
against whitelist and blacklist.-
Methods inherited from class org.eclipse.jetty.proxy.ProxyServlet
newProxyResponseListener, onContinue, onResponseContent, proxyRequestContent, service
-
Methods inherited from class org.eclipse.jetty.proxy.AbstractProxyServlet
addProxyHeaders, addViaHeader, addViaHeader, addXForwardedHeaders, clientRequestStatus, copyRequestHeaders, createHttpClient, createLogger, destroy, expects100Continue, findConnectionHeaders, getBlackListHosts, getHostHeader, getHttpClient, getRequestId, getTimeout, getViaHost, getWhiteListHosts, hasContent, newHttpClient, newProxyRequest, onClientRequestFailure, onProxyResponseFailure, onProxyResponseSuccess, onProxyRewriteFailed, onServerResponseHeaders, proxyResponseStatus, sendProxyRequest, sendProxyResponseError, setTimeout
-
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service
-
-
-
-
Field Detail
-
BALANCER_MEMBER_PREFIX
private static final java.lang.String BALANCER_MEMBER_PREFIX
- See Also:
- Constant Field Values
-
FORBIDDEN_CONFIG_PARAMETERS
private static final java.util.List<java.lang.String> FORBIDDEN_CONFIG_PARAMETERS
-
REVERSE_PROXY_HEADERS
private static final java.util.List<java.lang.String> REVERSE_PROXY_HEADERS
-
JSESSIONID
private static final java.lang.String JSESSIONID
- See Also:
- Constant Field Values
-
JSESSIONID_URL_PREFIX
private static final java.lang.String JSESSIONID_URL_PREFIX
- See Also:
- Constant Field Values
-
_balancerMembers
private final java.util.List<BalancerServlet.BalancerMember> _balancerMembers
-
counter
private final java.util.concurrent.atomic.AtomicLong counter
-
_stickySessions
private boolean _stickySessions
-
_proxyPassReverse
private boolean _proxyPassReverse
-
-
Method Detail
-
init
public void init() throws javax.servlet.ServletException
- Overrides:
init
in classAbstractProxyServlet
- Throws:
javax.servlet.ServletException
-
validateConfig
private void validateConfig() throws javax.servlet.ServletException
- Throws:
javax.servlet.ServletException
-
initStickySessions
private void initStickySessions()
-
initBalancers
private void initBalancers() throws javax.servlet.ServletException
- Throws:
javax.servlet.ServletException
-
initProxyPassReverse
private void initProxyPassReverse()
-
getBalancerNames
private java.util.Set<java.lang.String> getBalancerNames() throws javax.servlet.ServletException
- Throws:
javax.servlet.ServletException
-
rewriteTarget
protected java.lang.String rewriteTarget(javax.servlet.http.HttpServletRequest request)
- Overrides:
rewriteTarget
in classAbstractProxyServlet
-
selectBalancerMember
private BalancerServlet.BalancerMember selectBalancerMember(javax.servlet.http.HttpServletRequest request)
-
findBalancerMemberByName
private BalancerServlet.BalancerMember findBalancerMemberByName(java.lang.String name)
-
getBalancerMemberNameFromSessionId
private java.lang.String getBalancerMemberNameFromSessionId(javax.servlet.http.HttpServletRequest request)
-
getBalancerMemberNameFromSessionCookie
private java.lang.String getBalancerMemberNameFromSessionCookie(javax.servlet.http.HttpServletRequest request)
-
getBalancerMemberNameFromURL
private java.lang.String getBalancerMemberNameFromURL(javax.servlet.http.HttpServletRequest request)
-
extractBalancerMemberNameFromSessionId
private java.lang.String extractBalancerMemberNameFromSessionId(java.lang.String sessionId)
-
filterServerResponseHeader
protected java.lang.String filterServerResponseHeader(javax.servlet.http.HttpServletRequest request, Response serverResponse, java.lang.String headerName, java.lang.String headerValue)
- Overrides:
filterServerResponseHeader
in classAbstractProxyServlet
-
isBackendLocation
private boolean isBackendLocation(java.net.URI locationURI)
-
validateDestination
public boolean validateDestination(java.lang.String host, int port)
Description copied from class:AbstractProxyServlet
Checks the givenhost
andport
against whitelist and blacklist.- Overrides:
validateDestination
in classAbstractProxyServlet
- Parameters:
host
- the host to checkport
- the port to check- Returns:
- true if it is allowed to be proxy to the given host and port
-
-