0

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

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

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

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

提前致谢 :)

4

1 回答 1

1

创建一个状态服务,它保留一个 volatile stats 属性,将其设置为在状态更改时反映状态,并使用标签库读取状态并将其包含在您的布局/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 />

希望有帮助。

于 2014-12-02T11:14:17.270 回答