您的问题一起包含几个单独的问题。让我们慢慢开始。ServletContext是可以将句柄存储到缓存的好地方。但是您需要通过每个服务器实例具有缓存来付费。应该没问题
如果要在更大范围内注册缓存,请考虑将其注册到JNDI。
缓存问题。基本上,您是通过webservice检索xml。如果您通过HTTP访问此Web服务,则可以在您的一侧安装简单的HTTP代理服务器,以处理xml的缓存。下一步将是在某种本地对象缓存中缓存已解析的xml。每个服务器可以存在此缓存,没有任何问题。在第二种情况下,EHCache将做得很好。在这种情况下,处理链将是这样的
Client- http request -> servlet -> look into local cache - if not cached -> lookinto http proxy (xml files) -> do proxy job (http to webservice)。
优点:
- 每个服务器实例的本地缓存,其中仅包含请求的xml中的对象
- 一个与我们的Web应用程序在相同硬件上运行的http代理。
- 扩展webapp的可能性,而无需为xml文件添加新的http代理。
缺点:
- 更高级别的基础架构
- +1故障点(http代理)
- 更复杂的部署
更新:不要忘记总是将HTTP HEAD请求发送到代理,以确保缓存是最新的。



