我可以在没有数据源的情况下配置 Grails 吗?

Posted

技术标签:

【中文标题】我可以在没有数据源的情况下配置 Grails 吗?【英文标题】:Can I configure Grails with no datasource? 【发布时间】:2010-11-23 13:24:00 【问题描述】:

我有一个 Grails 应用程序,它从 xml 文件加载其数据并通过 rome 提供 rss 提要。我没有任何域类,我的应用程序没有数据源。当应用程序不需要它时,我不希望 Grails 加载内存中的 hsql db。删除 DataSource.groovy 文件会阻止我启动 Web 应用程序,似乎需要数据源,但如果我的应用程序不需要数据源,我能做些什么吗?

【问题讨论】:

【参考方案1】:

内存数据库非常轻量级,因此如果您不需要真正的数据库,您应该坚持使用它。

【讨论】:

我们遇到了类似的问题。使用默认数据源设置在同一个 tomcat 实例上部署多个 grails 应用程序不起作用。我相信这是因为 hSQL 实例在磁盘锁定文件或其他东西上使用相同。 是的,默认生产数据源使用 hql 文件数据存储。您不能为超过 1 个 grails 应用程序使用相同的文件名,因此您需要更改数据源中的数据库名称。这很烦人。能够只是没有数据源仍然是可取的。即使它是轻量级的,如果你不打算使用它,为什么还要在那里。【参考方案2】:

我能够注释掉数据源并运行一个默认的 grails 应用程序。以与我在 datasource.groovy 中注释掉以下代码相同的方式注释掉您的生产部分


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

我还能够使用“grails uninstall-plugin hibernate”删除休眠插件,并且仍然可以运行默认应用程序。我没有对此进行广泛的测试,但希望这对你有用。

【讨论】:

【参考方案3】:

以下步骤适用于在不使用数据源的情况下运行新应用 (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 文件。

【讨论】:

对于较新版本的 grails,您需要在 BuildConfig.groovy 中注释掉插件,而不是运行卸载插件。此外,您可以按照@Jared 在另一个答案中的建议将 DataSourcey.groovy 中的行注释掉。【参考方案4】:

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

删除 Grails 的 Hibernate 插件。

    grails 卸载插件休眠 删除数据源配置文件conf/DataSource.groovy

    明确声明服务为非事务性的。默认值为 true,您的类方法将被代理,但如果没有 Hibernate 插件,则没有事务管理器,部署将失败。

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

    使用命令对象而不是域对象,尤其是在您需要验证时。

【讨论】:

以上是关于我可以在没有数据源的情况下配置 Grails 吗?的主要内容,如果未能解决你的问题,请参考以下文章

在没有 SPSS 许可证的情况下从 Python、Java(groovy/grails)或 C++ 应用程序访问 SPSS 数据?

动态连接到 grails 中的数据库

如何在不在 grails 中生成视图的情况下调用动作 [关闭]

如何为 grails 插件配置日志记录?

在没有插件 web.xml 问题的情况下配置 Spring Security

Grails URL 验证