JAX WS异步客户端:捕获接受的WS-Addressing 202

时间:2016-03-05 12:58:48

标签: java web-services wsdl jax-ws ws-addressing

我必须使用WS-Addressing调用几个Web服务。 在调用Web服务时,ReplyTo被设置为由我实现的回调端点。

使用与

的异步从目标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(),它将永远阻止,因为响应被发送到我的回调网址(WSA-Addressing Reply To)

任何线索如何确定服务器是否成功接受了请求?

谢谢。

1 个答案:

答案 0 :(得分:0)

显然,当您设置不同的回复地址时返回的响应会导致空响应,这可以解释为什么在您调用response.get()时它会挂起。 建议的解决方案是使用getResponseContext()之类的东西,这是从绑定中调用的。