Apache Tomcat 7.0.28

org.apache.catalina.valves
Class SemaphoreValve

java.lang.Object
  extended by org.apache.catalina.util.LifecycleBase
      extended by org.apache.catalina.util.LifecycleMBeanBase
          extended by org.apache.catalina.valves.ValveBase
              extended by org.apache.catalina.valves.SemaphoreValve
All Implemented Interfaces:
MBeanRegistration, Contained, Lifecycle, Valve

public class SemaphoreValve
extends ValveBase

Implementation of a Valve that limits concurrency.

This Valve may be attached to any Container, depending on the granularity of the concurrency control you wish to perform. Note that internally, some async requests may require multiple serial requests to complete what - to the user - appears as a single request.

Version:
$Id: SemaphoreValve.java 1187022 2011-10-20 19:55:37Z markt $
Author:
Remy Maucherat

Field Summary
protected  boolean block
          Block until a permit is available.
protected  int concurrency
          Concurrency level of the semaphore.
protected  boolean fairness
          Fairness of the semaphore.
protected  boolean interruptible
          Block interruptibly until a permit is available.
protected  Semaphore semaphore
          Semaphore.
 
Fields inherited from class org.apache.catalina.valves.ValveBase
asyncSupported, container, containerLog, next, sm
 
Fields inherited from class org.apache.catalina.util.LifecycleMBeanBase
mserver
 
Fields inherited from interface org.apache.catalina.Lifecycle
AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
 
Constructor Summary
SemaphoreValve()
           
 
Method Summary
 boolean controlConcurrency(Request request, Response response)
          Subclass friendly method to add conditions.
 boolean getBlock()
           
 int getConcurrency()
           
 boolean getFairness()
           
 String getInfo()
          Return descriptive information about this Valve implementation.
 boolean getInterruptible()
           
 void invoke(Request request, Response response)
          Do concurrency control on the request using the semaphore.
 void permitDenied(Request request, Response response)
          Subclass friendly method to add error handling when a permit isn't granted.
 void setBlock(boolean block)
           
 void setConcurrency(int concurrency)
           
 void setFairness(boolean fairness)
           
 void setInterruptible(boolean interruptible)
           
protected  void startInternal()
          Start this component and implement the requirements of LifecycleBase.startInternal().
protected  void stopInternal()
          Stop this component and implement the requirements of LifecycleBase.stopInternal().
 
Methods inherited from class org.apache.catalina.valves.ValveBase
backgroundProcess, event, getContainer, getDomainInternal, getNext, getObjectNameKeyProperties, initInternal, isAsyncSupported, setAsyncSupported, setContainer, setNext, toString
 
Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase
destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister
 
Methods inherited from class org.apache.catalina.util.LifecycleBase
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, init, removeLifecycleListener, setState, setState, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

semaphore

protected Semaphore semaphore
Semaphore.


concurrency

protected int concurrency
Concurrency level of the semaphore.


fairness

protected boolean fairness
Fairness of the semaphore.


block

protected boolean block
Block until a permit is available.


interruptible

protected boolean interruptible
Block interruptibly until a permit is available.

Constructor Detail

SemaphoreValve

public SemaphoreValve()
Method Detail

getConcurrency

public int getConcurrency()

setConcurrency

public void setConcurrency(int concurrency)

getFairness

public boolean getFairness()

setFairness

public void setFairness(boolean fairness)

getBlock

public boolean getBlock()

setBlock

public void setBlock(boolean block)

getInterruptible

public boolean getInterruptible()

setInterruptible

public void setInterruptible(boolean interruptible)

startInternal

protected void startInternal()
                      throws LifecycleException
Start this component and implement the requirements of LifecycleBase.startInternal().

Overrides:
startInternal in class ValveBase
Throws:
LifecycleException - if this component detects a fatal error that prevents this component from being used

stopInternal

protected void stopInternal()
                     throws LifecycleException
Stop this component and implement the requirements of LifecycleBase.stopInternal().

Overrides:
stopInternal in class ValveBase
Throws:
LifecycleException - if this component detects a fatal error that prevents this component from being used

getInfo

public String getInfo()
Return descriptive information about this Valve implementation.

Specified by:
getInfo in interface Valve
Overrides:
getInfo in class ValveBase

invoke

public void invoke(Request request,
                   Response response)
            throws IOException,
                   ServletException
Do concurrency control on the request using the semaphore.

Specified by:
invoke in interface Valve
Specified by:
invoke in class ValveBase
Parameters:
request - The servlet request to be processed
response - The servlet response to be created
Throws:
IOException - if an input/output error occurs
ServletException - if a servlet error occurs

controlConcurrency

public boolean controlConcurrency(Request request,
                                  Response response)
Subclass friendly method to add conditions.

Parameters:
request -
response -

permitDenied

public void permitDenied(Request request,
                         Response response)
                  throws IOException,
                         ServletException
Subclass friendly method to add error handling when a permit isn't granted.

Parameters:
request -
response -
Throws:
IOException
ServletException

Apache Tomcat 7.0.28

Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.