我正在使用多种服务和Quartz Jobs开发grails应用程序。在Grails Quartz Jobs中,我注入了一些服务,这些服务向服务器发出请求,并根据从服务器返回的结果执行一些操作。
现在,有时服务器由于某些原因而关闭,并且与该服务器通信的服务会获得connectionException。因为所有这些都发生在后端,用户不知道它。我希望每当我的服务遇到服务器关闭时,在GSP顶部向用户显示消息(无论服务器发生故障时当前用户是哪个GSP页面)。
当我的服务开始与服务器通信时(服务器启动时),该消息将消失。据我所知,FLASH可以在这里使用,但在单个请求中仍然存在,但我想显示此消息,直到服务器可访问。
在Grails中实现这一目标有哪些不同的选择?什么是最好的选择?
提前致谢:)
答案 0 :(得分:1)
创建一个状态服务,用于保存易失性统计信息属性,将其设置为反映更改时的状态,并使用标记库读取状态并将其包含在布局/ GSP中。
这是一个非常快速的例子
首先是服务:
// MyStatusService
package com.example
class MyStatusService {
boolean isServerDown = false
...
}
然后在你的代码中:
// From within your code, setting the status
def myStatusService // assumes you can inject it
...
myStatusService.isServerDown = true // or false depending on your code
...
标签库:
// MyStatus TagLibrary
package com.example
class MyStatusTagLib {
def myStatusService
static namespace = "myStatus"
def checkStatus = { attrs ->
if (myStatusService.isServerDown) {
out << "Server is down message here."
}
}
}
最后是你的GSP甚至是你的布局:
<myStatus:checkStatus />
希望有所帮助。