2009-08-27 7 views
22

J'ai une application Grails qui charge ses données à partir de fichiers XML et fournit des flux rss via Rome. Je n'ai aucun cours de domaine et mon application n'a pas de source de données. Je ne veux pas que Grails charge une mémoire hsql en mémoire lorsque l'application n'en a pas besoin. La suppression du fichier DataSource.groovy m'empêche de lancer l'application Web, il semble que la source de données soit requise, mais y a-t-il quelque chose que je puisse faire si mon application n'a pas besoin d'une source de données?Puis-je configurer Grails sans source de données?

Répondre

19

Les étapes suivantes travaillent pour une nouvelle application (Grails 1.1.1) pour exécuter sans utiliser une source de données:

grails create-app nodb 
cd nodb 
grails uninstall-plugin hibernate 
rm grails-app/conf/DataSource.groovy 
grails create-controller Foo 
<add "render "hi bar" to the index closure of ./grails-app/controllers/FooController.groovy> 
grails run-app 
http://localhost:8080/nodb/foo - prints hi bar 

Pour une application existante sur au moins la version 1.1 (penser que ce lorsqu'Hibernate a fait un plugin) vous devriez pouvoir désinstaller-plugin et supprimer le fichier DataSource.groovy.

4

La base de données en mémoire est très légère, vous devriez donc vous y tenir si vous n'avez pas besoin d'une vraie base de données.

+2

Nous avons rencontré un problème similaire. Le déploiement de plusieurs applications grails sur la même instance de tomcat avec les paramètres de source de données par défaut ne fonctionne pas. Je crois que c'est parce que les instances hSQL utilisent la même chose sur les fichiers de verrouillage de disque ou quelque chose. – Gennadiy

+2

Oui, la source de données de production par défaut utilise un magasin de données de fichier hql. Vous ne pouvez pas utiliser le même nom de fichier pour plus d'une application Grails, vous devez donc modifier le nom de la base de données dans la source de données. C'est assez agaçant. Pouvoir simplement ne pas avoir de source de données serait toujours préférable. Même si c'est léger, si vous ne l'utilisez pas pourquoi l'avoir là. –

5

J'ai été en mesure de commenter la source de données et de lancer une application Grails par défaut. Commentez votre section de production de la même manière que je commentais le code suivant dans datasource.groovy


/* development { 
     dataSource { 
      dbCreate = "create-drop" // one of 'create', 'create-drop','update' 
      url = "jdbc:hsqldb:mem:devDB" 
     } 
    }*/ 

J'ai également pu supprimer le plug-in mise en veille prolongée à l'aide « Grails désinstaller le plug-in mise en veille prolongée » et ont encore la piste de l'application par défaut . Je n'ai pas fait de tests approfondis avec ceci mais j'espère que cela fonctionne pour vous.

2

Ceci est un bon guide: http://digitalbreed.com/2011/using-grails-without-a-database

Retirer le plugin Mise en veille prolongée de Grails.

  1. Grails désinstaller le plug-in hibernent
  2. Supprimer le fichier de configuration de source de données conf/DataSource.groovy
  3. déclarer Explicitement services comme non transactionnel. La valeur par défaut est true et vos méthodes de classe seront transmises par proxy, mais sans le plugin Hibernate, il n'y a pas de gestionnaire de transactions et le déploiement échouera.

    classe SOMESERVICE { transactionnel statique = false // ...}

  4. objets de commande d'utiliser à la place des objets de domaine, en particulier si vous avez besoin de validation.