spring - Spring 的 DeferredResult 不适用于 Spring-ws (SOAP)
问题描述
我们想在 spring-ws 中使用 DeferredResult 处理一个soap请求。我们无法更改 wsdl。
下面是我们尝试的代码片段:
@PayloadRoot(
namespace=NAMESPACE_URL,
localPart="ABC")
@ResponsePayload
Public CallPerson(@RequestPayload CallRequest,
@SoapHeader("{"+NAMESPACE_HEADER_URL+"}Credentials")SoapHeaderElementheaderDetails){
DeferredData deferredData = new DeferredData();
// Some other thread would call deferredData.setResult() to resume control & return
return deferredData;
}
class DeferredData extends DeferredResult<String>
这里的 DeferredData 类扩展了 DeferredResult。我们预计此调用将等待但未完成,因为未调用 deferredData.setResult()。但这并没有像预期的那样发生。API 调用直接返回,无需等待。我在控制台中看不到任何错误。
我在 Spring REST 控制器中尝试了同样的事情,它运行良好。
我们希望 deferredData.setResult() 稍后发生。期望的是 SOAP 调用应该一直等到 setResult() 被调用。
关于我们如何在 SOAP 请求中使用 DeferredResult 的任何指针?
解决方案
推荐阅读
- django - GeoDjango + Postgis 缺少功能
- php - 在 WooCommerce 中以编程方式更改货币和付款方式
- javascript - 如何将力有向图重置为其原始位置?
- oracle - 单独的美分和美元值 Oracle
- sql - Postgres 使用 bigint 列加入 Json 数组
- c# - 单击按钮后如何将注意力集中在元素上
- angular - 在 RxJS 流中链接身份验证的最佳实践
- json - 所有可能的 Kubernetes 事件类型
- python - 具有多个子图的子图
- python - 将嵌套列表转换为 pd Dataframe 的快速和 Pythonic 方法