java學習心得筆記
;
<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>;
它包含了以下的關鍵信息:
消息的描述和格式定義可以通過xml文檔中的<types>;和<message>; 標記來傳送。
<porttype>; 標記中表示了消息傳送機制。 (e.g. request-only, request-response, response-only) 。
<binding>; 標記指定了編碼的規范 。
<service>; 標記中表示服務所處的位置 (url)。
wsdl在uddi中總是作為一個接口描述文檔。因為uddi是一個通用的用來注冊wsdl規范的地方,uddi的規范并不限制任何類型或者格式描述文檔。這些文檔可能是一個wsdl文檔,或者是一個正規的包含導向文檔的web頁面,也可能只是一個包含聯系信息的電子郵件地址。
現在java提供了一個 java api for wsdl (jwsdl)規范。它提供了一套能快速處理wsdl文檔的方法,并且不用直接對xml文檔進行操作,它會比jaxp更方便,更快速。
soap
當商業用戶通過uddi找到你的wsdl描述文檔后,他通過可以simple object access protocol (soap) 調用你建立的web服務中的一個或多個操作。
soap是xml文檔形式的調用商業方法的規范,它可以支持不同的底層接口,象http(s)或者smtp。
之所以使用xml是因為它的獨立于編程語言,良好的可擴展性以及強大的工業支持。之所以使用http是因為幾乎所有的網絡系統都可以用這種協議來通信,由于它是一種簡單協議,所以可以與任何系統結合,還有一個原因就是它可以利用80端口來穿越過防火墻。
soap的強大是因為它簡單。soap是一種輕量級的,非常容易理解的技術,并且很容易實現。它有工業支持,可以從各主要的電子商務平臺供應商那里獲得。
從技術角度來看,soap詳細指明了如何響應不同的請求以及如何對參數編碼。一個soap封裝了可選的頭信息和正文,并且通常使用http post方法來傳送到一個http 服務器,當然其他方法也是可以的,例如smtp。soap同時支持消息傳送和遠程過程調用。以下是一個soap請求。
post /stockquote http/1.1
host:
content-type: text/xml; charset="utf-8"
content-length: nnnn
soapaction: "some-uri"
<soap-env:envelope