Module com.semanticcms.core.servlet
Package com.semanticcms.core.servlet
Class ConcurrencyCoordinator
java.lang.Object
com.semanticcms.core.servlet.ConcurrencyCoordinator
- All Implemented Interfaces:
EventListener
,ServletContextListener
,ServletRequestAttributeListener
@WebListener("Decides whether to use concurrent or sequential implementations.")
public class ConcurrencyCoordinator
extends Object
implements ServletContextListener, ServletRequestAttributeListener
Determines if concurrent processing is recommended for the current request.
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
void
void
void
void
static Executor
getRecommendedExecutor
(ServletContext servletContext, ServletRequest request) Gets the executor to use for per-processor tasks.static boolean
Checks if concurrent processing is recommended.static boolean
useConcurrentSubrequests
(ServletRequest request) Determines if concurrent subrequests are currently allowed and advised for the given request.
-
Constructor Details
-
ConcurrencyCoordinator
public ConcurrencyCoordinator()
-
-
Method Details
-
contextInitialized
- Specified by:
contextInitialized
in interfaceServletContextListener
-
contextDestroyed
- Specified by:
contextDestroyed
in interfaceServletContextListener
-
attributeAdded
- Specified by:
attributeAdded
in interfaceServletRequestAttributeListener
-
attributeRemoved
- Specified by:
attributeRemoved
in interfaceServletRequestAttributeListener
-
attributeReplaced
- Specified by:
attributeReplaced
in interfaceServletRequestAttributeListener
-
isConcurrentProcessingRecommended
Checks if concurrent processing is recommended. Recommended when the overall request concurrency is less than the preferred concurrency. This value will remain consistent throughout the processing of a request.- See Also:
-
useConcurrentSubrequests
Determines if concurrent subrequests are currently allowed and advised for the given request.- Concurrent subrequests must be enabled:
SemanticCMS.getConcurrentSubrequests()
- Request concurrency must be less than the executor per-processor thread limit:
isConcurrentProcessingRecommended(javax.servlet.ServletRequest)
- Concurrent subrequests must be enabled:
-
getRecommendedExecutor
public static Executor getRecommendedExecutor(ServletContext servletContext, ServletRequest request) Gets the executor to use for per-processor tasks. IfisConcurrentProcessingRecommended(javax.servlet.ServletRequest)
, isExecutors.getPerProcessor()
, otherwise isExecutors.getSequential()
-