我可以在没有数据源的情况下配置 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 中生成视图的情况下调用动作 [关闭]