配置webapps的不同方法

时间:2012-10-12 07:36:10

标签: java tomcat web-applications configuration

我正在编写脚本以在Tomcat下部署应用程序。有不同的方法来配置这些应用程序:

  • 将属性文件保存在WEB-INF等源目录中,这意味着我们需要提取源并用特定环境所需的内容替换这些文件
  • 基于env属性的配置,对我来说这看起来像一个糟糕的选择,文件更明确,更少魔术,并且在同一台计算机上分离应用程序的工作量减少
  • 还可以选择配置TOMCAT_HOME / conf / [app_name] .xml,并将这些属性视为我们应用中的env vars。但是以这种方式,如果我们想要这样做就不可能转移到Jetty,因为这些文件是特定于Tomcat的。

有人可以提供其他选项并分享他们对上面列出的意见吗?请考虑以下标准:配置的简易性,可移植性,标准,显性(不喜欢魔术,其他人可能不理解),操作系统(主操作系统是Linux,但其他人可能想在Windows上运行它)。

3 个答案:

答案 0 :(得分:2)

您可以使用文件来使用基于env属性的配置。我的意思是你可以在web应用程序的META-INF下编写一个Context.xml文件,在rules之后设置环境或配置。

我发现使用env属性提供了简单的配置,基于上下文和依赖注入。您可以使用新的Java API,例如。 @Resource注释。它可以在任何应用程序服务器等下工作。

答案 1 :(得分:1)

我建议将属性放入数据库表(当然这意味着,您的应用程序有一个数据源)。

我们在Web应用程序中更喜欢这种方法,原因如下:

  • 属性与已部署的工件和应用程序的安装目录
  • 分离
  • 数据库工具可以轻松访问Peoperties
  • 属性可以具有其他属性,例如类型或默认值
  • 可以在运行时轻松更改属性(前提是Web应用程序有一些管理页面可以重新加载它们)
  • 根据环境(例如开发,测试,生产),您可以拥有不同的属性集,并以与其他主数据相同的方式加载它们

如果您根本没有数据库,另一种解决方案就是使用系统属性并通过System.getProperty(key)读取它们,这对于您控制下的系统而言并不是太多属性。

答案 2 :(得分:0)

根据我的经验,它适用于conf目录的使用和环境变量:{APP_NAME} _CONF_DIR。如果未设置,则应用程序将默认从/ etc / {app_name} / conf加载。 大多数情况下,您不必设置环境。变量,因为您将使用默认目录。