2011-06-21 84 views
0

我有一個在服務器啓動時啓動的後端進程。完成此過程後,我會向用戶發送電子郵件。我需要訪問應用程序端口才能構建在同一實例上運行的Web報告的完整URL。有沒有辦法獲取端口而無需訪問請求對象?獲取應用程序端口而不訪問請求對象

+0

它是一個在Jetty上運行的彈簧應用程序。 – Shikha

回答

1

我需要訪問應用程序端口才能構建運行在同一實例上的Web報告的完整URL。有沒有辦法獲取端口而無需訪問請求對象?

爲什麼不將它作爲配置文件中的屬性存儲到後端進程?如果只需要將端口(甚至是不改變的網站URL片段)嵌入到電子郵件中,代碼將變得簡單得多。

此外,相比於定期更改端口號,相關管理員有更好的事情要做。

相關問題(但不完全一樣)

  1. Root URl of the servlet
  2. Finding your application's URL with only a ServletContext

他們都提供理由,爲什麼由servlet容器看到的路徑,不必與最終用戶看到的一樣。即使兩者都是一樣的,也沒有辦法,一個人可以不用

  • 讀取服務器配置文件。在這種情況下,它將是$JETTY_HOME/etc/jetty.xml,它具有Connectors元素中的必要信息。
  • 獲取對ServletRequest對象的引用,這可能不是此問題的有效答案。
+0

問題是端口號確實發生了變化。因爲這是針對不同的Spring應用程序實例運行的通用服務。所以我事先不知道端口。 – Shikha

+0

恐怕你的評論沒有任何意義。如果您有多個應用程序在與不同端口關聯的不同容器上運行,那麼您需要找到一種方法將端口號與報告相關聯;這一點仍然是這個信息應該是可配置的。此外,由於存在NAT解決方案或反向代理,任何嘗試從請求URL獲取端口都將失敗。 –

+0

該端口在配置文件中定義。現在我從這個文件中獲取它並設置一個變量。 – Shikha

0

如果你在你的應用的至少一個HTTP請求調用,你可以從它那裏得到端口:

int portNumber = request.getServerPort(); 

也許你的啓動腳本可以做出這樣的呼籲。

更多詳細信息:http://www.kodejava.org/examples/211.html

相關問題