Request processing
As of the last chapter, the received request ended with the invoke()
method being called on the StandardHostValve
. That valve extracts the context being targeted from the request and sets that context's class loader as the current thread's context class loader.
The context's pipeline is then invoked to process the request, which results in the invoke()
method of the StandardContextValve
being called. This method first checks whether a protected resource is being requested. Any request for a resource within the /WEB-INF
or /META-INF
folders results in an HTTP response status code of 404, which indicates that the requested resource is not available.
This method also implements a busy wait, if it senses that the context is in the process of being reloaded. It sleeps for a second at a time, until the context has been reloaded and is available once again. If the context was indeed reloaded, then the context class loader, as set by the StandardHostValve
, becomes obsolete and...