我有一個運行在tomcat上的應用程序,它有一堆配置文件,它們在運行的每個環境(開發,測試和生產)都不同。但是並不是每個配置文件中的每一行在環境中都會有所不同,因此總會有重複的信息,如果某些信息發生更改,則不會更新。在java中處理環境特定配置的最佳方式是什麼?
是否有一個很好的框架/庫,將單獨的文件合併爲一個特定於環境的塊?或者處理這個問題的其他方式?
我有一個運行在tomcat上的應用程序,它有一堆配置文件,它們在運行的每個環境(開發,測試和生產)都不同。但是並不是每個配置文件中的每一行在環境中都會有所不同,因此總會有重複的信息,如果某些信息發生更改,則不會更新。在java中處理環境特定配置的最佳方式是什麼?
是否有一個很好的框架/庫,將單獨的文件合併爲一個特定於環境的塊?或者處理這個問題的其他方式?
屬性文件是我一直使用的。它可以手工編輯,也可以在軟件中編輯,Properties對象可以自己讀入並寫入文件系統。這裏的javadoc的頁面:
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html
的重複是不是一個真正的問題,具有中央配置文件中的其他文件「擴展」可能casue更頭疼的長遠。
我的建議是使用ant將適當的文件加載(複製和移動)到適當位置,然後啓動應用程序(打包進入戰爭?)。每個環境只需要一個不同的任務。因此,您將有三個配置文件(dev.config,test.config和production.config),它們將被移動並覆蓋/ WEB-INF文件夾中的配置,具體取決於您正在運行的任務。
沿着同一條線你可以有一個sinlge構建任務,它需要配置文件名的必要參數。如果缺少構建將失敗。 – shsteimer 2008-10-14 13:12:38
如果您使用maven,您可以使用它的資源過濾功能以及配置文件爲您部署到的每個環境生成屬性文件。
作爲一個額外的好處,maven也可以爲你部署你的web應用程序。
如果你想避免混亂,我會建議單獨的環境參數配置文件。然後你將有一個更多的配置文件來管理。這是配置文件的數量與每個配置文件的複雜度之間的折衷。
我喜歡將特定於環境的值放入server.xml中,並在各個webapps的yourapp.xml文件中使用資源鏈接。 – 2008-10-14 05:59:59