Java WebService复习之WSDL

来源:互联网 发布:如何自慰最舒服知乎 编辑:程序博客网 时间:2024/06/15 03:57

有段时间不写博客,一直在忙碌最近项目中用到了WebService,所以把它写下来,一来复习复习二来与大家共同学习交流。

什么是WebService?

          WebService是各个不同的、相互独立的系统进行通信的一种技术标准。

有什么用?

          可以实现多终端系统交互,如 手机、PDA、等(Android等大量的使用了WebService)

 

在学习如何构建一个WebService前,必需要先了解几个技术点:XML  、Http协议 、SOAP协议、WSDL

XML :一种数据描述语言

Http协议:定义了浏览器与Web服务器的通信规则

SOAP:建立在Http协议上的WebService通信协议

WSDL:描述WebService接口(就相当于是说明书它是XML格式的)

我建立一个WebService 这个WebService包含两个方法

SayHi(String yourName)

GetData()

地址:http://127.0.0.1:8888/jsweb 通过在地址后加入?wsdl 获取这个webservice的说明文档http://127.0.0.1:8888/jsweb?wsdl

这个文档内容如下:

<?xml version="1.0" encoding="UTF-8"?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --><!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --><definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://xgn.webservice" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://xgn.webservice" name="JavaWebService"><types><xsd:schema><xsd:import namespace="http://xgn.webservice" schemaLocation="http://127.0.0.1:8888/jsweb?xsd=1"></xsd:import></xsd:schema></types><message name="SayHi"><part name="parameters" element="tns:SayHi"></part></message><message name="SayHiResponse"><part name="parameters" element="tns:SayHiResponse"></part></message><message name="GetData"><part name="parameters" element="tns:GetData"></part></message><message name="GetDataResponse"><part name="parameters" element="tns:GetDataResponse"></part></message><portType name="javaws"><operation name="SayHi"><input message="tns:SayHi"></input><output message="tns:SayHiResponse"></output></operation><operation name="GetData"><input message="tns:GetData"></input><output message="tns:GetDataResponse"></output></operation></portType><binding name="myportNameBinding" type="tns:javaws"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"></soap:binding><operation name="SayHi"><soap:operation soapAction=""></soap:operation><input><soap:body use="literal"></soap:body></input><output><soap:body use="literal"></soap:body></output></operation><operation name="GetData"><soap:operation soapAction=""></soap:operation><input><soap:body use="literal"></soap:body></input><output><soap:body use="literal"></soap:body></output></operation></binding><service name="JavaWebService"><port name="myportName" binding="tns:myportNameBinding"><soap:address location="http://127.0.0.1:8888/jsweb"></soap:address></port></service></definitions>


wsdl文档主要包含这几个元素:

types:包含这个WebService所使用的所有数据类型定义

message:包含有哪些方法

part:方法的签名

portType:包含哪些操作的容器

binding:这些操作具体的规范、接口

service:包含服务名称和地址等

下面来解读这份WSDL文档

<portType name="javaws"><operation name="SayHi"><input message="tns:SayHi"></input><output message="tns:SayHiResponse"></output></operation><operation name="GetData"><input message="tns:GetData"></input><output message="tns:GetDataResponse"></output></operation></portType>

它包含SayHi和GetData方法 ProtType 名称是javaws

<binding name="myportNameBinding" type="tns:javaws">

方法容器javaws绑定到 myportNameBinding上

<service name="JavaWebService"><port name="myportName" binding="tns:myportNameBinding"><soap:address location="http://127.0.0.1:8888/jsweb"></soap:address></port></service>

服务名称是: JavaWebService

服务地址:http://127.0.0.1:8888/jsweb

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 可以多动手解读网络上的其它webservice文档以加强理解

这就是WSDL文档的基本内容,在动手构建和使用WebService前还需要了解SOAP协议(它是WebService的核心).............

0 0
原创粉丝点击