`
gy090028
  • 浏览: 27773 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

WebService Soap消息之style和use

阅读更多

    use属性可以为literal,encoded;
    style可以为rpc,document.

    我们来对五种类型的style/use决定的 binding作一比较,

    分别是rpc/literal,

             document/literal none-wrapper,

             document/literal with wrapper,
             rpc/encoded, 

             document/encoded。


从生成soap消息的角度看
rpc和document的差别在于方法的操作名是否出现在生成的Soap消息中。
literal和encoded编码方式的差别在于参数类型是否出现在生成的Soap消息中。


rpc/encoded能够完整地表示一个方法调用,但性能很差,而且不能校验Soap消息的有效性。
rpc/literal不对参数类型进行编码,但仍然无法对Soap消息进行校验。
document/encoded没有意义,因为没有方法名,对参数类型编码没有什么意义。
document/literal none-wrapper无法生成操作名,适用于完整的文档作为参数传递给方法的场景。
document/literal with wrapper应该是目前使用最多的方式。

 

先看一段Soap消息:

<soapenv:Envelope 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:jax="http://jaxws.webserver.siyaa.cn/">

   <soapenv:Header/>
   <soapenv:Body>
      <jax:Call>
         <operation>?</operation>
      </jax:Call>
   </soapenv:Body>
</soapenv:Envelope>

 如果我们只做一个客户端去封装这样一个saop消息,那么对于以上五中组合有什么区别呢?

    抱着这个疑问本人一一测试,最终发现

document/literal none-wrapper

   组合的soap消息跟其它的不一样,其对应消息应该是

<soapenv:Envelope 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:jax="http://jaxws.webserver.siyaa.cn/">
   <soapenv:Header/>
   <soapenv:Body>
      <jax:Call>
         <jax:operation>?</jax:operation>
      </jax:Call>
   </soapenv:Body>
</soapenv:Envelope>

    细心的人应该可以发现 请求参数operation前面多了一个前缀,若没有此前缀则会找不到参数.

 

    wsdl中的style 和use 可以很容易的获得,但是 wrraped 和 bare的是如何区分的呢?

   

    这个区分不是很明显,不仔细看是发现不了的:

    wrraped的输入元素的名称与操作名称相同,bare的不同. 另外bare的请求参数只能有一个.

    就这么简单...

   

    OK,现在可以根据wsdl文件轻松组装自己的soap消息了吧,在此记录可以在以后忘记了快速找到解决方法.也希望给跟我有同样困惑的人一些提示.

 

 

分享到:
评论

相关推荐

    WSDL样式详解,soap中Rpc和Document的区别

    当开发Web服务时,理解WSDL的SOAP绑定和样式是非常重要的,因为它们直接影响到服务的消费方式和消息的格式。选择正确的样式可以提高服务的可维护性,简化客户端的实现,同时提高整体系统的互操作性。在实际应用中,...

    使用php搭建webService服务器(代码实例)

    2. `&lt;message&gt;` 元素:定义每个消息的部件,包括消息名称、参数和返回类型。 3. `&lt;portType&gt;` 元素:描述一个 Web Service 的接口,定义了可被执行的操作和相关的消息。 4. `&lt;binding&gt;` 元素:定义每个端口的消息...

    jdk6 开发webservice

    3. **@SOAPBinding注解**: `@SOAPBinding`注解用于指定SOAP消息的风格和使用方式。在示例中,`style = Style.DOCUMENT`表示使用文档样式,这意味着XML消息的内容将直接映射到方法参数。`use = Use.LITERAL`表示使用...

    WebService入门案例java工程代码

    @SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL, parameterStyle = ParameterStyle.WRAPPED) public class HelloWorldImpl implements HelloWorld { @Override public String sayHello(String name) { ...

    WebService之WSDL自学笔记

    ### WebService之WSDL自学笔记 #### 1、WSDL概述 WSDL(Web Services Description Language,网络服务描述语言)是一种基于XML的标准语言,用于描述Web服务及其如何被访问。WSDL提供了描述服务的方式,包括服务的...

    WebService之WSDL文件讲解

    ### WebService之WSDL文件详解 #### 一、WSDL概述 **Web Services Description Language (WSDL)**,即Web服务描述语言,是一种基于XML的格式,用于描述Web服务的接口和绑定,以及如何访问这些服务。WSDL允许将Web...

    webservice

    WSDL文件是WebService的核心组成部分之一,它描述了服务的功能和如何使用这些功能。以下是一个简单的WSDL文件示例: ```xml &lt;wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns=...

    WebService描述语言WSDL详解

    - **Bindings**: 将抽象的操作绑定到具体的传输协议和消息格式上,比如SOAP over HTTP。 - **Services**: 定义了实际的服务端点,即服务的实际位置和访问方式。 #### WSDL文件示例 为了更好地理解WSDL的各个组成...

    Java+Webservice调用方式详解

    本文将详细介绍两种主流的Java调用Webservice的方式:Axis和SOAP,并通过具体代码示例进行阐述。 #### 二、Axis 方式调用 Webservice ##### 1. Axis简介 Apache Axis 是一个开放源代码项目,它为开发和部署基于...

    PHP实现webservice简单示例

    &lt;soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost/CalculatorService"/&gt; &lt;soap:body use="encoded" encodingStyle=...

    WebLogic环境下WebService开发过程.doc

    @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL) public class CrudTable { @WebMethod @WebResult(name = "crudData") public String crudData(String data) { // 实现方法...

    Java6开发WebService入门

    - **端口类型**: 定义了服务的操作和消息交换模式。 - **绑定**: 规定了服务的具体实现方式,包括传输协议和编码方式。 - **服务**: 定义了服务的端点信息,包括URL地址。 通过以上内容的学习,我们可以了解到Java ...

    关于java webservice 技术的总结

    本文将深入探讨如何使用Java技术来构建和调用WebService,主要关注基于SOAP协议的WebService实现方式。 #### 一、使用JDK Web Service API实现基于SOAP消息的Web服务 ##### 1. 创建WebService EndPoint 要创建一个...

    Axis2 Webservice端例子

    总结,Axis2 Webservice端例子旨在帮助开发者了解如何在Axis2环境下构建和发布Web服务。通过定义服务接口、实现业务逻辑、创建WSDL描述和服务打包,以及在服务器上部署和调用,我们可以掌握Axis2的核心工作原理。...

    webservice文档

    WebService是一种基于XML标准的跨平台、跨软件供应商的服务组件,它允许不同系统间的应用程序进行互操作和分布式通信。这种技术的核心在于利用XML(可扩展标记语言)来描述数据,XML Schema来定义数据结构,以及SOAP...

    WebService应用

    同时,还可以定义输入处理器(`&lt;inHandlers&gt;`)来增强安全性,指定风格(`&lt;style&gt;`)和使用(`&lt;use&gt;`)以控制消息的封装方式,以及作用域(`&lt;scope&gt;`)确定服务的生命周期。 - **Axis**:同样通过XML配置文件(如`...

    apache-cxf_WebService

    @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.BARE) public interface HelloWorld { String sayHello(String name); } ``` ...

    Java使用XFire调用WebService接口.docx编程资料

    本文详细介绍了如何使用Java结合XFire框架来实现WebService接口的开发和调用。通过实际操作和示例代码,我们不仅了解了服务端的搭建过程,还学会了如何在客户端调用这些接口。这对于开发分布式系统或进行跨平台服务...

Global site tag (gtag.js) - Google Analytics