某些服务出现故障时,在Grails视图顶部显示状态消息

时间:2014-12-02 11:06:06

标签: grails quartz-scheduler gsp flash-message grails-services

我正在使用多种服务和Quartz Jobs开发grails应用程序。在Grails Quartz Jobs中,我注入了一些服务,这些服务向服务器发出请求,并根据从服务器返回的结果执行一些操作。

现在,有时服务器由于某些原因而关闭,并且与该服务器通信的服务会获得connectionException。因为所有这些都发生在后端,用户不知道它。我希望每当我的服务遇到服务器关闭时,在GSP顶部向用户显示消息(无论服务器发生故障时当前用户是哪个GSP页面)。

当我的服务开始与服务器通信时(服务器启动时),该消息将消失。据我所知,FLASH可以在这里使用,但在单个请求中仍然存在,但我想显示此消息,直到服务器可访问。

在Grails中实现这一目标有哪些不同的选择?什么是最好的选择?

提前致谢:)

1 个答案:

答案 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 />

希望有所帮助。