你的假设通常是正确的。然而,这些细分可能导致巨大的差异。
权利要求1:都是HTTP。
SOAP通常与HTTP“绑定”一起使用。但它不一定是那样。 SOAP被设计为相当传输不可知的。将SOAP用于JMS并不罕见(尽管人们可能会认为这是过度使用JMS和超架构协议),但它在许多地方当然是在生产中。很少见到没有HTTP的SOAP/SMTP或SOAP/TCP,但它们也存在。
web服务是一个也POST请求包含SOAP信封作为请求体
SOAP调用通过HTTP是POST请求。但是,它可能不是content-type xml,因为某些变体(如SwA(带附件的SOAP)或XOP + MTOM变体)可能会生成MIME/Multipart的HTTP有效内容(第一部分是纯粹的SOAP Enveloppe XML表单)。
当使用SOAP调用发送较大的二进制内容并且二进制编码可能为请求增加一个很大的权重(base64是一个1.3倍的权重因子)时,这种使用cas是最常见的。
的Java存根内部元帅XML,创建HTTP请求,并将其发送给消费者
这是通常的方式是做,Axis框架和JAXWS框架工作主要是这种方式。
旧的SAAJ API是一种标准的EE API,要求您使用DOM API(请参阅SOAPMessageFactory
)手动构建您的SOAP消息,然后发送它。如果你看看Spring WS,你会得到一些与你的声明相近的东西,但是每个部分都是公开的并且在你的控制之下(你可以选择使用DOM Api构建特定的调用,其他的使用JAXB编组) ,...)。
3)在该请求,并将其unrmashal到Java对象,并将其发送给相应的服务
再次消费端intercpets的Servlet,这是怎么会事generaly工作。但是你也可以有一个在servlet容器外工作的实现。 (请参阅JAX WS中的端点服务API)。
来源
2015-03-25 09:16:04
GPI
这听起来不错。我在当前的工作中大量使用SOAP,并使用Axis库。 – 2015-03-25 09:06:18