2014-04-17 47 views
0

應用程序的主機名的URL這個問題可能已經問過,因爲它是一個相當普遍的運動,但我不知道如何處理搜索。管理網絡其餘在Tomcat中

我有個休息客戶端應用程序託管在Tomcat的一個實例,並託管在另一個主機名不同的Tomcat實例休息服務器。這工作得很好,但目前我有在java類中硬編碼的主機名。我如何在剩餘客戶端內參數化主機名,以便在未重新啓動託管其他客戶端的tomcat的情況下進行未來更改?

+1

合理的問題 - 對此,我想一個更好的答案真的 - 所以我不知道爲什麼它在-1,+ 1了我,但我會繼續尋找 – Rhubarb

回答

1

有包括了一些解決方案,你可以使用(但不限於):

  1. 查找服務器的主機名在客戶端服務器上的屬性或XML文件(每次你想使一個REST調用)
  2. 提供的客戶端應用程序的機制來配置服務器的主機名,並將其存儲在內存中
  3. 查找服務器的主機名在一個目錄,如LDAP或AD或數據庫中(每次你想REST呼叫)

你可以使用一個緩存機制,如果你不想要查找的數值每次 - 也許一旦閱讀它只是一個秒數/分鐘後到期,或呼叫的數量後。

1

很常見的技術,通過環境變量,甚至hostname是,如果你定義,你可以閱讀使用java.lang.System.getenv()java.lang.System.getProperty()的系統變量正在使用Maven,一旦你的應用程序啓動在一個靜態常量類中讀取這個變量,所以這個值將在開始時被設置,並且一直保持到應用程序結束時有其他涉及web.xml的技術,但爲了保持簡單,這將起作用。只需將var添加到環境中並閱讀即可。

+0

但OP希望能夠改變服務器主機名稱,而無需重新啓動Tomcat。 – Jason

+0

是的,它會在系統的呼叫可以在任何地方完成或代碼是一種動態的,就要使用這種方法 – Koitoer

+0

但你的回答說,將在一開始被讀取並一直保持到應用程序的結束。 OP不希望這樣 - 他們想在應用程序結束之前更改變量。 – Jason

0

可以在參數客戶端進程啓動時總是通過主機名,然後讀取使用System.getProperty(「主機名」)這些參數。