【问题标题】:How do JAXWS async calls work with pollingJAXWS 异步调用如何与轮询一起使用
【发布时间】:2012-10-04 08:08:47
【问题描述】:

我需要通过 SOAP Web 服务调用一个长时间运行的任务,在两端使用 JAXWS,特别是在两端使用 Apache CXF 2.6。

我发现我可以在 CXF 代码生成器中启用异步方法,它会为每个操作创建两个异步方法。由于 NAT 问题,我无法使用 WS-Addressing 和回调。所以我可能想使用其他轮询方法。

我需要确保使用这种机制不会出现套接字读取超时,所以我想了解它是如何工作的。

是否在后台线程中向服务器发出 SOAP 请求,该线程保持相同的单一 HTTP 连接打开,Future#isDone() 检查该线程是否已收到响应?

如果是这样,中间的代理服务器是否会定义自己的超时,并且如果服务器响应时间过长会导致错误?

其他人如何通过 SOAP 调用长时间运行的任务?

【问题讨论】:

    标签: web-services soap asynchronous jax-ws cxf


    【解决方案1】:

    是的,它会一直检查连接,直到收到响应。如果客户端和服务器之间发生某些事情并且连接丢失,则响应将无法检索。

    对于真正长期运行的事情,更好的方法是将长期运行分成两种方法。一个将接受输入并在后台线程上启动工作并仅返回某种唯一标识符的方法。第二种方法将采用该标识符并返回结果。客户端可以调用该方法来轮询服务器。这可能会长时间运行,并阻止或使用异步方法或类似方法。如果 THAT 请求超时,它可以再次调用它。

    【讨论】:

    • 谢谢,我就是这么想的,从你那里来,我会把它当作福音。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2013-09-11
    • 2013-05-24
    • 1970-01-01
    相关资源
    最近更新 更多