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