1. 程式人生 > >tomcat http協議與ajp協議

tomcat http協議與ajp協議

分配 情況 bsp 直接 OS 狀態 默認 redirect 文本

AJP13是定向包協議。因為性能原因,使用二進制格式來傳輸可讀性文本。WEB服務器通過 TCP連接和SERVLET容器連接。為了減少進程生成 socket的花費,WEB服務器和SERVLET容器之間嘗試保持持久性的TCP連接,對多個請求/回復循環重用一個連接。一旦連接分配給一個特定的請求,在請求處理循環結束之前不會在分配。換句話說,在連接上,請求不是多元的。這個是連接兩端的編碼變得容易,雖然這導致在一時刻會有很多連接。

  一旦WEB服務器打開了一個到SERVLET容器的連接,連接處於下面的狀態:

◆ 空閑

這個連接上沒有處理的請求。

◆ 已分派

連接正在處理特定的請求。

  一旦一個連接被分配給一個特定的請求,在連接上發送的基本請求信息是高度壓縮的。在這點,SERVLET容器大概準備開始處理請求,當它處理的時候,它能發回下面的信息給WEB服務器:

◆ SEND_HEADERS

發送一組頭到瀏覽器。

◆ SEND_BODY_CHUNK

   發送一塊主體數據到瀏覽器。

◆ GET_BODY_CHUNK

從請求獲得下一個數據如果還沒有全部傳輸完,如果請求內容的包長度非常大或者長度不確定,這是非常必要的。例如上載文件。註意這和HTTP的塊傳輸沒有關聯。

◆ END_RESPONSE

結束請求處理循環。

Tomcat服務器通過Connector連接器組件與客戶程序建立連接,Connector組件負責接收客戶的請求,以及把Tomcat服務器的響應結果發送給客戶。默認情況下,Tomcat在server.xml中配置了兩種連接器:

  

  

  

  maxThreads="150"

  minSpareThreads="25"

  maxSpareThreads="75"

  enableLookups="false"

  redirectPort="8443"

  acceptCount="100"

  debug="0"

  connectionTimeout="20000"

  disableUploadTimeout="true" />

  

  

  

  enableLookups="false"

  redirectPort="8443" debug="0"

  protocol="AJP/1.3" />  

  第一個連接器監聽8080端口,負責建立HTTP連接。在通過瀏覽器訪問Tomcat服務器的Web應用時,使用的就是這個連接器。  

  第二個連接器監聽8009端口,負責和其他的HTTP服務器建立連接。在把Tomcat與其他HTTP服務器集成時,就需要用到這個連接器。

  Web客戶訪問Tomcat服務器上JSP組件的兩種方式如圖22-1所示。

   

  圖22-1 Web客戶訪問Tomcat服務器上的JSP組件的兩種方式  

  技術分享圖片

在圖22-1中,

Web客戶1直接訪問Tomcat服務器上的JSP組件,他訪問的 URL為http://localhost:8080 /index.jsp。

Web客戶2通過HTTP服務器訪問Tomcat服務器上的JSP組件。假定HTTP服務器使用的HTTP端口為默認的80端口,那麽Web客戶2訪問的URL為http://localhost:80/index.jsp 或者 http://localhost/index.jsp。

來源:http://blog.chinaunix.net/uid-20662363-id-3012760.html

tomcat http協議與ajp協議