2009-06-09 6 views
34

Grails 1.x에서는 grails.config.locations 지시어를 설정하여 외부 설정 파일을 사용할 수 있습니다. Datasource.groovy에서 데이터베이스 구성을 외부화하기 위해 (JNDI를 설정하지 않고) 비슷한 접근법이 있습니까?Grails 외부화 Grails 데이터 소스 설정

응용 프로그램 외부의 간단한 구성 파일에 DB 자격 증명을 구성 할 수 있으면 도움이 될 것입니다.

미리 감사드립니다.

답변

50

데이터 소스 구성을 외부화하는 방법으로 grails.config.locations에 지정된 특성 파일을 사용할 수 있습니다.

:

.... 
    .... 
    production { 
    dataSource { 
     dbCreate = "update" 
     driverClassName = "com.myorg.jdbcDriverNotExists" 
     url = "" 
     username = "" 
     password = "" 
    } 
    } 
    .... 
    .... 

내가 외부 속성 내 Config.groovy 파일에 파일을 지정합니다

내 DataSource.groovy에에서

내가 프로덕션 환경에 대해이 작업을 지정 : 아래는 내가 일반적으로 Grails 프로젝트를 설정하는 방법입니다

dataSource.driverClassName=oracle.jdbc.OracleDriver 
dataSource.url=jdbc:oracle:thin:@host:port:sid 
dataSource.username=sa 
dataSource.password=secret 
: (관례에 따라 grails-app/conf /에 저장) 속성 파일에서

grails.config.locations = [ "classpath:app-config.properties"] 
나는 실제 데이터 소스 정보를 지정

또한 Config.groovy에있는 다른 값을 덮어 쓰는 방법으로 속성 파일을 사용합니다. 응용 프로그램을 배포 할 때 데이터 소스 정보를 수정해야한다면 /WEB-INF/classes/app-config.properties 파일을 편집하고 다시 시작하십시오.

+0

이것은 마치 내가 한 것 같습니다. 귀하의 명확하고 간결한 답변을 주셔서 감사합니다, John :) – miek

+10

이것은 업그레이드 후 편집을 제외하고는 훌륭한 해결책입니다. 구성 외부화에 대한 내용은 을 참조하십시오. http://blog.zmok.net/articles/2009/04/22/playing-with-grails-application-configuration –

+0

브래드 (Brad)는 지적했듯이, 이것은 전쟁을 배치하기위한 실행 가능한 솔루션이 아닙니다. . 그가 게시 한 링크가 더 나은 대답입니다. – Mike

24

위의 대답은 실제로 구성을 구체화하지 않습니다. 그는 가까이 있지만 구성은 여전히 ​​응용 프로그램에 있습니다. 외부 구성이있는 응용 프로그램 외부의 위치를 ​​가리 키도록 응용 프로그램/서버를 시작할 때 JVM 환경 변수를 사용합니다. config.groovy 파일에서 환경 변수를 읽고 외부 구성 파일을 사용하십시오. 다음과 같은 것 :

def extConfig = System.properties.getProperty('ENVVAR'); 
grails.config.locations = [ "file:${extConfig}/${appName}-config.groovy"] 
1

나를 위해 이것은 작동하지 않는다. 환경 변수를 얻으려면.

더 나은 사용 :

System.getenv().get("ENVVAR").toString() 
0

그냥

grails.config.locations = [ 
      "file:/yourDirectory/${appName}/${Environment.current.name}-datasource.properties", 
      "file:/yourDirectory/${appName}/${Environment.current.name}-config.groovy", 
      "classpath:${appName}-${Environment.current.name}-datasource.properties", 
      "classpath:${appName}-${Environment.current.name}-config.groovy" 
    ] 

파일 Config.groovy 파일에 다음과 같은 구성 파일의 위치를 ​​넣어 그리고 당신의 적절한에서 데이터 소스 및 기타 설정 값에 대한 모든 세부 사항을 넣어 파일. 따라서 구성을 외부화하고 다시 시작하지 않아도 값을 변경할 수 있습니다.