Quartz ジョブで (Web サービス呼び出しから) 定期的にマップにデータを入力し、Web レイヤーからそのマップにアクセスして (ユーザーに表示する) 必要があります。
(サービスがシングルトンであることを考えると)サービスを行うことだけを考えていましたが、状態をサービスに保存しないという推奨事項が少し心配です。
class MapService {
def map = [:]
}
これを行う最善の方法は何ですか?
Quartz ジョブで (Web サービス呼び出しから) 定期的にマップにデータを入力し、Web レイヤーからそのマップにアクセスして (ユーザーに表示する) 必要があります。
(サービスがシングルトンであることを考えると)サービスを行うことだけを考えていましたが、状態をサービスに保存しないという推奨事項が少し心配です。
class MapService {
def map = [:]
}
これを行う最善の方法は何ですか?
アプリの実行中にデータをメモリに保持することを心配しない場合はConcurrentHashMap
、サービスで を使用して、必要なデータを保存できます。ただし、信頼できるストレージではないキャッシュと見なしてください。
あなたも言ったように、サービスはシングルトンonly one instance of the service ever exists
でありconcurrentMap
、A 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)
}
}
類似の投稿