Package org.apache.catalina.valves
Class SemaphoreValve
java.lang.Object
org.apache.catalina.util.LifecycleBase
org.apache.catalina.util.LifecycleMBeanBase
org.apache.catalina.valves.ValveBase
org.apache.catalina.valves.SemaphoreValve
- All Implemented Interfaces:
- MBeanRegistration,- Contained,- JmxEnabled,- Lifecycle,- Valve
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.
- Author:
- Remy Maucherat
- 
Nested Class SummaryNested classes/interfaces inherited from interface org.apache.catalina.LifecycleLifecycle.SingleUse
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected booleanBlock until a permit is available.protected intConcurrency level of the semaphore.protected booleanFairness of the semaphore.protected booleanBlock interruptibly until a permit is available.protected SemaphoreSemaphore.Fields inherited from class org.apache.catalina.valves.ValveBaseasyncSupported, container, containerLog, next, smFields inherited from interface org.apache.catalina.LifecycleAFTER_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 SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionbooleancontrolConcurrency(Request request, Response response) Subclass friendly method to add conditions.booleangetBlock()intbooleanbooleanvoidDo concurrency control on the request using the semaphore.voidpermitDenied(Request request, Response response) Subclass friendly method to add error handling when a permit isn't granted.voidsetBlock(boolean block) voidsetConcurrency(int concurrency) voidsetFairness(boolean fairness) voidsetInterruptible(boolean interruptible) protected voidStart this component and implement the requirements ofLifecycleBase.startInternal().protected voidStop this component and implement the requirements ofLifecycleBase.stopInternal().Methods inherited from class org.apache.catalina.valves.ValveBasebackgroundProcess, getContainer, getDomainInternal, getNext, getObjectNameKeyProperties, initInternal, isAsyncSupported, setAsyncSupported, setContainer, setNext, toStringMethods inherited from class org.apache.catalina.util.LifecycleMBeanBasedestroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregisterMethods inherited from class org.apache.catalina.util.LifecycleBaseaddLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
- 
Field Details- 
semaphoreSemaphore.
- 
concurrencyprotected int concurrencyConcurrency level of the semaphore.
- 
fairnessprotected boolean fairnessFairness of the semaphore.
- 
blockprotected boolean blockBlock until a permit is available.
- 
interruptibleprotected boolean interruptibleBlock interruptibly until a permit is available.
 
- 
- 
Constructor Details- 
SemaphoreValvepublic SemaphoreValve()
 
- 
- 
Method Details- 
getConcurrencypublic int getConcurrency()
- 
setConcurrencypublic void setConcurrency(int concurrency) 
- 
getFairnesspublic boolean getFairness()
- 
setFairnesspublic void setFairness(boolean fairness) 
- 
getBlockpublic boolean getBlock()
- 
setBlockpublic void setBlock(boolean block) 
- 
getInterruptiblepublic boolean getInterruptible()
- 
setInterruptiblepublic void setInterruptible(boolean interruptible) 
- 
startInternalStart this component and implement the requirements ofLifecycleBase.startInternal().- Overrides:
- startInternalin class- ValveBase
- Throws:
- LifecycleException- if this component detects a fatal error that prevents this component from being used
 
- 
stopInternalStop this component and implement the requirements ofLifecycleBase.stopInternal().- Overrides:
- stopInternalin class- ValveBase
- Throws:
- LifecycleException- if this component detects a fatal error that prevents this component from being used
 
- 
invokeDo concurrency control on the request using the semaphore.- 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
 
- 
controlConcurrencySubclass friendly method to add conditions.- Parameters:
- request- The Servlet request
- response- The Servlet response
- Returns:
- trueif the concurrency control should occur on this request
 
- 
permitDeniedSubclass friendly method to add error handling when a permit isn't granted.- Parameters:
- request- The Servlet request
- response- The Servlet response
- Throws:
- IOException- Error writing output
- ServletException- Other error
 
 
-