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的核心).............

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章