Handler, HandlerContainer, Container, Destroyable, Dumpable, LifeCyclepublic class ThreadLimitHandler extends HandlerWrapper
Handler to limit the threads per IP address for DOS protection
The ThreadLimitHandler applies a limit to the number of Threads that can be used simultaneously per remote IP address.
The handler makes a determination of the remote IP separately to
any that may be made by the ForwardedRequestCustomizer or similar:
This is a simpler alternative to DosFilter
AbstractHandler.ErrorDispatchHandlerAbstractLifeCycle.AbstractLifeCycleListenerContainer.InheritedListener, Container.ListenerLifeCycle.ListenerFAILED, RUNNING, STARTED, STARTING, STOP_ON_FAILURE, STOPPED, STOPPING_handler| Constructor | Description |
|---|---|
ThreadLimitHandler() |
|
ThreadLimitHandler(java.lang.String forwardedHeader) |
|
ThreadLimitHandler(java.lang.String forwardedHeader,
boolean rfc7239) |
| Modifier and Type | Method | Description |
|---|---|---|
protected void |
doStart() |
|
void |
exclude(java.lang.String inetAddressPattern) |
|
protected org.eclipse.jetty.server.handler.ThreadLimitHandler.Remote |
getRemote(Request baseRequest) |
|
protected java.lang.String |
getRemoteIP(Request baseRequest) |
|
int |
getThreadLimit() |
|
protected int |
getThreadLimit(java.lang.String ip) |
|
void |
handle(java.lang.String target,
Request baseRequest,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) |
Handle a request.
|
void |
include(java.lang.String inetAddressPattern) |
|
boolean |
isEnabled() |
|
void |
setEnabled(boolean enabled) |
|
void |
setThreadLimit(int threadLimit) |
doError, doStop, dumpThis, getServerexpandHandler, findContainerOf, getChildHandlerByClass, getChildHandlers, getChildHandlersByClass, setServeraddLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stopaddBean, addBean, addBean, addEventListener, addManaged, contains, dump, dump, dump, dump, dump, dumpBeans, dumpObject, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isManaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeansdestroy, expandChildren, getHandler, getHandlers, insertHandler, setHandleraddLifeCycleListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, start, stop, stoppublic ThreadLimitHandler()
public ThreadLimitHandler(@Name("forwardedHeader") java.lang.String forwardedHeader)
protected void doStart()
throws java.lang.Exception
doStart in class AbstractHandlerjava.lang.Exception@ManagedAttribute("true if this handler is enabled") public boolean isEnabled()
public void setEnabled(boolean enabled)
@ManagedAttribute("The maximum threads that can be dispatched per remote IP") public int getThreadLimit()
public void setThreadLimit(int threadLimit)
@ManagedOperation("Include IP in thread limits") public void include(java.lang.String inetAddressPattern)
@ManagedOperation("Exclude IP from thread limits") public void exclude(java.lang.String inetAddressPattern)
public void handle(java.lang.String target,
Request baseRequest,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws java.io.IOException,
javax.servlet.ServletException
Handlerhandle in interface Handlerhandle in class HandlerWrappertarget - The target of the request - either a URI or a name.baseRequest - The original unwrapped request object.request - The request either as the Request object or a wrapper of that request. The
HttpConnection.getCurrentConnection().getHttpChannel().getRequest()
method can be used access the Request object if required.response - The response as the Response object or a wrapper of that request. The
HttpConnection.getCurrentConnection().getHttpChannel().getResponse()
method can be used access the Response object if required.java.io.IOException - if unable to handle the request or response processingjavax.servlet.ServletException - if unable to handle the request or response due to underlying servlet issueprotected int getThreadLimit(java.lang.String ip)
protected org.eclipse.jetty.server.handler.ThreadLimitHandler.Remote getRemote(Request baseRequest)
protected java.lang.String getRemoteIP(Request baseRequest)
Copyright © 1995–2018 Webtide. All rights reserved.