2009-08-27 58 views
22

我有一个Grails应用程序,它从XML文件加载它的数据并通过罗马传递RSS源。我没有任何域类,我的应用程序没有数据源。我不希望Grails在应用程序不需要它时加载内存中的hsql数据库。删除DataSource.groovy文件会阻止我启动Web应用程序,看起来好像数据源是必需的,但是如果我的应用程序不需要数据源,我可以做些什么吗?我可以配置没有数据源的Grails吗?

回答

19

以下步骤工作了新的应用程序(Grails的1.1.1),无需使用数据源运行:

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 

对于现有的应用程序上的版本至少为1.1(认为这是当Hibernate被做插件)你应该只能卸载插件并删除DataSource.groovy文件。

4

内存数据库非常轻便,所以如果您不需要真正的数据库,您应该坚持这一点。

+2

我们已经遇到了类似的问题。使用默认数据源设置在同一个tomcat实例上部署多个Grails应用程序不起作用。我相信这是因为hSQL实例在磁盘锁定文件上使用相同的东西。 – Gennadiy 2009-08-28 03:49:12

+2

是的,默认的生产数据源使用hql文件数据存储。您不能为多个grails应用程序使用相同的文件名,所以您需要更改数据源中的数据库名称。这很烦人。能够没有数据源仍然是可取的。即使它很轻便,如果你不打算使用它,为什么它有它。 – 2009-08-28 15:17:46

5

我能够注释掉数据源并获得默认的grails应用程序来运行。注释掉你的生产部分以同样的方式我DataSource.groovy中


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

注释掉下面的代码我也能去掉休眠使用“Grails的卸载,插件休眠”,仍然有插件的默认应用程序运行。我没有做过广泛的测试,但希望这对你有用。

2

这是一个很好的指南:http://digitalbreed.com/2011/using-grails-without-a-database

删除Grails的Hibernate插件。

  1. Grails的卸载,插件休眠
  2. 删除数据源配置文件的conf/DataSource.groovy中
  3. 显式声明服务非事务。缺省值为true,并且您的类方法将被代理,但如果没有Hibernate插件,则不存在事务管理器,并且部署将失败。

    类SomeService { 静态事务=假 // ... }

  4. 使用命令对象,而不是域对象,特别是如果你需要验证。

相关问题