我的网络应用程序的一部分涉及上传图像文件。在生产服务器上,文件需要写入 /somepath_on_Production_server/images。对于本地开发,我想将文件写入 /some_ different_path/images。
处理这些配置差异的最佳方法是什么?
一个重要的要求是:我根本不想打扰生产服务器,我只想能够部署一个 war 文件并让它工作。所以我不想使用任何需要我弄乱环境变量/类路径/等的技术。在生产机器上。不过,我很乐意在本地计算机上设置它们。
我想象了两种可能的通用方法:
- 如果满足某些条件(环境变量/类路径/等),则在运行时加载特殊的“dev”配置文件
- 在构建过程中翻转开关(也许是 Maven 配置文件?)
简单的事情,比如String
可以声明为环境条目 in the web.xml
并通过 JNDI 获得。下面是一个带有env-entry
命名为“imagePath”。
<env-entry>
<env-entry-name>imagePath</env-entry-name>
<env-entry-value>/somepath_on_production_server/images</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
要从 Java 代码访问属性,请执行 JNDI 查找:
// Get a handle to the JNDI environment naming context
Context env = (Context)new InitialContext().lookup("java:comp/env");
// Get a single value
String imagePath = (String)env.lookup("imagePath");
这通常是用老式的方式完成的ServiceLocator
您可以在其中缓存给定键的值。
另一种选择是使用属性文件。
处理多个环境的 Maven 方法通常涉及配置文件和过滤(属性文件,甚至是web.xml http://markmail.org/message/gaa2rw2acoctojlp).
资源
- 构建配置文件简介 http://maven.apache.org/guides/introduction/introduction-to-profiles.html
-
9.3.资源过滤 http://www.sonatype.com/books/mvnref-book/reference/resource-filtering-sect-description.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)