0

Spring アプリを AppFog にデプロイすると、環境変数が検出されないようです。

コンソールで宣言された環境変数があります。

環境変数

そして、次のように、アプリ コード内からこれらを参照しようとします。

<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     |
+--------------------------+------------------+

これらの変数を実行時にアプリに公開するには何が欠けていますか?

4

1 に答える 1

1

次のように値にアクセスしてみてくださいSystem.getenv("concorde-env")。環境変数にコードでアクセスできるかどうかを確認してください。

エラーメッセージに基づくと、空の文字列でも評価または置換されていない"class path resource [server.${concorde-env}.properties] cannot be opened because it does not exist"ようです。${concorde-env}

Springにはenv変数にアクセスする他の方法があるようです。#{systemEnvironment['concorde-env']}代わりに試してください${concorde-env}

于 2012-11-19T08:21:55.933 に答える