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 classBalancerServlet.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>_balancerMembersprivate boolean_proxyPassReverseprivate boolean_stickySessionsprivate static java.lang.StringBALANCER_MEMBER_PREFIXprivate java.util.concurrent.atomic.AtomicLongcounterprivate static java.util.List<java.lang.String>FORBIDDEN_CONFIG_PARAMETERSprivate static java.lang.StringJSESSIONIDprivate static java.lang.StringJSESSIONID_URL_PREFIXprivate 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.StringextractBalancerMemberNameFromSessionId(java.lang.String sessionId)protected java.lang.StringfilterServerResponseHeader(javax.servlet.http.HttpServletRequest request, Response serverResponse, java.lang.String headerName, java.lang.String headerValue)private BalancerServlet.BalancerMemberfindBalancerMemberByName(java.lang.String name)private java.lang.StringgetBalancerMemberNameFromSessionCookie(javax.servlet.http.HttpServletRequest request)private java.lang.StringgetBalancerMemberNameFromSessionId(javax.servlet.http.HttpServletRequest request)private java.lang.StringgetBalancerMemberNameFromURL(javax.servlet.http.HttpServletRequest request)private java.util.Set<java.lang.String>getBalancerNames()voidinit()private voidinitBalancers()private voidinitProxyPassReverse()private voidinitStickySessions()private booleanisBackendLocation(java.net.URI locationURI)protected java.lang.StringrewriteTarget(javax.servlet.http.HttpServletRequest request)private BalancerServlet.BalancerMemberselectBalancerMember(javax.servlet.http.HttpServletRequest request)private voidvalidateConfig()booleanvalidateDestination(java.lang.String host, int port)Checks the givenhostandportagainst 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:
initin 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:
rewriteTargetin 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:
filterServerResponseHeaderin classAbstractProxyServlet
-
isBackendLocation
private boolean isBackendLocation(java.net.URI locationURI)
-
validateDestination
public boolean validateDestination(java.lang.String host, int port)Description copied from class:AbstractProxyServletChecks the givenhostandportagainst whitelist and blacklist.- Overrides:
validateDestinationin 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
-
-