每個虛擬伺服器都透過一個或多個 HTTP 偵聽程式來提供伺服器與用戶端之間的連線。每個 HTTP 偵聽程式都是具有 IP 位址、連接埠號、伺服器名稱以及預設虛擬伺服器的偵聽通訊端。
HTTP 偵聽程式必須具有唯一的連接埠號和 IP 位址組合。例如,透過將 IP 位址指定為 0.0.0.0,HTTP 偵聽程式可以在機器的給定連接埠上偵聽所有已配置的 IP 位址。或者,HTTP 偵聽程式可以為每個偵聽程式指定唯一的 IP 位址,但使用相同的連接埠。
由於 HTTP 偵聽程式是 IP 位址和連接埠號的組合,因此您可以擁有多個 IP 位址相同但連接埠號不同 (例如 1.1.1.1:8081 和 1.1.1.1:8082) 的 HTTP 偵聽程式,或 IP 位址不同但連接埠號相同 (例如 1.1.1.1:8081 和 1.2.3.4:8081) 的 HTTP 偵聽程式 (如果已將機器配置為可以回應這些位址)。
不過,如果 HTTP 偵聽程式使用 0.0.0.0 IP 位址 (偵聽某個連接埠上的所有 IP 位址),您便無法建立其他 IP 位址的 HTTP 偵聽程式 (偵聽特定 IP 位址的同一連接埠)。例如,如果 HTTP 偵聽程式使用 0.0.0.0:8080 (連接埠 8080 上的所有 IP 位址),則其他 HTTP 偵聽程式不能使用 1.2.3.4:8080.
由於執行 Application Server 的系統通常只能存取一個 IP 位址,因此 HTTP 偵聽程式通常使用 0.0.0.0 IP 位址和不同的連接埠號,其中每個連接埠號用於不同目的。如果系統可以存取多個 IP 位址,則每個位址均可用於不同目的。
依預設,Application Server 啟動時,它具有以下 HTTP 偵聽程式:
名為 http-listener-1 和 http-listener-2 的兩個 HTTP 偵聽程式,這兩個偵聽程式與名為 server 的虛擬伺服器相關聯。名為 http-listener-1 的偵聽程式未啟用安全性;而 http-listener-2 已啟用了安全性。
名為 admin-listener 的 HTTP 偵聽程式,該偵聽程式與名為 __asadmin 的虛擬伺服器相關聯。此偵聽程式已啟用安全性。
所有這些偵聽程式均使用 IP 位址 0.0.0.0 和在安裝 Application Server 期間指定為 HTTP 伺服器連接埠號的連接埠號。如果 Application Server 使用預設連接埠號值,則 http-listener-1 使用連接埠 8080,http-listener-2 使用連接埠 8181,admin-listener 使用連接埠 4849。
每個 HTTP 偵聽程式均有一個預設虛擬伺服器。當請求 URL 的主機元件與 HTTP 偵聽程式關聯的任何虛擬伺服器 (在虛擬伺服器的 http-listeners 屬性中列示 HTTP 偵聽程式,即可將虛擬伺服器與該 HTTP 偵聽程式關聯起來) 均不相符時,HTTP 偵聽程式會將所有請求 URL 路由至預設虛擬伺服器。
此外,還應在 HTTP 偵聽程式中指定接收器執行緒的數目。接收器執行緒即為等待連線的執行緒。執行緒接受連線並將其放入佇列 (稱為連線佇列) 中,在佇列中將由工作者執行緒接受這些連線。配置足夠數量的接收器執行緒,以便在傳入新請求時始終有一個接收器執行緒可用,但此數目應儘可能小,以免給系統造成太重負擔。連線佇列既包括接收器執行緒剛剛接受的新連線,又包括持續作用連線管理子系統管理的永久性連線。
一組請求處理執行緒將從連線佇列中擷取內送的 HTTP 請求並對其進行處理。這些執行緒將剖析 HTTP 標頭,選取適當的虛擬伺服器並透過請求處理引擎處理請求。當沒有更多要處理的請求,但可以保持持續連線 (透過使用 HTTP/1.1 或傳送 Connection: keep-alive 標頭) 時,請求處理執行緒會假定連線處於閒置狀態,並將連線傳送給持續作用連線管理子系統。
持續作用子系統會定期輪詢此類閒置連線,並在連線佇列中對那些使用中的連線進行排隊,以便將來進行處理。請求處理執行緒將再次從連線佇列中擷取連線並處理其請求。持續作用子系統包含多個執行緒,可以管理大約數萬個連線。透過將大量連線分成較小的子集,使用有效的輪詢技術來確定哪些連線已就緒並具有請求,以及哪些連線由於處於閒置狀態的時間較長而被視為已關閉 (超過允許的持續作用逾時的最大值)。
HTTP 偵聽程式的伺服器名稱即為重新導向期間由伺服器傳送給用戶端的 URL 中顯示的主機名稱。此屬性會影響伺服器自動產生的 URL,但不會影響儲存在伺服器中的目錄和檔案的 URL。如果伺服器使用一個別名,則該名稱應為此別名。如果用戶端傳送 Host: 標頭,則在重新導向中該主機名稱將取代 HTTP 偵聽程式的伺服器名稱。
要使用不同於原始請求中指定連接埠號的連接埠號,請指定重新導向連接埠。如果出現以下某一種情況,則會發生重新導向︰
如果用戶端嘗試存取已不存在於指定 URL 處的資源 (即該資源已移至其他位置),伺服器將傳回一個指定的回應碼,並在回應的位置標頭中包含新的位置,從而將用戶端重新導向至新位置 (而不是傳回 404)。
如果用戶端嘗試透過常規 HTTP 連接埠存取受保護的資源 (例如 SSL),則伺服器會將此請求重新導向至啟用了 SSL 的連接埠上。在此情況下,伺服器將在位置回應標頭中傳回一個新的 URL,其中的原始非安全連接埠已被替代為啟用了 SSL 的連接埠。用戶端隨後會連線到這個新的 URL。
此外,還應指定是否為 HTTP 偵聽程式啟用安全性以及使用哪種類型的安全性 (例如使用哪個 SSL 協定以及哪些密碼)。
若要存取部署在 Application Server 上的 Web 應用程式,請使用 URL http://localhost:8080/ (或者,如果是安全應用程式,則使用 https://localhost:8181/) 和為此 Web 應用程式指定的環境根目錄。若要存取 管理主控台,請使用 URL https://localhost:4849/ 或 https://localhost:4849/asadmin/ (其預設環境根目錄)。
由於虛擬伺服器必須指定一個現有的 HTTP 偵聽程式,並且不能指定其他虛擬伺服器已使用的 HTTP 偵聽程式,因此在建立新虛擬伺服器之前,應至少建立一個 HTTP 偵聽程式。