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