Tôi có một ứng dụng Grails tải dữ liệu của nó từ các tệp xml và cung cấp nguồn cấp dữ liệu rss qua rome. Tôi không có bất kỳ lớp miền nào và ứng dụng của tôi không có nguồn dữ liệu. Tôi không muốn Grails tải một bộ nhớ hsql db khi ứng dụng không cần đến nó. Xóa tệp DataSource.groovy ngăn tôi khởi chạy ứng dụng web, có vẻ như nguồn dữ liệu là bắt buộc, nhưng có bất kỳ điều gì tôi có thể làm nếu ứng dụng của tôi không cần nguồn dữ liệu không?Tôi có thể định cấu hình Grails không có nguồn dữ liệu không?
Trả lời
Các bước sau đây làm việc cho một ứng dụng mới (Grails 1.1.1) để chạy mà không sử dụng một nguồn dữ liệu:
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
Đối với một ứng dụng hiện trên ít nhất phiên bản 1.1 (nghĩ đó là khi ngủ đông đã được thực hiện một plugin) bạn sẽ có thể chỉ gỡ cài đặt plugin và xóa tệp DataSource.groovy.
Cơ sở dữ liệu trong bộ nhớ rất nhẹ nên bạn nên gắn bó với điều đó nếu bạn không cần một cơ sở dữ liệu thực.
Tôi đã có thể nhận xét nguồn dữ liệu và nhận ứng dụng grails mặc định để chạy. Nhận xét ra phần sản xuất của bạn trong cùng một cách tôi nhận xét ra đoạn mã sau vào datasource.groovy
/* development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop','update'
url = "jdbc:hsqldb:mem:devDB"
}
}*/
Tôi cũng đã có thể loại bỏ các chế độ ngủ đông cắm sử dụng "grails gỡ bỏ cài đặt plugin ngủ đông" và vẫn có thời gian ứng dụng mặc định . Tôi đã không làm thử nghiệm rộng rãi với điều này nhưng hy vọng điều này làm việc cho bạn.
Đây là hướng dẫn tốt: http://digitalbreed.com/2011/using-grails-without-a-database
Xóa plugin Hibernate của Grails.
- grails gỡ bỏ cài đặt plugin ngủ đông
- Xóa các tập tin cấu hình nguồn dữ liệu conf/DataSource.groovy
Rõ ràng tuyên bố dịch vụ như không giao dịch. Mặc định là true và các phương thức lớp của bạn sẽ được proxy, nhưng không có plugin Hibernate thì không có trình quản lý giao dịch và việc triển khai sẽ thất bại.
lớp SomeService { tĩnh giao dịch = false // ... }
đối tượng Sử dụng lệnh thay vì đối tượng miền, đặc biệt là nếu bạn cần xác nhận.
Chúng tôi đã gặp sự cố tương tự. Triển khai thêm sau đó một ứng dụng grails trên cùng một cá thể tomcat với các thiết lập nguồn dữ liệu mặc định không hoạt động. Tôi tin rằng điều này là bởi vì các trường hợp hSQL sử dụng cùng một tập tin trên đĩa khóa hoặc một cái gì đó. – Gennadiy
Vâng, nguồn dữ liệu sản xuất mặc định sử dụng kho dữ liệu tệp hql. Bạn không thể sử dụng cùng tên tệp cho hơn 1 ứng dụng grails, vì vậy bạn cần thay đổi tên cơ sở dữ liệu trong nguồn dữ liệu. Nó khá là khó chịu. Việc có thể không có nguồn dữ liệu sẽ vẫn thích hợp hơn. Ngay cả khi nó nhẹ, nếu bạn không sử dụng nó thì tại sao lại có nó ở đó. –