我必须使用 WS-Addressing 调用多个 Web 服务。 当调用Web服务时,ReplyTo被设置为我实现的回调端点。
客户端是使用 async with 从目标 WSDL 生成的
<enableAsyncMapping>true</enableAsyncMapping>
它为每个 Web 服务生成具有以下签名的 Async
版本:
javax.xml.ws.Response<SampleWebServiceOutput> sampleWebService(SampleWebServiceInput input)
当调用sampleWebService
时,例如,
Response<SampleWebServiceOutput> response = clientWsPort.sampleWebService(input);
如果请求成功,服务器将返回202 Accepted
,但我不知道如何获取它。
如果我使用 response.get()
,它将永远阻塞,因为响应被发送到我的回调 URL(WSA-Addressing Reply To)
有什么线索可以确定服务器是否成功接受了请求吗?
谢谢。
最佳答案
显然,当您设置不同的回复地址时返回的响应会导致空响应,这可以解释为什么当您调用 response.get()
时它会挂起。
推荐的解决方案是使用类似 getResponseContext()
的方法,它是从绑定(bind)中调用的。
关于java - JAX WS异步客户端: capture WS-Addressing 202 accepted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35814430/