Axis --SOAP引擎

1.  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://www.01chengde.cn,如果頁面顯示有錯誤,則需要回頭檢查一下相關配置是否正確,如果瀏覽頁面能正確顯示出系統組件、屬性等參數配置信息,則表示安裝成功。現在可以開始開發你的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://www.01chengde.cn可以看到這個服務的WSDL描述文件,這說明Distance服務被成功發佈了。描述的WDSL代碼如下:
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions targetNamespace="
http://www.jingjingdianying.com" 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://dy.01chengde.cn" 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>


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