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


      我們將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文件里

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

1 public class HelloWorld {  
2       
3     public String printStr(String name){  
4         String resultStr="Hello," + name;  
5        
6         System.out.println(resultStr);  
7         return resultStr;  
8     }  
9 }  


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


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

     


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

 1 import java.rmi.RemoteException;
 2 import javax.xml.rpc.ParameterMode;
 3 import javax.xml.rpc.ServiceException;
 4 import org.apache.axis.client.Call;
 5 import org.apache.axis.client.Service;
 6 import org.apache.axis.encoding.XMLType;
 7 
 8 public class HelloWorldTest {
 9     
10     public String invokeRemoteFuc() {
11         // 遠程調用路徑
12         String endpoint = "http://localhost:8080/WebServiceTest/services/HelloWorld";
13         String result = "call failed!";
14         Service service = new Service();
15         Call call;
16         
17         try {
18             call = (Call) service.createCall();
19             call.setTargetEndpointAddress(endpoint); 
20             // 調用的方法名
21             call.setOperationName("printStr"); 
22             
23             // 設置參數名
24             call.addParameter("name",   // 參數名
25                     XMLType.XSD_STRING, // 參數類型:String
26                     ParameterMode.IN);  // 參數模式:'IN' or 'OUT'
27 
28             // 設置返回值類型
29             call.setReturnType(XMLType.XSD_STRING); // 返回值類型:String
30             String name = "Alexia";
31             result = (String) call.invoke(new Object[] { name });// 遠程調用
32         } catch (ServiceException e) {
33             e.printStackTrace();
34         } catch (RemoteException e) {
35             e.printStackTrace();
36         }
37         
38         return result;
39     }
40 
41     // 測試
42     public static void main(String[] args) {
43         HelloWorldTest test = new HelloWorldTest();
44         String result = test.invokeRemoteFuc();
45         System.out.println(result);
46     }
47 
48 }


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

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


免責聲明!

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



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