Sun Java System Application Server 9.1 管理指南

HTTP 偵聽程式

每個虛擬伺服器都透過一個或多個 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 偵聽程式:

所有這些偵聽程式均使用 IP 位址 0.0.0.0,以及在安裝 Application Server 期間指定為 HTTP 伺服器連接埠號碼的連接埠號碼。如果 Application Server 使用預設連接埠號碼值,則 http-listener-1 使用連接埠 8080、http-listener-2 使用連接埠 8181、admin-listener 使用連接埠 48489。

每個 HTTP 偵聽程式均有一個預設虛擬伺服器。當請求 URL 的主機元件與 HTTP 偵聽程式關聯的所有虛擬伺服器 (在虛擬伺服器的 http-listeners 屬性中列出 HTTP 偵聽程式,即可將虛擬伺服器與該 HTTP 偵聽程式關聯起來) 均不相符時,HTTP 偵聽程式會將所有請求 URL 路由至預設虛擬伺服器。

此外,還應在 HTTP 偵聽程式中指定接收器執行緒的數目。接收器執行緒就是等待連線的執行緒。執行緒接受連線並將其放入佇列 (稱為連線佇列) 中,在佇列中將由工作者執行緒接受這些連線。配置足夠多的接收器執行緒,以便在發生新的請求時總有一個可用,但又需要數目相當少,以免給系統造成太重負擔。在 Application Server 中,接收器與請求處理 (工作者) 執行緒之間沒有區別。每一個 HTTP 偵聽程式執行緒均負責接受與處理請求。因此,Application Server 預設配置中的 HTTP 偵聽程式會使用 50 個接收器執行緒。連線佇列既包括接收器執行緒剛剛接受的新連線,又包括持續作用連線管理子系統管理的永久性連線。

一組請求處理執行緒將從連線佇列中擷取內送的 HTTP 請求並對其進行處理。這些執行緒將剖析 HTTP 標頭,選取適當的虛擬伺服器並透過請求處理引擎處理請求。當沒有更多要處理的請求,但可以保持永久性連線 (透過使用 HTTP/1.1 或傳送 Connection: keep-alive 標頭) 時,請求處理執行緒會假定連線處於閒置狀態,並將連線傳送給持續作用連線管理子系統。

持續作用子系統會定期輪詢此類閒置連線,並將使用中的連線列入連線佇列中,以便將來進行處理。請求處理執行緒將再次從連線佇列中擷取連線並處理其請求。持續作用子系統是多執行緒的,可以管理大約數萬個連線。透過將大量連線分成較小的子集,使用有效的輪詢技術來確定哪些連線已就緒並具有請求,以及哪些連線由於處於閒置狀態的時間較長而被視為已關閉 (超過允許的持續作用逾時的最大值)。

HTTP 偵聽程式的伺服器名稱即為重新導向期間由伺服器傳送給用戶端的 URL 中顯示的主機名稱。此屬性會影響伺服器自動產生的 URL;但不會影響儲存在伺服器中目錄和檔案的 URL。如果伺服器使用一個別名,則該名稱應為此別名。如果用戶端傳送 Host: 標頭,則在重新導向中該主機名稱將取代 HTTP 偵聽程式的伺服器名稱值。

要使用不同於原始請求中指定連接埠號的連接埠號碼,請指定重新導向連接埠。如果發生以下某種情況之一,則會進行重新導向

此外,還應指定是否為 HTTP 偵聽程式啟用安全性以及使用哪種類型的安全性 (例如使用哪個 SSL 協定以及哪些密碼)。

若要存取部署在 Application Server 上的 Web 應用程式,請使用 URL http://localhost:8080/ (或者,如果是安全應用程式,則使用 https://localhost:8181/) 和為此 Web 應用程式指定的環境根目錄。若要存取管理主控台,請使用 URL https://localhost:4848/http://localhost:4848/asadmin/ (其預設環境根目錄)。

由於虛擬伺服器必須指定一個現有的 HTTP 偵聽程式,並且不能指定其他虛擬伺服器已使用的 HTTP 偵聽程式,因此在建立新虛擬伺服器之前,應至少建立一個 HTTP 偵聽程式。