我想与其他grails应用程序共享我的grails应用程序(Grails域类和服务)的数据访问部分。一个是面向Web应用程序的标准客户端,另一个(尚未编写)将用于定期后台任务,例如使用Quartz插件或类似的提醒电子邮件等,其中UI将仅用于内部用户的统计/控制。
我不希望这一切都捆绑在一个Grails应用程序中,因为我希望能够扩展它们并在不同的机器上运行它们。这样做的正确方法是什么?我已经在更多遗留Java Web应用程序中完成了这项工作,方法是将共享数据访问类捆绑到.jar中,并将它们包含在多个应用程序所需的位置,但我不确定这是否适合Grails。
我考虑过一个完整的面向服务的体系结构,其中第三个grails应用程序负责所有数据访问,并且所描述的两个应用程序通过REST调用此服务应用程序来完成所有数据访问,但这超出了简短范围因为面向webapp的客户已经写好了。
答案 0 :(得分:4)
通常这是通过插件完成的。创建您想要在应用程序之间共享的域类,服务,控制器甚至默认gsp,并将它们创建为插件。这样您就可以将它们安装在需要该行为的任何Grails应用程序中。
我用一些通用的会计类型行为来做到这一点,这种行为在我写的应用程序,应付账款等应用程序中相当普遍。
一件好事是,您可以编写插件并使用测试数据源单独测试,然后在将其安装到Grails应用程序时,它将使用应用程序数据源。它将具有默认的gsp和控制器,为您提供一组基本的行为,您可以在实际的应用程序中覆盖这些行为。