1. 程式人生 > >HTTP協議與AJP協議

HTTP協議與AJP協議

AJP 全稱 Apache JServ Protocol, 是定向包協議,因為效能的原因,使用二進位制格式來傳輸可讀性文字,WEB伺服器通過TCP連線和SERVLET容器連線。

一旦WEB伺服器打開了一個到SERVLET容器的連線,連線處於下面的狀態: 
◆ 空閒 
這個連線上沒有處理的請求。
◆ 已分派 
連線正在處理特定的請求。一旦一個連線被分配給一個特定的請求,在連線上傳送的基本請求資訊是高度壓縮的。在這點,SERVLET容器大概準備開始處理請求,當它處理的時候,它能發回下面的資訊給WEB伺服器。
◆ SEND_HEADERS 
傳送一組頭到瀏覽器。
◆ SEND_BODY_CHUNK 
傳送一塊主體資料到瀏覽器。


◆ GET_BODY_CHUNK 
從請求獲得下一個資料如果還沒有全部傳輸完,如果請求內容的包長度非常大或者長度不確定,這是非常必要的。例如上載檔案。注意這和HTTP的塊傳輸沒有關聯。
◆ END_RESPONSE 
結束請求處理迴圈。

Tomcat伺服器通過Connector聯結器元件與客戶程式建立連線,Connector元件負責接收客戶的請求,以及把Tomcat伺服器的響應結果傳送給客戶。預設情況下,Tomcat在server.xml中配置了兩種聯結器。

<!-- Define a non-SSL Coyote HTTP/1.1
  Connector on port 8080 -->
  <Connector
port="8080"   maxThreads="150"   minSpareThreads="25"   maxSpareThreads="75"   enableLookups="false"   redirectPort="8443"   acceptCount="100"   debug="0"   connectionTimeout="20000"   disableUploadTimeout="true" />
     <!-- Define a Coyote/JK2 AJP 1.3   Connector on port 8009 -->   <Connector port="8009"
  enableLookups="false"   redirectPort="8443" debug="0"   protocol="AJP/1.3" />
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  1. 第一個聯結器監聽8080埠,負責建立HTTP連線。在通過瀏覽器訪問Tomcat伺服器的Web應用時,使用的就是這個聯結器。  

  2. 第二個聯結器監聽8009埠,負責和其他的HTTP伺服器建立連線。在把Tomcat與其他HTTP伺服器整合時,就需要用到這個聯結器。

  3. 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