2012-03-27 50 views
0

在Linux系統上,我需要部署具有硬編碼到應用中的外部數據和Web服務器名稱的主機名的Java進程,例如, 「mailserver」和「ftpserver」。在不同主機上部署時,我們當然可以使用/ etc/hosts來允許此應用程序的每個部署使用不同的遠程服務器作爲其「mailserver」或「ftpserver」。進程對同一主機名使用不同的IP地址

現在,我們希望將多個應用程序部署整合到一臺主機上。但是,每個部署仍然需要指向它自己的「mailserver」或「ftpserver」,並且該整合主機的/ etc/hosts無法使用,因爲它由應用程序的所有實例共享。

有沒有一種方法可以在進程上下文中指定名稱到IP的映射,而不使用/ etc/hosts甚至是DNS - 因爲這些是系統範圍的並且被所有進程共享?

我知道chroot會這樣做,但我只是願意將它作爲最後的手段。

乾杯, 狗

+0

您可以修改Java代碼,以便以合理的方式確定服務器名稱嗎? – 2012-03-27 21:12:45

+0

那麼,我寧願在那個地方使用監獄。我是系統管理員,而不是開發人員。我不能爲了我的生活理解他們以這種方式編寫它們時的想法(沒有連接池,沒有配置文件來定義外部主機和URLS等) – 2012-03-27 21:38:49

+0

如果可行,更改軟件。有些人不善於處理所有簡單的事情,即使在很好地理解如何做好這些事情的情況下,也可能會讓事情複雜化,至少同樣糟糕。 – 2012-03-27 22:11:37

回答

0

您可以輕鬆地存儲在部署特定文件的配置信息,並使用Properties在運行時加載它。

+0

謝謝,我應該補充說我無法觸摸代碼。我知道代碼本身可以並且應該變得更加模塊化,並且不會在應用程序中的硬編碼名稱的主機名解析上「卡住」。 – 2012-03-27 21:40:10

相關問題