Grails 如何在会话中存储quartz作业的结果?
我已经在Grails2.1应用程序中安装了Quartz插件。每5分钟触发一个作业,该作业将计算一些数字。数字显示在每页的侧栏上。计算结果会经常更改,我的目标是当用户刷新屏幕时,他们可以在侧边栏上看到新结果。 现在,我的方法是向控制器发送ajax调用,从数据库中获取结果并在屏幕上呈现 是否有任何方法将作业的计算结果存储(缓存)到数据库以外的其他位置,以便我的视图可以使用它们,而无需在用户每次单击链接或刷新屏幕时执行查询 我考虑过会话,但不确定它是否可能超出正常的web请求,或者它是否是一个好的解决方案。是否有任何解决方案或替代方法? 谢谢Grails 如何在会话中存储quartz作业的结果?,grails,quartz-scheduler,grails-2.0,Grails,Quartz Scheduler,Grails 2.0,我已经在Grails2.1应用程序中安装了Quartz插件。每5分钟触发一个作业,该作业将计算一些数字。数字显示在每页的侧栏上。计算结果会经常更改,我的目标是当用户刷新屏幕时,他们可以在侧边栏上看到新结果。 现在,我的方法是向控制器发送ajax调用,从数据库中获取结果并在屏幕上呈现 是否有任何方法将作业的计算结果存储(缓存)到数据库以外的其他位置,以便我的视图可以使用它们,而无需在用户每次单击链接或刷新屏幕时执行查询 我考虑过会话,但不确定它是否可能超出正常的web请求,或者它是否是一个好的解决
您可以使用
grailsApplication
。只需将grailsApplication
注入作业,然后使用赋值grailsApplication.config.calcResults=calculatorService.runCalculators
您可能还需要初始化
Bootstrap.groovy
中的grailsApplication.config.calcResults
值,以便在作业第一次运行之前它可用。您可以使用grailsApplication
。只需将grailsApplication
注入作业,然后使用赋值grailsApplication.config.calcResults=calculatorService.runCalculators
您可能还需要初始化
Bootstrap.groovy
中的grailsApplication.config.calcResults
值,以便在作业第一次运行之前它可用。Grails中的服务默认为单例,因此,在Quartz作业中访问的calculatorService
将与在其连接的其他类(例如控制器)中访问的calculatorService
相同
只需将值存储在类级别的calculatorService
中,并为控制器添加一个访问器方法来检索数据
class CalculatorService {
ConcurrentHashMap cache = [:]
def runCalculators() {
// Do calculations
cache.result1 = calculatedResult1
// etc...
}
def retrieveCalculation(String key) {
cache[(key)]
}
}
Grails中的服务默认为单例服务,因此Quartz作业中访问的
calculatorService
将与连接它的其他类(例如控制器)中访问的calculatorService
相同
只需将值存储在类级别的calculatorService
中,并为控制器添加一个访问器方法来检索数据
class CalculatorService {
ConcurrentHashMap cache = [:]
def runCalculators() {
// Do calculations
cache.result1 = calculatedResult1
// etc...
}
def retrieveCalculation(String key) {
cache[(key)]
}
}
否决这个答案的人是否愿意解释他们的反对意见?否决这个答案的人是否愿意解释他们的反对意见?