Java EE web 应用程序和环境配置

Java EE web applications and environment configuration

你好 Whosebug 用户,

我发现自己正在开发一个 Java EE Web 应用程序,而且我知道我的应用程序将被部署到多个环境中。每个环境的某些功能配置可能略有不同,例如远程 Web 服务 URL。此外,我希望 - 如果可能的话 - 满足以下 2 个属性:

  1. 每个环境配置不应在 Web 应用程序存储库中

    这是因为我觉得它不属于那里。我不想在我的源代码旁边管理 n-configurations。而且,如果那里有秘密,我不希望每个开发人员都看到它们...

  2. 强制配置的完整性

    如果我说我需要某种配置parameter/resource那么不提供就没有意义了。在这种情况下,我不希望我的应用程序启动。

拜托,有没有知识渊博、经验丰富的人帮助我,引导我走向正确的方向?


到目前为止我的发现

当然,我已经花了一些时间寻找答案了...

Spring 框架

我知道 spring 提供了 Environment class 作为特定于环境的配置的抽象。但是,我没有使用 Spring 框架,也没有描述如何将此配置放在 Web 应用程序之外。

Java EE JNDI 服务

根据 Java EE platform specification,正确的做法是在我的 WEB-INF/web.xml 中使用 env-entryresource-refresource-env-ref 元素,并且让它们 bound/set 成为 Web 应用程序容器配置中的值。

这听起来确实不错,只是我不知道如何强制执行此配置的完整性。我的意思是,我声明了上面提到的元素,告诉部署者我需要它们,但我看到(在 tomcat 上测试)应用程序仍然部署(并且工作不正确),当一些,说 resource-env-ref,未绑定。

我不知道如何实现它,但是,如果没有更好的东西,它仍然是我能找到的最好的东西。 :-|

我采用了 JDNI 方法。

我通过引入自定义 ServletContextListener 实现添加了配置验证。