AXIS2遠程調用WebService示例(Eclipse+AXIS)


轉自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/10/3071584.html

 我們將Web Service發布在Tomcat或者其他應用服務器上后,有兩種方法可以調用該Web Service:

      1、通過瀏覽器調用,返回規范的XML文件
      2、通過客戶端程序調用,返回結果可自定義格式


      接下來,我利用Eclipse J2EE作為開發工具,演示一個Axis調用WebService的簡單示例
      第一種調用見我的另一篇博文:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/10/3072216.html
      步驟如下: 
     
     准備工作:下載AXIS2最新版(官方下載:http://axis.apache.org/axis2/java/core/download.cgi),導入AXIS類庫,即把下載包里../lib/目錄下的jar文件拷貝到工程的WEB-INF下的lib文件里

     需要的jar包列表:

 

      第一步:新建Web Project,項目名稱為WebServiceTest
      
      第二步:新建一個簡單的打印字符串的類HelloService.java:

 1 package com.sinosoft.webservice;
 2 
 3 public class HelloService {
 4     /**
 5      * 不帶參數的函數
 6      * 
 7      * @return 返回Hello字符串
 8      */
 9     public String sayHello() {
10         return "Hello";
11     }
12 
13     /**
14      * 帶參數的函數
15      * 
16      * @param name
17      *            名稱
18      * @return 返回加上名稱的歡迎詞
19      */
20     public String sayHelloToPerson(String name) {
21         if (name == null || name.equals("")) {
22             name = "nobody";
23         }
24         return "Hello " + name;
25     }
26 }

 

 第三步:右擊HelloService.java---Web Services---Create Web service.依次點擊下一步……finish,此時發現WebContent目錄下生成一個wsdl目錄,目錄下有一個HelloService.wsdl

 

 

 

第四步:測試 web service :右擊HelloService.wsdl---Web Services---Test with Web Services Explorer---點擊方法名connectStr----輸入參數XXX---點go.此時會發現控制台輸出Hello,XXX,說明 測試成功,WebService沒有問題

 

 第五步:編寫客戶端調用類HelloWorldTest,利用AXIS2遠程調用HelloWorld(為了體現遠程調用,新建一個Project,名稱為AxisTest),代碼如下:  

 1 package com.test;
 2 
 3 import java.rmi.RemoteException;
 4 import javax.xml.rpc.ParameterMode;
 5 import javax.xml.rpc.ServiceException;
 6 import org.apache.axis.client.Call;
 7 import org.apache.axis.client.Service;
 8 import org.apache.axis.encoding.XMLType;
 9 
10 import com.util.UtilProperties;
11 
12 public class HelloWorldTest {
13 
14     public String invokeRemoteFuc() {
15         // 遠程調用路徑
16 //        String endpoint = "http://localhost:8082/WebServiceTest/services/HelloService";
17         //webservice的訪問地址,這里是封裝成了一個工具方法,根據文件名以及鍵來獲取寫在properties文件里的訪問地址
18         String endpoint = UtilProperties.getValueByKeyViaProp("myendpointAddress", "ws.properties");
19         //預定義失敗的默認返回值
20         String result = "call failed!";
21         //步驟1 構建 org.apache.axis.client.Service 對象
22         Service service = new Service();
23         Call call;
24         try {
25             // 步驟2:通過org.apache.axis.client.Service對象創建一個Call,需要強轉為 org.apache.axis.client.Call類型
26             call = (Call) service.createCall();
27             // 步驟3:設置目標地址,即需要訪問的webservice地址
28             call.setTargetEndpointAddress(endpoint);
29             // 步驟4:設置調用的方法名
30             call.setOperationName("sayHelloToPerson");
31 
32             // 步驟5: 設置參數名
33             call.addParameter("name", // 參數名
34                     XMLType.XSD_STRING, // 參數類型:String
35                     ParameterMode.IN); // 參數模式:'IN' or 'OUT'
36 
37             // 步驟6:設置返回值類型
38             call.setReturnType(XMLType.XSD_STRING); // 返回值類型:String
39             String name = "WEIYONGLE";
40             //步驟7 :調用call.invoke(Object[] obj)方法
41             result = (String) call.invoke(new Object[] { name });// 遠程調用
42         } catch (ServiceException e) {
43             e.printStackTrace();
44         } catch (RemoteException e) {
45             e.printStackTrace();
46         }
47 
48         return result;
49     }
50 
51     // 測試
52     public static void main(String[] args) {
53         HelloWorldTest test = new HelloWorldTest();
54         String result = test.invokeRemoteFuc();
55         System.out.println(result);
56     }
57 
58 }

 

 

 

  第六步:測試:HelloWorldTest ---Run as---Java application,如果發現控制台正確輸出Hello WEIYONGLE,說明測試成功
 

     注意:1、設置方法名和參數名的時候,必須與被調用的WebService保持一致
              2、傳遞的參數需封裝到了一個Object數組里
              3、遠程調用路徑endpoint為第四步測試中EndPoints

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM