我的基于Java的web应用程序正在与远程WSDL web服务交互。
我构造了一个特定于服务的WSDL请求。我使用HTTP客户端发出这个WSDL请求,然后得到一个WSDL响应。
由于这对于我的环境是可接受的,为了优化性能和带宽使用,我希望缓存WSDL响应,以便下次发出相同的请求时,我的web应用程序可以直接从持久化数据库加载响应。
使用JAXB.marshal和JAXB.unmarshal,我可以获得序列化的XML格式的响应表示和"Java object表示“。因此,我有了建立一个持久存储编组XML表示的数据库的想法。但是在我的例子中,典型响应的XML文件表示很容易就是200KB大小。正如我们对于XML文件所知道的那样,这个大小在很大程度上与XML的冗长有关,并且可能会大大减少,从而优化数据库容量使用和数据库读写速度。
有没有一种缓存和持久化WSDL响应的有效方法?也就是说,我正在寻找一种好方法来实现函数f(someWSDLRequest) -> someWSDLResponse的映射
发布于 2013-02-03 10:02:03
要缓存,您需要一个键和一个值。在这种情况下,值显然是来自SOAP服务的响应。
对于键,为什么不尝试将参数连接到一个字符串中(我以前见过很多次这样做),或者对请求执行MD5散列。它使缓存键变得小而简单,如果请求是相同的,缓存键将始终是相同的。
当一个请求进入时,你在缓存中有一个响应,为它服务。
如果它不存在,则从数据库中获取它,将其放入缓存中,然后提供服务。
如果底层对象发生了变化(缓存的响应),那么就让缓存失效,或者只是在缓存上加上一个过期时间,让它随时间发生。
https://stackoverflow.com/questions/14665539
复制相似问题