wrt配置文件,我認爲Steve's答案是迄今爲止最好的答案。我想補充使得相對於戰爭文件的安裝路徑的外部文件的建議 - 這樣你可以有不同的配置的一臺服務器戰爭的多次安裝。
例如如果我的dev.war
被解壓到/opt/tomcat/webapps/dev
中,那麼我將使用ServletContext.getRealPath
來查找基礎文件夾和war文件夾名稱,因此配置文件將相對於戰爭生存在../../config/dev
或絕對地生存在/opt/tomcat/config/dev
。
我同意Bill關於儘可能少地放在這些外部配置文件。根據您的環境使用數據庫或JMX來存儲儘可能多的數據。 Apache Commons Configuration有一個nice object用於處理由數據庫表支持的配置。
關於圖書館,我同意unknown在戰爭文件(自封裝)WEB-INF/lib
文件夾中的所有庫。優點是應用程序的每次安裝都是獨立的,並且您可以同時使用不同版本的庫來構建不同的戰爭版本。
缺點是它會使用更多的內存,因爲每個Web應用程序都有它自己的類的副本,由它自己的類加載器加載。
如果這引起了真正的擔憂,那麼您可以將jar放入servlet容器的公用庫文件夾(對於tomcat爲$CATALINA_HOME/lib
)。但是,運行在同一服務器上的所有Web應用程序的安裝必須使用相同版本的庫。 (其實,這是不完全正確,你可以在必要時把壓倒一切的版本在個人WEB-INF/lib
文件夾,但是這變得相當混亂維護。)
我會打造爲公共庫的自動安裝程序在這種情況下,使用InstallShield或NSIS或等同於您的操作系統。有些東西可以很容易地告訴你是否擁有最新的一系列庫,以及升級,降級等。
大部分答案都是說同樣的,接受這個,因爲我們可能最終會做非常相似的東西。 – wds 2009-03-02 08:32:13