AJP簡介
AJP是定向包協議。因為性能原因,使用二進制格式來傳輸可讀性文本。WEB服務器通過TCP連接和SERVLET容器連接。為了減少進程生成socket的花費,WEB服務器和SERVLET容器之間嘗試保持持久性的TCP連接,對多個請求/回復循環重用一個連接。一旦連接分配給一個特定的請求,在請求處理循環結束之前不會在分配。換句話說,在連接上,請求不是多元的。這個是連接兩端的編碼變得容易,雖然這導致在一時刻會有很多連接。
通常正式的應用都是由apache,nginx來解析http 協議,然后將ajp協議有應用服務器來解析,這樣可以大大提高性能。 一旦WEB服務器打開了一個到SERVLET容器的連接,連接處于下面的狀態:
空閑
這個連接上沒有處理的請求。
已分派
連接正在處理特定的請求。
一旦一個連接被分配給一個特定的請求,在連接上發送的基本請求信息是高度壓縮的。在這點,SERVLET容器大概準備開始處理請求,當它處理的時候,它能發回下面的信息給WEB服務器:
SEND_HEADERS
發送一組頭到瀏覽器。
SEND_BODY_CHUNK
發送一塊主體數據到瀏覽器。
GET_BODY_CHUNK
從請求獲得下一個數據如果還沒有全部傳輸完,如果請求內容的包長度非常大或者長度不確定,這是非常必要的。例如上載文件。注意這和HTTP的塊傳輸沒有關聯。
END_RESPONSE
結束請求處理循環。
通常正式的應用都是由apache,nginx來解析http 協議,然后將ajp協議有應用服務器來解析,這樣可以大大提高性能。 一旦WEB服務器打開了一個到SERVLET容器的連接,連接處于下面的狀態:
空閑
這個連接上沒有處理的請求。
已分派
連接正在處理特定的請求。
一旦一個連接被分配給一個特定的請求,在連接上發送的基本請求信息是高度壓縮的。在這點,SERVLET容器大概準備開始處理請求,當它處理的時候,它能發回下面的信息給WEB服務器:
SEND_HEADERS
發送一組頭到瀏覽器。
SEND_BODY_CHUNK
發送一塊主體數據到瀏覽器。
GET_BODY_CHUNK
從請求獲得下一個數據如果還沒有全部傳輸完,如果請求內容的包長度非常大或者長度不確定,這是非常必要的。例如上載文件。注意這和HTTP的塊傳輸沒有關聯。
END_RESPONSE
結束請求處理循環。