2009-08-27 49 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. 使用命令對象,而不是域對象,特別是如果你需要驗證。

相關問題