2

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

  • 将属性文件保存在 WEB-INF 之类的源目录中,这意味着我们需要提取源并将这些文件替换为特定环境所需的文件
  • 基于 env 属性的配置,这对我来说似乎是一个糟糕的选择,文件更加明确且不那么神奇,并且在同一台机器上分离应用程序的工作更少
  • 还有一些选项可以配置 TOMCAT_HOME/conf/[app_name].xml 并将这些属性视为我们应用程序中的环境变量。但是通过这种方式,如果我们想这样做,就不可能移动到 Jetty,因为这些文件是 Tomcat 特定的。

有人可以提供其他选项并就上面列出的内容分享他们的意见吗?考虑这些标准:易于配置、可移植性、标准、明确性(不喜欢魔术,其他人可能不理解)、操作系统(主要操作系统是 Linux,但其他人可能希望在 Windows 上运行它)。

4

3 回答 3

2

您可以通过使用文件来使用基于 env 属性的配置。我的意思是,您可以在 Web 应用程序的 META-INF 下编写一个 Context.xml 文件,按照此规则设置环境或配置。

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

于 2012-10-12T07:54:22.390 回答
1

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

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

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

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

于 2012-10-12T07:51:56.387 回答
0

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

于 2012-10-12T07:47:31.990 回答