java學(xué)習(xí)心得筆記
;
<types>;
<element name="tradepricerequest">;
<complextype>;
<all>;
<element name="tickersymbol" type="string"/>;
</all>;
</complextype>;
</element>;
<element name="tradeprice">;
<complextype>;
<all>;
<element name="price" type="float"/>;
</all>;
</complextype>;
</element>;
</schema>;
</types>;
<message name="getlasttradepriceinput">;
<part name="body" element="xsd1:tradepricerequest"/>;
</message>;
<message name="getlasttradepriceoutput">;
<part name="body" element="xsd1:tradeprice"/>;
</message>;
<porttype name="stockquoteporttype">;
<operation name="getlasttradeprice">;
<input message="tns:getlasttradepriceinput"/>;
<output message="tns:getlasttradepriceoutput"/>;
</operation>;
</porttype>;
<binding name="stockquotesoapbinding"
type="tns:stockquoteporttype">;
<soap:binding style="document"
<operation name="getlasttradeprice">;
<soap:operation
<input>;
<soap:body use="literal"/>;
</input>;
<output>;
<soap:body use="literal"/>;
</output>;
</operation>;
</binding>;
<service name="stockquoteservice">;
<documentation>;my first service</documentation>;
<port name="stockquoteport" binding="tns:stockquotebinding">;
</port>;
</service>;
</definitions>;
它包含了以下的關(guān)鍵信息:
消息的描述和格式定義可以通過xml文檔中的<types>;和<message>; 標(biāo)記來傳送。
<porttype>; 標(biāo)記中表示了消息傳送機(jī)制。 (e.g. request-only, request-response, response-only) 。
<binding>; 標(biāo)記指定了編碼的規(guī)范 。
<service>; 標(biāo)記中表示服務(wù)所處的位置 (url)。
wsdl在uddi中總是作為一個接口描述文檔。因?yàn)閡ddi是一個通用的用來注冊wsdl規(guī)范的地方,uddi的規(guī)范并不限制任何類型或者格式描述文檔。這些文檔可能是一個wsdl文檔,或者是一個正規(guī)的包含導(dǎo)向文檔的web頁面,也可能只是一個包含聯(lián)系信息的電子郵件地址。
現(xiàn)在java提供了一個 java api for wsdl (jwsdl)規(guī)范。它提供了一套能快速處理wsdl文檔的方法,并且不用直接對xml文檔進(jìn)行操作,它會比jaxp更方便,更快速。
soap
當(dāng)商業(yè)用戶通過uddi找到你的wsdl描述文檔后,他通過可以simple object access protocol (soap) 調(diào)用你建立的web服務(wù)中的一個或多個操作。
soap是xml文檔形式的調(diào)用商業(yè)方法的規(guī)范,它可以支持不同的底層接口,象http(s)或者smtp。
之所以使用xml是因?yàn)樗莫?dú)立于編程語言,良好的可擴(kuò)展性以及強(qiáng)大的工業(yè)支持。之所以使用http是因?yàn)閹缀跛械木W(wǎng)絡(luò)系統(tǒng)都可以用這種協(xié)議來通信,由于它是一種簡單協(xié)議,所以可以與任何系統(tǒng)結(jié)合,還有一個原因就是它可以利用80端口來穿越過防火墻。
soap的強(qiáng)大是因?yàn)樗唵巍oap是一種輕量級的,非常容易理解的技術(shù),并且很容易實(shí)現(xiàn)。它有工業(yè)支持,可以從各主要的電子商務(wù)平臺供應(yīng)商那里獲得。
從技術(shù)角度來看,soap詳細(xì)指明了如何響應(yīng)不同的請求以及如何對參數(shù)編碼。一個soap封裝了可選的頭信息和正文,并且通常使用http post方法來傳送到一個http 服務(wù)器,當(dāng)然其他方法也是可以的,例如smtp。soap同時支持消息傳送和遠(yuǎn)程過程調(diào)用。以下是一個soap請求。
post /stockquote http/1.1
host:
content-type: text/xml; charset="utf-8"
content-length: nnnn
soapaction: "some-uri"
<soap-env:envelope