应用范围广

时间:2013-07-31 06:42:57

标签: grails

我希望石英作业定期填充地图(来自Web服务调用),然后从Web图层访问该地图(以显示给用户)。

我在考虑做一项服务(假设服务是单身),但有点担心the recommendation not to store state in a service

class MapService {
    def map = [:]
}

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

如果您不担心在应用程序运行时将数据保留在内存中,您可以在服务中使用ConcurrentHashMap并存储所需的数据。把它看作缓存而不是可靠的存储。

正如您所说,服务是单身only one instance of the service ever existsconcurrentMapA hash table supporting full concurrency of retrievals and adjustable expected concurrency for updates.

前:

calss MyService() {

    ConcurrentHashMap cacheMap = [:]

    def retrieveCache(String key) {
        cacheMap[(key)]
    }

    def resetCache(){
        cacheMap = [:]
    }

    def doSomething(){
        ..
        cacheMap.put(key,value)
    }

}

类似post