The Apache JServ Protocol (AJP) is a binary protocol that can proxy inbound requests from a web server through to an application server
that sits behind the web server.
It also supports some monitoring in that the web server can ping the application server. Web implementors typically use AJP in a
load-balanced deployment where one or more front-end web servers feed requests into one or more application servers. Sessions
are redirected to the correct application server using a routing mechanism wherein each application server instance gets a name (
called a route). In this scenario the web server functions as a reverse proxy for the application server.
AJP runs in Apache HTTP Server 1.x using the mod_jk plugin and in Apache 2.x using the provided Proxy AJP, mod_proxy and proxy
balancer modules together. Implementations exist for the lighttpd 1.5, nginx, Grizzly 2.1, and the Internet Information Server.
Both the Apache Tomcat servlet container as well as the Jetty servlet container support AJP.
AJP是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过TCP连接和SERVLET容器连接。为了减少进程生成socket的花费,
WEB服务器和SERVLET容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请求,在请求处理循环结束
之前不会在分配。换句话说,在连接上,请求不是多元的。这个是连接两端的编码变得容易,虽然这导致在一时刻会有很多连接。
一旦WEB服务器打开了一个到SERVLET容器的连接,连接处于空闲状态或已分派状态
一旦一个连接被分配给一个特定的请求,在连接上发送的基本请求信息是高度压缩的。在这点,SERVLET容器大概准备开始处理请求,当它处理的时候,
它能发回下面的信息给WEB服务器:(1)SEND_HEADERS、(2)SEND_BODY_CHUNK、(3)GET_BODY_CHUNK、(4)END_RESPONSE
ajp协议的设计 http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html