Package org.eclipse.jetty.server
Class AcceptRateLimit
java.lang.Object
org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.server.AcceptRateLimit
- All Implemented Interfaces:
Runnable
,EventListener
,SelectorManager.AcceptListener
,SelectorManager.SelectorManagerListener
,LifeCycle
@ManagedObject
public class AcceptRateLimit
extends AbstractLifeCycle
implements SelectorManager.AcceptListener, Runnable
A Listener that limits the rate at which new connections are accepted
If the limits are exceeded, accepting is suspended until the rate is again below the limit, so incoming connections are held in the operating system accept queue (no syn ack sent), where they may either timeout or wait for the server to resume accepting.
It can be applied to an entire server or to a specific connector by adding it
via Container.addBean(Object)
Usage:
Server server = new Server(); server.addBean(new AcceptLimit(100,5,TimeUnit.SECONDS,server)); ... server.start();
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener, AbstractLifeCycle.StopException
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
-
Field Summary
-
Constructor Summary
ConstructorDescriptionAcceptRateLimit
(int limit, long period, TimeUnit units, Connector... connectors) AcceptRateLimit
(int acceptRateLimit, long period, TimeUnit units, Server server) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
protected void
doStart()
Method to override to start the lifecycleprotected void
doStop()
Method to override to stop the lifecycleint
long
long
int
getRate()
getUnits()
protected void
limit()
void
onAccepting
(SelectableChannel channel) Called immediately after a new SelectableChannel is accepted, but before it has been submitted to theSelectorManager
.void
reset()
void
run()
protected void
unlimit()
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
addEventListener, getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeEventListener, 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.io.SelectorManager.AcceptListener
onAccepted, onAcceptFailed
-
Constructor Details
-
AcceptRateLimit
-
AcceptRateLimit
-
-
Method Details
-
getAcceptRateLimit
-
getPeriod
-
getUnits
-
getRate
-
getMaxRate
-
reset
-
age
-
doStart
Description copied from class:AbstractLifeCycle
Method to override to start the lifecycle- Overrides:
doStart
in classAbstractLifeCycle
- Throws:
AbstractLifeCycle.StopException
- If thrown, the lifecycle will immediately be stopped.Exception
- If there was a problem starting. Will cause a transition to FAILED state
-
doStop
Description copied from class:AbstractLifeCycle
Method to override to stop the lifecycle- Overrides:
doStop
in classAbstractLifeCycle
- Throws:
Exception
- If there was a problem stopping. Will cause a transition to FAILED state
-
limit
protected void limit() -
unlimit
protected void unlimit() -
onAccepting
Description copied from interface:SelectorManager.AcceptListener
Called immediately after a new SelectableChannel is accepted, but before it has been submitted to theSelectorManager
.- Specified by:
onAccepting
in interfaceSelectorManager.AcceptListener
- Parameters:
channel
- the accepted channel
-
run
public void run()
-