一、WSDL  

  1、WSDL 文档的组成部分

  <portType>web service 执行的操作

  <message>web service 使用的消息

  <types>web service 使用的数据类型

  <binding>web service 使用的通信协议

  2、WSDL元素介绍

WSDL规范为了不会产生歧义,定义了特有名词来表述功能与服务。

  <portType> :<portType>元素是最重要的 WSDL 元素。 它可描述一个 Web Service、可被执行的操作,以及相关的消息。 可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。

  <operation><operation>是对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。

  <message> <message>元素定义一个操作的数据元素。 每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。

  <types>: <types>元素定义WebService 使用的数据类型。为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。

  <binding>: <binding>元素为每个端口定义消息格式和协议细节。

  3、WSDL 文档的简化片段示例 

<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message> <message name="getTermResponse">
<part name="value" type="xs:string"/>
</message> <portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType> 

  A在这个例子中,<portType> 元素把 "glossaryTerms" 定义为某个端口的名称,把 "getTerm" 定义为某个操作的名称。

  B操作 "getTerm" 拥有一个名为 "getTermRequest" 的输入消息,以及一个名为 "getTermResponse" 的输出消息。

  C<message> 元素可定义每个消息的部件,以及相关联的数据类型。

  备注:具体的WSDL语法详见附件《WebService描述语言WSDL详解.pdf》

    https://files.cnblogs.com/files/jiyukai/WebService描述语言WSDL详解.pdf

二、使用WebService注解来修改WSDL文件

  1、 WebService注解概述

  WSDL文件的内容,一般由服务默认生成,但为了更好的向开发人员提供使用说明书,一般应做一些简单的修改。至少不应该暴露我们的包结构。而targetNamespace默认情况下为倒置的包名,这已经暴露了我们的包结构。通过在类文件上添加以下注解,可以修改wsdl生成的各元素,而不是直接去修改wsdl文件,直接去修改wsdl文件是无效的。

  WebService的注解包括:

  A、 @WebService-定义服务   — 注解位置:类名

  B、 @WebMethod-定义方法   - 注解位置:方法

  C、 @WebResult-定义返回值 – 注解位置:返回值

  D、@WebParam-定义参数 – 注解位置:方法参数

  2、 WebService注解类型详解

  (1)WebService注解

  @WebService标注要暴露为Web Services的类或接口 ,用于修饰类或接口,包含的属性有:

  targetNamespace属性:定义命名空间,默认为”http://”+”包名倒排”

  name属性:Web Service 的名称,默认为发布服务的类名。

  serviceName: ws服务的名词,默认在类名后面添加了service

  endpointInterface属性:定义服务抽象 Web Service 协定的服务端点接口的完整名称,接口也必须声明WebService注解,包括方法的注解必须也要添加到接口中,否则会无效, 而且WS在没有注解的情况下.生成WS的时候会自动生成一个注解.所以可以不用指定接口。

   

  (2)WebMethod注解

@WebMethod此注解用在方法上,用于修改对外暴露的方法,包含的属性有:

  operationName属性:与此方法匹配的 wsdl:operation 的名称

  exclude属性:标注此方法是否被暴露,默认为false

    

  注意:如果所有public方法上都没有指定@WebMethod,则默认是所有的public方法都是对外暴露的方法。

  3WebResult注解

  @WebResult 定义返回值,返回值类型不能为接口类或抽象类,而且必须有个不带参的构造函数,包含属性

  name属性:返回值的名称

  

  4WebParam注解

@WebParam用来修改参数名字,如上图示例

  name属性:参数的名称

三、 WebService注解注意事项

  (1)通过WebService的注解,可以更加形像的描述Web服务。从而生成WSDL文档。

  (2)当修改了WebService注解之后,同时会影响客户端生成的代码。

  (3)调用的方法名和参数名也发生了变化。

  (4)即使是没有修改源代码,只修改了注解,客户端的代码也必须要重新生成(注意是生成而不是下载)。否则调用将会失败。

  (5)生成本地调用代码,依然使用wsimport工具

  (6)给类添加上@WebService注解后,类中所有的非静态方法都将会对外公布

  (7)如果希望某个方法不对外公开,可以在方法上添加@WebMethod(exclude=true),阻止对外公开。

  (8)如果一个类上,被添加了@WebService注解,则必须此类至少有一个可以公开的方法,否则将会启动失败。

  (9)protected、private、final、static方法不能对外公开

WSDL(WebService描述语言)文件介绍的更多相关文章

  1. C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用

    1.直接调用 已知webservice路径,则可以直接 添加服务引用--高级--添加web引用 直接输入webservice URL.这个比较常见也很简单 即有完整的webservice文件目录如下图 ...

  2. WSDL(Web服务描述语言)详细解析(全文转载学习用)

    WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务 ...

  3. WebService服务调用方法介绍

    1 背景概述 由于在项目中需要多次调用webservice服务,本文主要总结了一下java调用WebService常见的6种方式,即:四种框架的五种调用方法以及使用AEAI ESB进行调用的方法. 2 ...

  4. webservice第一篇【介绍、Scoket、http调用、wsimport调用】

    WebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧-. 问题一 如果我们的网站需要提供一个天气预报这样一个需求的话,那我们该怎么做????? 天气预报这么一个 ...

  5. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  6. REST建模语言RAML介绍

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com   RAML是什么?   RAML是一种简洁的RESTful API描述性语言,它基于 YAML和JSON这样的公 ...

  7. linux设备驱动程序该添加哪些头文件以及驱动常用头文件介绍(转)

    原文链接:http://blog.chinaunix.net/uid-22609852-id-3506475.html 驱动常用头文件介绍 #include <linux/***.h> 是 ...

  8. WSDL/WebService/SOAP/REST/AXIS/CXF 开放式服务

    WebService是一种数据交换标准.通过WebService标准,你可以把项目中的方法作为接口提供给其他项目使用. 有时候我们习惯性地将具体提供服务的某个方法称为WebService.比如图书系统 ...

  9. 根据第三方提供的webservice地址获取文件信息

    import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.en ...

随机推荐

  1. php -- PDO事务处理

    事务处理流程 开启事务 PDO::beginTransaction 事务操作 所有的实务操作就是增删改 事务提交 PDO::commit:成功后提交数据 PDO::rollback:失败后回滚数据 & ...

  2. Iframe 父子窗体互调javascript方法及相互获取控件

    父窗体中的Iframe标签如下,子窗体为Default.aspx; <iframe id="left" name="left" src="Def ...

  3. unity导弹算法 预计目标点

    关于导弹的飞行算法,网上有很多教程.简单算法无非是获取目标点的当前位置,然后导弹朝目标方向移动.高深点的,就是通过计算获取碰撞点然后朝着目标移动.如果你能看懂这个高深算法的话,可以去看原帖:http: ...

  4. swift - SQLite数据库的使用(引用)

    SQLite轻量级数据库在移动应用中使用非常普遍,但是目前的库是C编写的,为了方便使用,对SQLite相关的操作用Swift进行了封装.这个封装代码使用了一个开源项目SQLiteDB,地址是:http ...

  5. Intent讲解

    什么是Intent? Intent是一个消息传递对象,可以使用它来启动其它应用组件.Intent使组件之间通信更加便利,主要用于以下三点: 启动Activity: 可以将intent作为参数调用Con ...

  6. ios sqlite的创建数据库,表,插入查看数据

    iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsqlite3.dylib, 新建或打开数据库, 创建数据表, 插入数据, 查询数据并打印 1.新建项目sqliteDemo,添 ...

  7. angular的属性绑定

    1. 图片地址属性绑定 html文件 <img [src]="imgUrl"> ts文件 export class ProductComponent implement ...

  8. 160425、linux安装SVN服务器

    1:查看linux是否已经安装svn服务 [root@nb ~]# rpm -qa subversion subversion-1.6.11-15.el6_7.x86_64 2:安装svn #yum ...

  9. jsp+servlet+mvc模式图

    在我们的开发中,最常用的开发模式莫过于MVC模式,即M--MODEL.V--View.C--Controller,这样不仅可以方便开发人员分工协作,提高开发效率,增强程序的可维护性和拓展性,而且利用C ...

  10. synchronized和volatile的使用方法以及区别

    先看看下面的例子: public class ThreadTest { public static void main(String[] args) { final Counter counter = ...