2012-11-18 77 views
0

將我的Spring應用程序部署到AppFog時似乎沒有檢測到環境變量。部署到AppFog時未檢測到環境變量

我在控制檯中聲明的環境變量:

Environment Variables

我嘗試我的應用程序代碼內引用這些,就像這樣:

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

然而,這產生錯誤:

Caused by: java.io.FileNotFoundException: class path resource [server.${concorde-env}.properties] cannot be opened because it does not exist

此方法工作在其他(非AppFog)環境中很好。

我通過調用登出屬性:

log.info("Properties: " + System.getProperties().toString()); 

而且它不會顯示這些特性可用。

但是,如果我做一個af env <<MY_APP_NAME>>,它顯示了變量存在:

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

我缺少的是讓這些變量在運行時暴露在我的應用程序?

回答

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變量的方法。嘗試#{systemEnvironment['concorde-env']}而不是${concorde-env}

+0

嘿Tim,謝謝你的回答!我遇到了同樣的問題,我用'System.getenv(「MY_ENV」)'修復了它。重要的提示! AppFog不允許帶有分隔點的變量,只能使用'_'或'-'。如果你使用點,它會返回'null'。 – maqjav