让spring上下文变量指向webapp中的实际外部上下文

时间:2012-10-22 16:32:29

标签: java spring environment-variables apache-camel

我目前正在将基于Apache Camel的应用程序修改为Tomcat。由于业务需求,我们必须在单台机器上托管多个应用程序实例,每个实例都有自己的配置集。以前配置文件与app捆绑在一起(因此可以从类路径轻松访问),但现在它们将在某个绝对路径中分开(如path / instance1,path / instance2等)。我想用Spring实现的目标:

  • 在初始spring上下文文件中将实例conf路径导出为变量,因此我可以通过$ {instance_conf_path}引用它(目前我在属性文件中有它,通过PropertyPlaceholderConfigurer读取)
  • 在提到的初始上下文中使用导入的真实弹簧上下文(它们在逻辑上是分开的)
  • 由于这条路径也用在Apache Camel路由的几个部分,我也需要在那里使用这个变量(这应该按照Camel的手册工作)

Camel 2.10.2在传递依赖中有Spring 3.0.7,但在阅读this article后,我手动将Spring 3.1.2放入maven。但它仍在抱怨它不知道变量。有什么建议?或者你知道在Spring中更好的方法是在外部存储所有配置并在app bundle中设置这个配置的路径吗? 谢谢

1 个答案:

答案 0 :(得分:0)

您考虑使用环境变量吗?你可以从web.xml中引用它:

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
    classpath*:spring/sharedContext.xml,
    file:/${APP_HOME}/spring/specificContext.xml
  </param-value>
</context-param>

如果Camel需要任何特定内容,您可以在适当的APP_HOME下包含特定于实例的配置。