Pregunta

Griales 1.x permite el uso de archivos de configuración externos mediante el establecimiento de la grails.config.locations Directiva. ¿Hay un enfoque similar disponible para la externalización de la configuración de base de datos en Datasource.groovy (sin configurar JNDI)?

Se demostraría útil para poder configurar las credenciales de base de datos en un archivo de configuración simple fuera de la aplicación.

Gracias de antemano!

¿Fue útil?

Solución

Puede utilizar un archivo de propiedades especificado en los grails.config.locations como una forma de exteriorizar la configuración de fuente de datos. A continuación se muestra cómo normalmente He definido un proyecto Grails:

En mi DataSource.groovy especifico esto para el entorno de producción:

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

especifico presentar una propiedades externas en mi Config.groovy:

grails.config.locations = [ "classpath:app-config.properties"]

En el archivo de propiedades (almacenado en griales-app / conf /) se especifica la información de origen de datos reales:

dataSource.driverClassName=oracle.jdbc.OracleDriver
dataSource.url=jdbc:oracle:thin:@host:port:sid
dataSource.username=sa
dataSource.password=secret

También utilizo el archivo de propiedades como una forma de anular otros valores que están en Config.groovy. Cuando se despliega la aplicación, aunque tenga que modificar la información de origen de datos que acaba de editar el archivo /WEB-INF/classes/app-config.properties y reinicie.

Otros consejos

La respuesta anterior no realmente exteriorizar configuración. Él está cerca, pero la configuración todavía reside en la aplicación. Me gustaría utilizar un entorno JVM var en el inicio de la aplicación / servidor para que apunte a una ubicación fuera de la aplicación en la que reside la configuración externa. Lea en el entorno en el archivo var config.groovy y usarlo obtener el archivo de configuración externo. Algo como esto:

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

Para mí esto no funciona. Para obtener una variable de entorno.

Mejor uso:

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

Sólo hay que poner la ubicación del archivo de configuración de la siguiente manera en Config.groovy archivo

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"
    ]

Y poner todos los detalles sobre otros valores de configuración de origen de datos y en el archivo correspondiente. Por lo tanto puede externalizar la configuración y no es necesario reiniciar para cambiar los valores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top