SOAP簡介(Webservice 常用協議)

來源:互聯網
上載者:User
SOAP簡介

企業系統內部各個系統之間的資訊交換一直是一個難題,在過去有DCOM、CORBA等解決方案,但都不是很完美,不是太複雜就是有缺陷。現在則較流行SOAP(全稱:Simple Object Access Protocol,簡易物件存取通訊協定 (SOAP))。

SOAP和Web Service和Apache SOAP這些新概念(應該也不算新了)常搞的人頭昏。我是這麼理解的,Web service(也稱Web服務)是一個大的概念範疇,它表現了一種設計思想。SOAP是Web service的一個重要組成部份,如果把Web service比喻成Internet,那麼SOAP就可以比喻成TCP/IP。SOAP是一種協議而非具體產品,微軟也有自己的SOAP實現產品,而Java下比較流行的SOAP實現產品就是Apache SOAP,不過它的下一個版本已經改名成AXIS了。

SOAP是通過XML檔案來做為資料轉輸的的載體,走HTTP的線路,一般企業的防火牆都開放HTTP的80連接埠,所以SOAP不會被防火牆阻斷,這算是SOAP的一個優點。

資訊轉輸的雙方都要求支援SOAP服務,因為XML檔案發過去,則對方需要有SOAP服務來接收,然後對方會有反饋也是XML檔案,這時你也需要安裝SOAP服務來接收,

SOAP是一個基於XML的用於應用程式之間通訊資料編碼的傳輸協議。最初由微軟和Userland Software提出,隨著不斷地完善和改進,SOAP很快被業界廣泛應用,目前完全發布版本是1.1。在其發展過程中,W3C XML標準工作小組積極促成SOAP成為一個真正的開放標準。在寫作此文檔之時,SOAP1.2草案已經發布,1.2對1.1中相對混亂的部分做了改進。
SOAP被廣泛作為新一代跨平台、跨語言分布計算Web Services的重要部分。
2. 什麼是Axis

Axis是Apache組織推出的SOAP引擎,Axis項目是Apache組織著名的SOAP項目的後繼項目,目前最新版本是採用Java開發的1.1版本,C++的版本正在開發之中。Axis v1.1軟體包可以從http://ws.apache.org/axis/dist/1_1/下載得到。
但是Axis不僅僅是一個SOAP引擎,它還包括:
      一個獨立啟動並執行SOAP伺服器
      一個servlet引擎的外掛程式,這個servlet引擎可以是Tomcat
      對WSDL的擴充支援
      一個將WSDL的描述產生JAVA類的工具
      一些範例程式碼
      還有一個監控TCP/IP包的工具

二、Axis的安裝

應用Axis開發Web Services,你需要安裝如下軟體:
1.JDK1.4.2
2.一個支援Servlet的伺服器引擎,比如廣為人知的Tomcat。

當安裝好Tomcat之後,只需將下載的Axis軟體包解壓縮,將其中的“webapps”目錄下的“axis”目錄整個拷貝到Tomcat安裝目錄下的“webapps”目錄下即可。

三、Axis的配置

Axis基於Java開發,可以部署於多種作業系統,使用前需要配置一系列的系統變數,在此假定你已經在本機上裝好了Tomcat 4.0以上的版本,需要配置的系統變數如下表所示:

CATALINA_HOME
C:/Tomcat_4_1

(此處應為Tomcat的安裝位置,注意路徑名中不要有空格)

AXIS_HOME
%CATALINA_HOME%/webapps/axis

AXIS_LIB
%AXIS_HOME%/lib

AXISCLASSPATH
%AXIS_LIB%/axis.jar;%AXIS_LIB%/commons-discovery.jar; %AXIS_LIB%/commons-logging.jar;%AXIS_LIB%/jaxrpc.jar; %AXIS_LIB%/saaj.jar;%AXIS_LIB%/log4j-1.2.8.jar; %AXIS_LIB%/xml-apis.jar;%AXIS_LIB%/xercesImpl.jar

CLASSPATH 中加入:
%AXIS_LIB%/axis.jar;%AXIS_LIB%/commons-discovery.jar; %AXIS_LIB%/commons-logging.jar;%AXIS_LIB%/jaxrpc.jar; %AXIS_LIB%/saaj.jar;%AXIS_LIB%/log4j-1.2.8.jar; %AXIS_LIB%/xml-apis.jar;%AXIS_LIB%/xercesImpl.jar

四、Axis的測試

安裝配置完畢後,應測試一下是否Axis可以正確運行了。

  啟動Tomcat伺服器,在瀏覽器中訪問http://localhost:8080/axis/happyaxis.jsp,如果頁面顯示有錯誤,則需要回頭檢查一下相關配置是否正確,如果瀏覽頁面能正確顯示出系統組件、屬性等參數配置資訊,則表示安裝成功。現在可以開始開發你的Web Services應用了。

五、服務的發布
Axis提供了兩種服務發布方式,一種是即時發布(Instant Deployment),一種是定製發布(Custom Deployment)。

1. 使用即時發布 Java Web Service(JWS)

  對即時發布的支援是Axis的特色之一,使用即時發布使使用者只需有提供服務的Java類的原始碼,即可將其迅速發布成Web服務。每當使用者調用這類服務的時候,Axis會自動進行編譯,即使伺服器重啟了也不必對其做任何處理,使用非常簡單快捷。

  使用即時發布首先需要一個實現服務功能的Java源檔案,將其副檔名改為.jws(Java Web Service的縮寫),然後將該檔案放到“……/webapps/axis”目錄下即可。
      在此給出一個從英裡到公裡的長度單位轉換的服務,其源碼如下:

檔案Distance.jws

public class Distance
{
      public double convertMile2Kilometre( double mile )
      {
return mile * 1.609;    //實現英裡到公裡的距離轉換
      }
}

將其放到“……/webapps/axis”目錄,通過訪問http://localhost:8080/axis/Distance.jws?wsdl可以看到這個服務的WSDL描述檔案,這說明Distance服務被成功發布了。描述的WDSL代碼如下:
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions targetNamespace="
http://192.168.0.26:8080/axis/Distance.jws" xmlns="http://schemas.xmlsoap.org/wsdl/"  
     xmlns:apachesoap="
http://xml.apache.org/xml-soap" xmlns:impl="http://192.168.0.26:8080/axis/Distance.jws" xmlns:intf="http://192.168.0.26:8080/axis/Distance.jws" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <wsdl:message name="convertMile2KilometreRequest">
    <wsdl:part name="mile" type="xsd:double" />
    </wsdl:message>
- <wsdl:message name="convertMile2KilometreResponse">
    <wsdl:part name="convertMile2KilometreReturn" type="xsd:double" />
    </wsdl:message>
- <wsdl:portType name="Distance">
- <wsdl:operation name="convertMile2Kilometre" parameterOrder="mile">
    <wsdl:input message="impl:convertMile2KilometreRequest" name="convertMile2KilometreRequest" />
    <wsdl:output message="impl:convertMile2KilometreResponse" name="convertMile2KilometreResponse" />
    </wsdl:operation>
    </wsdl:portType>
- <wsdl:binding name="DistanceSoapBinding" type="impl:Distance">
    <wsdlsoap:binding style="rpc" transport="
http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="convertMile2Kilometre">
    <wsdlsoap:operation soapAction="" />
- <wsdl:input name="convertMile2KilometreRequest">
    <wsdlsoap:body encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded" />
    </wsdl:input>
- <wsdl:output name="convertMile2KilometreResponse">
    <wsdlsoap:body encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" namespace="http://192.168.0.26:8080/axis/Distance.jws" use="encoded" />
    </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
- <wsdl:service name="DistanceService">
- <wsdl:port binding="impl:DistanceSoapBinding" name="Distance">
    <wsdlsoap:address location="
http://192.168.0.26:8080/axis/Distance.jws" />
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>

需要注意的是:JWS的web服務發布是一個很簡單的Web服務發布方式,在頁面中你不能使用包,而且由於代碼是在運行期被編譯的,所以在部署之後,你也很難找到錯誤所在。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.