wrt 配置文件,我认为史蒂夫的答案是迄今为止最好的答案。我会添加使外部文件相对于 war 文件的安装路径的建议 - 这样您就可以在具有不同配置的一台服务器上安装多个 war。
例如,如果我dev.war
的解压到/opt/tomcat/webapps/dev
.,那么我将使用ServletContext.getRealPath
来查找基本文件夹和 war 文件夹名称,因此配置文件将../../config/dev
相对于 war 或/opt/tomcat/config/dev
绝对存在。
我也同意Bill关于尽可能少地放入这些外部配置文件的观点。根据您的环境使用数据库或 JMX 来存储尽可能多的数据。Apache Commons Configuration 有一个很好的对象来处理由数据库表支持的配置。
关于库,我同意unknown将所有库都放在WEB-INF/lib
war 文件(自打包)的文件夹中。优点是应用程序的每次安装都是自主的,并且您可能同时使用不同版本的库来构建不同的战争。
缺点是它将使用更多内存,因为每个 Web 应用程序都有自己的类副本,由其自己的类加载器加载。
如果这引起了真正的担忧,那么您可以将 jar 放在您的 servlet 容器($CATALINA_HOME/lib
用于 tomcat)的公共库文件夹中。但是,在同一台服务器上运行的所有 Web 应用程序安装都必须使用相同版本的库。(实际上,这并不完全正确,因为您可以在必要时将覆盖版本放在单个WEB-INF/lib
文件夹中,但是维护起来非常麻烦。)
在这种情况下,我将为公共库构建一个自动安装程序,使用 InstallShield 或NSIS或等效于您的操作系统。可以轻松判断您是否拥有最新的库集,以及升级、降级等。