Grails在bootstrap完成后执行服务方法

时间:2013-04-16 08:19:53

标签: grails bootstrapping servletcontextlistener

快速查看引导程序的init()完成后是否可以运行代码块?

这是最好的方式吗?

我有一些我需要连接的外部系统,我希望在此块完成时显示一个'索引'页面,说“连接到子系统”或类似的东西,然后一旦完成,应用程序正常工作。

我是否正确地认为你无法访问页面直到引导后?在此服务运行时,是否有一种简单的方法可以限制人们访问系统的其他部分?这看起来可行吗?

为任何帮助干杯!

1 个答案:

答案 0 :(得分:1)

根据您的要求,您也指出bootstrap不是您的朋友。您需要一个用于屏幕的视图和控制器,以及一个用于连接外部系统逻辑的服务。您还需要一个标志或方法,以便在应用程序或会话范围内对通信进行健全性检查。然后我建议创建一个过滤器并检查是否有连接,如果没有将它们重定向到将连接它的控制器。 须藤:

class ConnectionFilters {
def filters = {
    loginCheck(controller: '*', action: '*') {
        before = {
            if (!session.connection ) {
                redirect(controller:'connection',action: 'connect')
                return false
            }
        }
    }
}

}

class controller {
    def connectionService
    def connect (){
        try {
            connectionService.connectTo('systemx')
            connectionService.connectTo('systemy')
            connectionService.connectTo('systemz')
        }
        catch(e){
            session.connection = false
            redirect view:'error'
        }
        session.connection = true
    }
}


class ConnectionService {
    def connectTo(systemname){
        ....
    }
}