2014-11-04 2 views
0

У меня есть приложение, которое хранит данные в XML. Когда пользователь запрашивает данные, XML анализируется на сущности, которые затем показываются ему через нечто вроде сервлета.Пул ресурсов Java

Моя проблема заключается в том, что после каждого обновления, что-то вроде сервлета необходимо обработать данные снова, а синтаксический анализ XML стоит дорого. Существует слишком много XML-данных для хранения всех данных в памяти.

Я думал о чем-то вроде пула ресурсов, где программа запрашивает пул, если есть Сущность с именем foo в пуле. Если есть, foo возвращается из пула, если нет, foo создан из XML и сохраняется в пуле.

Что-то вроде этого:

Entity entity = null; 
entity.setId(id); 
for(Entity entityFromPool : pool.getAllEntities()){ 
     if(entityFromPool.getId().equals(entity.getId())){ 
      entity = entityFromPool(); 
      isInPool = True; 
} 
if(!isInPool){ 
    entity = getEntityFromXML(); 
} 

Я прочитал о апач объект Объединив, но если я правильно понимаю, я не могу хранить F.E. 5 разных сущностей, а затем спросить, существует ли сущность с определенным идентификатором в пуле.

Есть ли библиотека, которая может помочь с моей проблемой? Большое спасибо!

+1

Попытайтесь также изучить рамки кэширования. (например, ehcache, oscache и т. д.) –

ответ

0

Если вы имеете в виду Commons Pool, то вы можете взглянуть на интерфейс KeyedObjectPool.

Интерфейс объединения «с ключом».

Пул с ключами поддерживает пул экземпляров для каждого значения ключа.

+0

Спасибо, это похоже на то, что я хочу. Я попробую и посмотрю. – toothbrush

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