Java WebService复习之WSDL

有段时间不写博客,一直在忙碌最近项目中用到了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的核心).............

猜你喜欢

转载自blog.csdn.net/vs2008aspnet/article/details/17465429
今日推荐