2013-07-31 4 views
1

Я хочу выполнить кварцевое задание для заполнения карты (из вызова веб-сервисов) через регулярные промежутки времени, а затем получить доступ к этой карте с веб-уровня (для отображения пользователю).Application wide map

Я думал просто делать услугу (учитывая, что услуга является одиночной), но я немного беспокоюсь о the recommendation not to store state in a service.

class MapService { 
    def map = [:] 
} 

Каков наилучший способ для этого?

+0

я бы хранить карту в БД, и на каждом Intervall Позовите карту из db и нажмите новые записи и сохраните, так что на веб-слове вы получите только из db. Другая идея заключалась бы в том, что вы не делаете промежуточной популяции карты, но всегда, когда пользователь запрашивает ее отображение, то ее постоянный –

+0

i надеялся не сохранять их в db ... или извлекать их, когда пользователь посещает страницу:) – zoran119

+0

Удалось ли вам добиться того, что вы искали? – Alidad

ответ

2

Если вы не беспокоитесь о сохранении данных в памяти во время работы приложения, вы можете использовать ConcurrentHashMap в своей службе и хранить необходимые данные. Однако посмотрите на это как на кеш-память.

Как вы сказали, услуги одноточечны only one instance of the service ever exists и concurrentMap является A hash table supporting full concurrency of retrievals and adjustable expected concurrency for updates.

Ex:

calss MyService() { 

    ConcurrentHashMap cacheMap = [:] 

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

    def resetCache(){ 
     cacheMap = [:] 
    } 

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

} 

похож post

Смежные вопросы