缓存WSDL响应的有效方法

时间:2013-02-02 19:20:29

标签: java xml database caching wsdl

我的基于Java的Web应用程序正在与远程WSDL Web服务进行交互。

我构造了一个特定于服务的WSDL请求。我使用HTTP客户端发出此WSDL请求,并返回WSDL响应。

由于我的情况可以接受,为了优化性能和带宽使用,我想缓存WSDL响应,以便下次发出相同的请求时,我的Web应用程序可以直接从持久数据库加载响应

使用JAXB.marshalJAXB.unmarshal,我可以获得序列化XML格式和“Java对象表示”的响应表示。所以我想到了建立一个持久化编组XML表示的数据库。但在我的情况下,典型响应的XML文件表示可以很容易地为200千字节。正如我们所知道的XML文件,这个大小与XML的详细程度有很大关系,可能会大大减少优化数据库容量使用和数据库读写速度。

是否有一种有效的缓存和持久化WSDL响应的方法?也就是说,我正在寻找一种为函数f(someWSDLRequest) -> someWSDLResponse

实现映射的好方法

1 个答案:

答案 0 :(得分:2)

要缓存,您需要一个键和一个值。在这种情况下,值显然是来自SOAP服务的响应。

对于密钥,为什么不尝试将参数连接成一个字符串(我之前已经多次看过)或者在请求中进行MD5哈希。它使缓存键变得小而简单,如果请求相同,它将始终相同。

当请求进入时,您在缓存中有响应,请提供服务。

如果它不存在,请从数据库中获取它,将其放入缓存中然后提供它。

如果底层对象发生了更改(缓存的响应),请使缓存无效,或者只是在其上放置一个到期时间,并让它随着时间的推移而发生。