How it works

The AJP protocol implementation is mainly represented by two Filters: AjpMessageFilter, AjpHandlerFilter. The AjpMessageFilter is responsible for constructing AJP protocol messages and AjpHandlerFilter contains the actual processing logic, which works as a codec between AJP and HTTP messages. All the Filters upstream to AjpHandlerFilter receive HTTP messages for processing, so they are not even aware of AJP protocol.

Here is a FilterChain, which is being normally constructed, when Grizzly HttpServer being used: