一、AXIS2簡介
AXIS2是WebService/SOAP/WSDL的引擎,是Appache AXIS 1.x的衍生版。支持更強的模塊化、更高的靈活性、更有效地體系結構,可以更容易地與其他Web Service 服務標準與協議(如 WS-Security、WS-ReliableMessaging 等)結合。具有以下特點:
- 採用AXIOM的XML處理模型,支持靈活定義對象模型。
- 支持不同的消息交換模式:In-Only、Robust-In和In-Out 。In-Only消息交換模式只有SOAP請求,而不需要應答;Robust-In消息交換模式發送SOAP請求,只有在出錯的情況下才返回應答;In-Out消息交換模式總是存在SOAP請求和應答。
- 提供阻塞與非阻塞的API。
- 支持內置的服務尋址(WebService-Addressing)。
- 靈活的數據綁定與Web Service發佈方式:支持POJO(Plain Old Java Object)、AXIOM、XMLBeans、JiBX、JAXB 2.0等。
- 全新的部署模型,支持熱部署、熱更新。
- 支持HTTP、SMTP、JMS、TCP傳輸協議。
- 支持REST(Representational State Transfer)。
二、AXIS2的下載與部署
1.首先,在客戶機安裝appache tomcat以及jdk基礎環境。
2.在http://axis.apache.org/axis2/java/core/下載AXIS2的壓縮包
目前,AXIS2的最新版本是1.6.3(2015.6.27)。本文下載1.6.2(2012.4.17)版本。
下載列表:
axis2-1.6.2-bin.zip AXIS2完整版,支持WS-Addressing與SOAP-Moniter
axis2-1.6.2-war.zip AXIS2 Web容器部署版本
3.解壓axis2-1.6.2-war.zip文件,然後將axis2.war文件拷貝到<Tomcat安裝目錄>\webapps目錄,啓動Tomcat,在瀏覽器地址欄輸入AXIS2的URL(http://localhost:8080/axis2/),axis2.war會自動解壓縮,如果,AXIS2的主頁面則表示加載成功。
三、編寫與發佈WebService
(1)POJO方式發佈(無需任何設置 )
在AXIS2中無需任何設置,可以讓簡單的POJO發佈成Web Service。其中POJO的public方法會發布成爲Web Service方法。
public class AXISHelloService {
public String sayHello(){
return "Hello AXIS";
}
public String sayHelloToPerson(String name){
if(name==null){
name = "no body";
}
return "AXIS Hello,"+name;
}
}
編譯AXISHelloService類後,將AXISHelloService.class文件拷貝到<Tomcat安裝目錄>\webapps\axis2\WEB-INF\pojo目錄中。現在AXISHelloService已經發布成服務。
在瀏覽器地址欄中輸入如下的URL,查看服務列表:
http://localhost:8080/axis2/services/listServices
在瀏覽器中輸入兩個URL測試sayHello與sayHelloToPerson方法:
http://localhost:8080/axis2/services/AXISHelloService/sayHello
http://localhost:8080/axis2/services/AXISHelloService/sayHelloToPerson?name=bill
<ns:sayHelloToPersonResponse xmlns:ns="http://ws.apache.org/axis2"> <return>AXIS Hello,bill</return> </ns:sayHelloToPersonResponse>
在編寫、發佈與測試AXIS2.0服務時,注意以下方面:
- POJO不能使用package關鍵字聲明包。
-
AXIS2默認,熱發佈Web Service。即只要將Web Service的.class文件複製到pojo目錄時,tomcat無需重新啓動,即可自動發佈Web Service。Web Service熱發佈的配置項在<Tomcat安裝目錄>\webapps\axis2\WEB-INF\conf\axis2.xml文件中,找到如下配置項:
<parameter name="hotdeployment">true</parameter>
-
AXIS2默認,是非熱更新,即一旦發佈Web Service,再更新Web Service,必須重啓Tomcat。如果想設置AXIS2是熱更新,則修改axis2.xml的以下配置項:
<parameter name="hotupdate">false</parameter>
- 在瀏覽器中測試WebService時,如果WebService方法有參數,需要使用URL的請求參數來指定該WebService方法。
- 發佈Web Service的默認路徑的pojo,可以手動添加其他目錄,打開axis2.xml,在<axisconfig name="AxisJava2.0">節點之間,添加如下配置項
<deployer extension=".class" directory="deployPOJO" class="org.apache.axis2.deployment.POJODeployer"/>
(2)使用services.xml配置文件發佈
AXIS2引擎發佈Web Service,雖然POJO類直接拷貝至axis2\WEB-INF\pojo目錄直接發佈成Web Service,無需任何配置,但這些類無法處於任何包內。因此,AXIS2提供支持處於包中的POJO類發佈成Web Service的方式,即services.xml方式。