2012-11-18 2 views
0

AppFog에 Spring App을 배포 할 때 환경 변수가 감지되지 않는 것 같습니다.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()); 

을 그리고 가능으로 이러한 속성을 표시하지 않습니다

나는 호출하여 속성을 로그 아웃.

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

내가 런타임에 내 응용 프로그램에 노출이 변수를 만들기 위해 실종 무엇 : 나는 af env <<MY_APP_NAME>>을 할 경우

그러나, 현재와 같은 변수를 보여줍니다?

답변

1

코드에 액세스 할 수있는 환경인지 확인하려면 System.getenv("concorde-env")과 같은 값에 액세스 해보십시오.

오류 메시지 "class path resource [server.${concorde-env}.properties] cannot be opened because it does not exist"에 따르면 ${concorde-env}은 빈 문자열에도 평가 중이거나 바뀌지 않은 것으로 보입니다.

스프링에는 env vars에 액세스하는 다른 방법이 있습니다. ${concorde-env} 대신 #{systemEnvironment['concorde-env']}을 시도하십시오

+0

안녕하세요, Tim, 답변 해 주셔서 감사합니다! 나는 같은 문제에 직면했고'System.getenv ("MY_ENV")'로 고쳤다. 중요 사항! AppFog에서는 점으로 구분 된 변수를 허용하지 않고'_' 또는'-' 만 사용합니다. 도트를 사용하면'null '이 반환됩니다. – maqjav