如何在JAVA中开发/组装SOAP缓存

时间:2013-09-09 11:04:50

标签: java xml web-services caching soap

我的测试实验室中有以下架构:

  • N个SOAP客户端向不同的Web服务发出请求(我无法控制客户端技术,但请求通过HTTP始终是SOAP XML);

  • 1个网关将为所有传入的SOAP请求提供服务,并将它们路由到正确的WS。

问题:

我的服务每天收到数百(有时是数千)的请求。其中许多是GET请求,只收集信息。因此,其中许多请求是相似的,唯一的区别是:

  • Soap-Env \ Header中的1个控制字段,用于标识每个请求(请求ID)。
  • Soap-Env \ Body中的1个控制字段,用于标识请求创建的时间戳。

解决方案:

在网关中实施缓存机制。当在网关中收到对WS XPTO的请求时,缓存机制会将其与该WS的缓存请求进行比较,如果它们相等,则缓存的响应将返回给客户端,从而避免查询目标WS。

我正在考虑从XML请求字符串中删除2个请求控制属性,然后将其存储在缓存后端中。我可以对每个传入的请求执行相同的操作,然后将其与缓存的请求进行比较。

要求:

  • 使用JAVA实施;
  • 我需要为每个WS维护一个缓存的请求/响应;
  • 后端在读/写响应时间必须非常快;
  • XML SOAP请求的比较必须由后端处理,因为为了性能,我不能顺序检索它们并在JAVA中进行比较。

问题:

鉴于此详细描述(对不起它的长度),我想听听技术最适合我的需求的专家,特别是后端。我已经考虑过NoSQL和In-memory键值存储,但我不能确信其中一个会满足我的所有需求。

  • 我应该将XML存储在常规字符串数据库字段中,然后进行简单的WHERE查询吗?
  • 我应该将XML请求转换为JSON文档,将其存储在NoSQL DB中并进一步查询并以这种方式比较请求吗?
  • 我应该选择内存数据库系统,将条目存储为: (service_name, [request_XML, response_XML])

1 个答案:

答案 0 :(得分:1)

您是否探讨了EHCacheibm中的具体示例也可以帮助您

另请考虑在clientside

进行缓存