1

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

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

Camel 2.10.2 在传递依赖中具有 Spring 3.0.7,但在阅读本文后,我手动将 Spring 3.1.2 放入 maven。但它仍然抱怨它不知道变量。有什么建议么?或者您是否知道在 Spring 中存储所有配置并在应用程序包中仅设置此配置的路径的更好方法?谢谢你

4

1 回答 1

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 下包含特定于实例的配置。

于 2012-10-22T17:31:28.577 回答