2009-04-22 75 views
2

我有一個在Jetty下運行的應用程序,我希望應用程序返回自引用絕對URL(生成RSS源時,客戶端必須能夠無需工作一個「當前URL」上下文)。獲取應用服務器下的真實(虛擬)主機名

問題是我不知道應用程序將在哪個主機名下部署,它很可能會部署在虛擬主機環境中,其中幾個主機名映射到相同的主機名IP地址。我試過使用HttpServletRequest.getLocalName(),但是它返回已解析的主機名[1],用於接收請求的IP地址(通常是本地主機文件中設置的內容),而不是客戶端指定的URL中的主機名HTTP請求。

基本上我想要得到什麼在CGI下將是環境變量SERVER_NAME但它看起來不像Java API提供這個。任何幫助將不勝感激。

[1]只有當我很幸運 - 在一些設置它只會返回IP地址。

回答

3

使用ServletRequest.getServerName()從「主機」標題中獲取虛擬主機名稱。這相當於CGI的SERVER_NAME變量。

+0

謝謝:-)(這有點愚蠢 - 我應該知道這一點) – Guss 2009-04-22 15:00:23