36 votes

Externalisation de la configuration de la source de données Grails

Grails 1.x permet d'utiliser des fichiers de configuration externes en définissant la directive grails.config.locations . Existe-t-il une approche similaire pour externaliser la configuration de la base de données dans Datasource.groovy (sans configurer JNDI)?

Il serait utile de pouvoir configurer les informations d'identification de la base de données dans un fichier de configuration simple en dehors de l'application.

Merci d'avance!

51voto

John Wagenleitner Points 6206

Vous pouvez utiliser un fichier de propriétés spécifiées dans le graal.config.des endroits comme un moyen d'externaliser la source de données de configuration. Ci-dessous comment j'ai habituellement un Grain de projet:

Dans ma base de données.groovy-je indiquer pour l'environnement de production:

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

Je précise externe fichier de propriétés dans ma Config.groovy:

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

Dans le fichier de propriétés (stockées dans graal-app/conf/) j'ai spécifier la source de données info:

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

J'ai aussi utiliser le fichier de propriétés comme un moyen de l'emporter sur d'autres valeurs qui sont dans la configuration.groovy. Lorsque l'application est déployée, si je dois modifier la source de données info je viens de modifier le /WEB-INF/classes/app-config.les propriétés de fichier et redémarrez.

25voto

Neomusashi Points 329

La réponse ci-dessus n'externalise pas vraiment la configuration. Il est proche, mais la configuration réside toujours dans l'application. J'utiliserais un environnement JVM var au démarrage de l'application / serveur pour pointer vers un emplacement en dehors de l'application où réside la configuration externe. Lisez l'environnement var dans le fichier config.groovy et utilisez-le pour obtenir le fichier de configuration externe. Quelque chose comme ça:

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

1voto

Simon Points 11

Pour moi, cela ne fonctionne pas. Pour obtenir une variable d'environnement.

Meilleure utilisation:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X