Java EE web 应用程序和环境配置
Java EE web applications and environment configuration
你好 Whosebug 用户,
我发现自己正在开发一个 Java EE Web 应用程序,而且我知道我的应用程序将被部署到多个环境中。每个环境的某些功能配置可能略有不同,例如远程 Web 服务 URL。此外,我希望 - 如果可能的话 - 满足以下 2 个属性:
每个环境配置不应在 Web 应用程序存储库中
这是因为我觉得它不属于那里。我不想在我的源代码旁边管理 n-configurations。而且,如果那里有秘密,我不希望每个开发人员都看到它们...
强制配置的完整性
如果我说我需要某种配置parameter/resource那么不提供就没有意义了。在这种情况下,我不希望我的应用程序启动。
拜托,有没有知识渊博、经验丰富的人帮助我,引导我走向正确的方向?
到目前为止我的发现
当然,我已经花了一些时间寻找答案了...
Spring 框架
我知道 spring 提供了 Environment class 作为特定于环境的配置的抽象。但是,我没有使用 Spring 框架,也没有描述如何将此配置放在 Web 应用程序之外。
Java EE JNDI 服务
根据 Java EE platform specification,正确的做法是在我的 WEB-INF/web.xml
中使用 env-entry
、resource-ref
和 resource-env-ref
元素,并且让它们 bound/set 成为 Web 应用程序容器配置中的值。
这听起来确实不错,只是我不知道如何强制执行此配置的完整性。我的意思是,我声明了上面提到的元素,告诉部署者我需要它们,但我看到(在 tomcat 上测试)应用程序仍然部署(并且工作不正确),当一些,说 resource-env-ref,未绑定。
我不知道如何实现它,但是,如果没有更好的东西,它仍然是我能找到的最好的东西。 :-|
我采用了 JDNI 方法。
我通过引入自定义 ServletContextListener
实现添加了配置验证。
你好 Whosebug 用户,
我发现自己正在开发一个 Java EE Web 应用程序,而且我知道我的应用程序将被部署到多个环境中。每个环境的某些功能配置可能略有不同,例如远程 Web 服务 URL。此外,我希望 - 如果可能的话 - 满足以下 2 个属性:
每个环境配置不应在 Web 应用程序存储库中
这是因为我觉得它不属于那里。我不想在我的源代码旁边管理 n-configurations。而且,如果那里有秘密,我不希望每个开发人员都看到它们...
强制配置的完整性
如果我说我需要某种配置parameter/resource那么不提供就没有意义了。在这种情况下,我不希望我的应用程序启动。
拜托,有没有知识渊博、经验丰富的人帮助我,引导我走向正确的方向?
到目前为止我的发现
当然,我已经花了一些时间寻找答案了...
Spring 框架
我知道 spring 提供了 Environment class 作为特定于环境的配置的抽象。但是,我没有使用 Spring 框架,也没有描述如何将此配置放在 Web 应用程序之外。
Java EE JNDI 服务
根据 Java EE platform specification,正确的做法是在我的 WEB-INF/web.xml
中使用 env-entry
、resource-ref
和 resource-env-ref
元素,并且让它们 bound/set 成为 Web 应用程序容器配置中的值。
这听起来确实不错,只是我不知道如何强制执行此配置的完整性。我的意思是,我声明了上面提到的元素,告诉部署者我需要它们,但我看到(在 tomcat 上测试)应用程序仍然部署(并且工作不正确),当一些,说 resource-env-ref,未绑定。
我不知道如何实现它,但是,如果没有更好的东西,它仍然是我能找到的最好的东西。 :-|
我采用了 JDNI 方法。
我通过引入自定义 ServletContextListener
实现添加了配置验证。