有一个Web应用程序和许多工作环境。在每个环境中,它都有不同的设置,如数据库连接和SOAP端点,这些端点又在属性文件中定义,并按以下方式访问:
config.load(AppProp.class.getClassLoader().getResourceAsStream(
PROPERTIES_FILE_PATH + PROPERTIES_FILE_NAME));
因此,WAR文件对于每个环境都是不同的。
我们需要的是构建一个统一的WAR文件,该文件不包含任何配置,并且可以在任何环境(现在,Tomcat实例)中从其WAR文件外部获取其配置。
在我看来,答案Java Web Application Configuration Patterns提供了一整套常用方法,但只有少数例子。最有吸引力的方法是配置JNDI查找机制。我可以猜测,它允许通过其上下文路径单独配置Web应用程序。但是,无法在Internet和Tomcat的文档中找到简单的(逐步)指令。不幸的是,不能花很多时间研究这些复杂的东西,以满足看似简单和自然的需求:(
感谢您在相关说明中的链接或有关该问题的任何其他建议。
答案 0 :(得分:0)
如果只是在不同的环境中部署WAR(由不同的OS用户执行),那么您可以将所有配置文件放在用户的主文件夹中并将其加载为:
config.load(new FileInputStream(System.getProperty("user.home") + PROPERTIES_FILE_NAME));
这为您提供了隔离和安全性,使您的WAR完全可移植。理想情况下,如果在您的情况下有意义,您仍应提供内置的默认配置。
答案 1 :(得分:0)
我们采用的方法基于我们现有的部署方法,即将WAR文件放在Tomcat旁边的文件系统中,并将指向WAR文件的context.xml部署到Tomcat。
上下文描述符允许提供可在servlet中轻松访问的init参数。我们还完成了一些使用CDI(Glassfish和TomEE依赖注入)的工作。
如果只有一个WAR文件部署到此Tomcat实例,您还可以将init参数添加到默认的全局上下文XML。这些将是全局的,然后您可以直接部署WAR文件。这在开发过程中非常有用。