java - 如何在我的 tomcat 应用程序中实现特定于环境的 init 参数

标签 java spring-mvc tomcat7

我希望能够为我的 java 应用程序(tomcat7、spring-mvc)实现无配置部署。例如,现在我们正在考虑为我们部署到的每个环境(产品、阶段、开发)创建一个 context.xml 文件:

context_prod.xml 
context_stage.xml 
context_dev.xml
context.xml (for localhost)

在我们的每台服务器上,我们都会有一个符号链接(symbolic link)context.xml,它将指向适当的上下文文件(例如context_prod.xml)。所以当我们部署时,我们不必担心更改数据库引用、 key 等。

我觉得可能有更好的方法来做到这一点;也许是 Spring 中内置的一个?

最佳答案

Spring 最近添加了处理环境配置的功能:

http://blog.springsource.com/2011/02/11/spring-framework-3-1-m1-released/

这对我来说仍然有点复杂,而且我已经按照您在我自己的 Spring MVC 应用程序中要求的日志记录进行了操作。在我的 DispatcherServlet 配置中,我有这一行:

<context:property-placeholder location="classpath*:/system.properties"/>

<util:properties id="mySystemProperties" location="classpath:/logging/log4j-${system.runMode}.properties" />

system.runMode 只是我们创建的一个环境变量,并在启动时在 CATALINA.SH 中设置,如下所示:Setting environment variable TESSDATA_PREFIX in Tomcat

然后,我使用 Spring EL 引用我想要的任何值,并且它适用于每个环境。正如您所看到的,我为日志记录执行了此操作,并且每个环境都有不同的日志记录配置文件。

关于java - 如何在我的 tomcat 应用程序中实现特定于环境的 init 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18449093/

相关文章:

eclipse - 使用 Tomcat,但得到 ClassNotFoundException : org. jboss.logging.BasicLogger

java - 如何对我的服务器上的可下载 .jar 进行计费? (移动、j2me)

java - Spring mvc - 无法打开 ServletContext 资源 [/WEB-INF/dispatcher-servlet.xml]

java - 如何在Controller中使用Spring MVC处理程序拦截器?

spring - 如何在 Spring Security 3.2 中有问题地设置 Access-Control-Allow-Origin 过滤器

java - 无法通过servlet代码在tomcat服务器上上传文件

ssl - 仅对某些页面使用 https 不起作用

java - 带有 CONTAINS 查询的 PreparedStatement

java - 请求以 Http/0.9 版本发送

java - 空 JPanel 相对于其他 JPanel 的定位不正确