Wsdl 绑定样式与 soap 消息结构Wsdl的绑定样式有四种:RPC/encoded、RPC /literal、document/literal、document/literal wrapped 其中 RPC /encoded 基本要被淘汰。下面结合例子阐述下后四种样式的的优缺点和结构:例子中的 wsdl 是通过 java2wsdl 生成的。该 java 类包含两个方法:public StringBean complex(StringBean a,StringBean b,int beginIndex,int endIndex);public String complexStr(String a,String b,int cutBegin,int cutEnd)。其中 StringBean 是另一个 java 类,它有三个属性和一些 get/set 方法。complex()方法的四个参数有两个对象向类型的,两个基本类型的;而 complexStr()的四个参数都是基本类型的。RPC /encoded 的 wsdl 绑定样式:Wsdl 的 RPC/encoded 的绑定样式与其对应的 SOAP 消息结构映射如下图所示:图表 1 RPC /encoded 的 wsdl 与 SOAP 消息对应关系图 中 左 方 是 wsdl 部 分 服 务 描 述 , 右 边 是 其 相 应 的 SOAP 消 息 。 SOAP 消 息 体(soapenv:body)下第一个元素对应 wsdl 中定义的操作(wsdl:operation),接下来的元素就是操作需要的输入消息(wsdl:message),他们分别与 wsdl:part 相对应。假如消息的某个 part 是复杂类型如 a,则要列出 a 的每个属性,这些属性从 a 的类型,本例中是 str:StringBean 读出,StringBean 类型在 wsdl 中的定义如下图所示:图表 2 wsdl 中的 StringBean 类型定义与 SOAP 消息对应关系图 2 左侧是 StringBean 类型在 wsdl 中的定义,右侧是根据其生成的 SOAP 消息。通过以上两幅图我们可以看出 RPC/encoded 编码的优缺点:优点: WSDL 基本达到了尽可能地简单易懂的要求。 操作名出现在消息中,这样接收者就可以很轻松地把消息发送到方法的实现。 缺点: 类型编码信息(比如 xsi:type="xsd:int" )通常就是降低吞吐量性能的开销。 不能简单地检验此消息的有效性,因为只有 部分内容包含在 Schema 中定义中;其余的 soap:body 内容都来自 WSDL 定义。RPC /literal 的 wsdl 绑定样式:下图中左边是 wsdl 描述文件片段,从自动生成的 wsdl 可以看出 complexType 可以用来定义复杂的消息类型,比如说对应 java 中的一个类,其 sequence 标签中就定义了对应 java类的各个属性;在定义消息时,消息...