部署到AppFog时未检测到环境变量

时间:2012-11-18 21:17:05

标签: java spring appfog

在将我的Spring应用程序部署到AppFog时,似乎没有检测到环境变量。

我在控制台中声明了环境变量:

Environment Variables

我尝试在我的应用代码中引用这些内容,如下所示:

<context:property-placeholder 
    location="classpath:server.common.properties,
    classpath:server.${concorde-env}.properties"/>

但是,这会产生错误:

  

引起:java.io.FileNotFoundException:类路径资源   无法打开[server。$ {concorde-env} .properties],因为它确实如此   不存在

此方法适用于其他(非AppFog)环境。

我通过调用

注销了这些属性
 log.info("Properties: " + System.getProperties().toString());

并没有将这些属性显示为可用。

但是,如果我执行af env <<MY_APP_NAME>>,则会将变量显示为存在:

+--------------------------+------------------+
| Variable                 | Value            |
+--------------------------+------------------+
| concorde-env             | test             |
| spring.profiles.active   | runtime,test     |
+--------------------------+------------------+

在运行时将这些变量暴露给我的应用程序我缺少什么?

1 个答案:

答案 0 :(得分:1)

尝试访问这样的值:System.getenv("concorde-env")以查看是否可以在代码中访问环境var。

基于错误消息"class path resource [server.${concorde-env}.properties] cannot be opened because it does not exist",即使使用空字符串,${concorde-env}似乎也未被评估或替换。

看起来Spring有其他方法可以访问env vars。请尝试使用#{systemEnvironment['concorde-env']}代替${concorde-env}