JAX-WS用于调用Web服务的异步客户端技术

时间:2012-04-01 07:23:29

标签: java web-services soap jax-ws soa

我正在使用JAX-WS对基于SOAP的Web服务进行一些研究,我发现了解有关客户端的部分非常复杂。 如果有人可以帮我解释一些主题,我会非常感激。我正在使用SOA书籍和Google,但我真的很困惑,所以我想在这里我可以得到更准确的答案,专注于我需要的东西。

因此,我们可以以同步和异步方式与Web服务进行通信。同步通信缺乏双方必须等待,直到处理结束。

异步客户端允许我们使用2种编程模型以异步方式进行通信:1-回调和2-轮询

  • 怀疑1:有人可以用简单的方式向我解释两种模式的差异,优缺点(Callback and Pooling)

在谈论异步通信时,我也明白生产者(Web服务)应该有一种方法,一旦处理完成就找到消费者(客户端)。这就是为什么我们要解决。

  • 怀疑2:您能简单解释一下寻址的工作原理吗?以及如何解决与回调和轮询技术有关的问题?

还有一件事。 Dispatch API也让我很困惑。因为他们一直在谈论动态客户。

  • 疑问3 :如果Dispatch API一直在谈论动态客户端,它们与异步通信的关系如何?
  • 怀疑4: Dispatch API的两种使用模式(MESSAGE和PAYLOAD),用于什么,以及它们与JAXWS的异步通信模型有何关系?

1 个答案:

答案 0 :(得分:2)

  1. 有人可以用简单的方式向我解释一下这两种模式的差异,优缺点(回调和合并)
  2. 回调:实施不是直截了当的 - 优势:这种方法更加优雅/系统化,适用于投票方法 - 缺点:客户端应该有一个机制,以便服务器可以使用回调来回调它。

    投票:实施很简单      - 优点:由于技术的简单性,它是通用的,即使是启用了ajax的网页也可以使用这种技术来检查请求的更新是否可用。
         - 缺点:带宽的巨大浪费,以及服务器客户端计时问题,例如服务器持有响应的时间还有来自客户端的轮询请求尚未到来。

    2.你能简单解释一下寻址的工作原理吗?以及如何解决与回调和轮询技术有关的问题?

    寻址使Web服务可以理解之前在消息传递系统和传输提供者之间共享的信息。考虑这个用例,最初使用的传输将是HTTP,用于发送请求和响应。然后,您可能希望更改此传输的一部分,比如在发送响应时,仅更改为SMTP协议。如果您使用的是ws寻址,那么与传输和寻址相关的全部信息都将成为soap envolope本身的一部分,这将使您的Web服务能够动态地将传输更改为响应发送。

    Webservices寻址也可用于从服务器到客户端的回调。该服务在WSDL中通知它所需的回调的端口类型。客户端实现此端口类型,然后使用WS寻址通知回调端点的服务。

    简单来说,WS寻址为soap envolope添加了额外的标签,其中包含仅存在于传输标头中的信息,如地址,地址,操作名称等。

    3.如果Dispatch API一直在谈论动态客户端,那么它与异步通信有什么关系?

    Future<?> response = dispatch.invokeAsync(T, AsyncHandler);
    

    invokeAsync方法是一种轮询方法。响应立即返回给用户,并可以轮询完成。在此期间,客户端程序可以执行其他工作.javax.xml.ws.Response实现J2SE 5.0中包含的java.util.concurrent.Future接口。 Response对象通过其get方法返回实际响应,如果响应未准备好返回,则阻止响应。

    4. Dispatch API的两种使用模式(MESSAGE和PAYLOAD),用于什么,以及它们与JAXWS的异步通信模型有何关系?
    消息传递模式与异步通信没有直接关系。消息传递模式定义Web服务请求中发送的信息量。 MESSAGE MODE只能在使用SOAP绑定时使用。