Class AcceptRateLimit

  • All Implemented Interfaces:
    java.lang.Runnable, java.util.EventListener, org.eclipse.jetty.io.SelectorManager.AcceptListener, org.eclipse.jetty.util.component.LifeCycle

    @ManagedObject
    public class AcceptRateLimit
    extends org.eclipse.jetty.util.component.AbstractLifeCycle
    implements org.eclipse.jetty.io.SelectorManager.AcceptListener, java.lang.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:
    SelectorManager.AcceptListener
    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

        org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener
      • Nested 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, RUNNING, STARTED, STARTING, STOPPED, STOPPING
    • Constructor Summary

      Constructors 
      Constructor Description
      AcceptRateLimit​(int limit, long period, java.util.concurrent.TimeUnit units, Connector... connectors)  
      AcceptRateLimit​(int acceptRateLimit, long period, java.util.concurrent.TimeUnit units, Server server)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void age​(long period, java.util.concurrent.TimeUnit units)  
      protected void doStart()  
      protected void doStop()  
      int getAcceptRateLimit()  
      long getMaxRate()  
      long getPeriod()  
      int getRate()  
      java.util.concurrent.TimeUnit getUnits()  
      protected void limit()  
      void onAccepting​(java.nio.channels.SelectableChannel channel)  
      void reset()  
      void run()  
      protected void unlimit()  
      • Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

        addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, setStopTimeout, 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 Detail

      • AcceptRateLimit

        public AcceptRateLimit​(@Name("acceptRateLimit")
                               int acceptRateLimit,
                               @Name("period")
                               long period,
                               @Name("units")
                               java.util.concurrent.TimeUnit units,
                               @Name("server")
                               Server server)
      • AcceptRateLimit

        public AcceptRateLimit​(@Name("limit")
                               int limit,
                               @Name("period")
                               long period,
                               @Name("units")
                               java.util.concurrent.TimeUnit units,
                               @Name("connectors")
                               Connector... connectors)
    • Method Detail

      • getAcceptRateLimit

        @ManagedAttribute("The accept rate limit")
        public int getAcceptRateLimit()
      • getPeriod

        @ManagedAttribute("The accept rate period")
        public long getPeriod()
      • getUnits

        @ManagedAttribute("The accept rate period units")
        public java.util.concurrent.TimeUnit getUnits()
      • getRate

        @ManagedAttribute("The current accept rate")
        public int getRate()
      • getMaxRate

        @ManagedAttribute("The maximum accept rate achieved")
        public long getMaxRate()
      • reset

        @ManagedOperation(value="Resets the accept rate",
                          impact="ACTION")
        public void reset()
      • age

        protected void age​(long period,
                           java.util.concurrent.TimeUnit units)
      • doStart

        protected void doStart()
                        throws java.lang.Exception
        Overrides:
        doStart in class org.eclipse.jetty.util.component.AbstractLifeCycle
        Throws:
        java.lang.Exception
      • doStop

        protected void doStop()
                       throws java.lang.Exception
        Overrides:
        doStop in class org.eclipse.jetty.util.component.AbstractLifeCycle
        Throws:
        java.lang.Exception
      • limit

        protected void limit()
      • unlimit

        protected void unlimit()
      • onAccepting

        public void onAccepting​(java.nio.channels.SelectableChannel channel)
        Specified by:
        onAccepting in interface org.eclipse.jetty.io.SelectorManager.AcceptListener
      • run

        public void run()
        Specified by:
        run in interface java.lang.Runnable