2014-11-04 100 views
0

我有一个存储XML数据的应用程序。当用户请求数据时,XML被解析成实体,然后通过类似于servlet的东西向他显示。Java资源池

我的问题是,在每次刷新之后,类似servlet的服务器必须再次处理数据并解析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个不同的实体,然后询问具有特定ID的实体是否存在于池中。

有什么图书馆可以帮助我解决问题吗? 非常感谢!

+1

试着也研究缓存框架。 (例如ehcache,oscache等) – 2014-11-04 12:46:11

回答

0

如果您指的是Commons Pool,那么您可以看看KeyedObjectPool界面。

“键控”池接口。

键控池为每个键值维护一个实例池。

+0

谢谢,这看起来像我想要的。我会试试看。 – toothbrush 2014-11-04 12:41:35