Axis2用法:客戶端和服務端

一、封裝準備

根據上篇,wsdl文件生成客戶端和服務端代碼後,須要作必定的封裝,方便調用。java

封裝前作以下準備:web

(1)將wsdl文件生成的java代碼(上篇的工程AttachService中的src文件夾下的java代碼。)打出jar包:AttachService-Axis2-1.6.2.jar。apache

(2)建立客戶端和服務端封裝工程:Demo-Axis2-1.6.2。注意:建立「Dynamic Web Project」工程。tomcat

(3)將Axis2的全部jar包(E:\axis2-1.6.2\lib),放到工程Demo-Axis2-1.6.2的lib下,導入工程的Libraries。服務器

(4)將Axis2的conf文件夾(E:\axis2-1.6.2)拷貝到工程Demo-Axis2-1.6.2的WEB-INF文件夾下。app

(5)將Axis2的modules和services文件夾(E:\axis2-1.6.2\repository)拷貝到工程Demo-Axis2-1.6.2的WEB-INF文件夾下。eclipse

(6)將Axis2的web.xml(E:\axis2-1.6.2\webapp\WEB-INF),拷貝到工程Demo-Axis2-1.6.2的WEB-INF文件夾下。webapp

(7)將剛打出的AttachService-Axis2-1.6.2.jar,拷貝到Demo-Axis2-1.6.2的lib文件夾下;並導入工程的libraries中。ide

(8)將上一篇中生成的AttachService.aar服務包,放到Demo-Axis2-1.6.2的WEB-INF/services/文件夾下,(該文件夾就是剛拷貝進來的)。測試

二、客戶端

(1)類名

在wsdl文件生成的客戶端和服務端代碼中,客戶端類爲:SendAttachServiceStub.java。(應該說以Stub結尾的這個類是客戶端類)。咱們就使用該類的對象,發送Soap消息。

(2)封裝


  1. package com.yht.msg.client;  

  2.   

  3. import java.rmi.RemoteException;  

  4.   

  5. import org.apache.axis2.AxisFault;  

  6.   

  7. import com.yht.msg.SendAttach;  

  8. import com.yht.msg.SendAttachResponse;  

  9. import com.yht.msg.SendAttachServiceStub;  

  10.   

  11. /** 

  12.  * 調用wsdl文件生成的客戶端類,建立一個客戶端發送消息。 

  13.  * @author Administrator 

  14.  * 

  15.  */  

  16. public class SendAttachClient   

  17. {  

  18.     /** 

  19.      * 發送消息主題字符串。 

  20.      */  

  21.     private String subject;  

  22.       

  23.     /** 

  24.      * 服務地址。 

  25.      */  

  26.     private String serviceAddress;  

  27.       

  28.     /** 

  29.      * 聲明客戶端對象。 

  30.      */  

  31.     private SendAttachServiceStub stub;  

  32.       

  33.     /** 

  34.      * 設置消息體的主題內容。 

  35.      * @param subject 主題內容。 

  36.      */  

  37.     public void setSubject(String subject)  

  38.     {  

  39.         this.subject = subject;  

  40.     }  

  41.       

  42.     /** 

  43.      * 設置消息的服務地址,即你的消息要發到哪兒去。 

  44.      * @param serviceAddress 服務地址。 

  45.      */  

  46.     public void setServiceAddress(String serviceAddress)   

  47.     {  

  48.         this.serviceAddress = serviceAddress;  

  49.     }  

  50.   

  51.     /** 

  52.      * 發送消息的方法。 

  53.      * @return 發送成功的響應。 

  54.      */  

  55.     public String sendAttach()  

  56.     {  

  57.         String result = null;  

  58.         SendAttachResponse response = null;  

  59.           

  60.         //一、根據服務地址,建立一個發送消息的客戶端。  

  61.         try  

  62.         {  

  63.             stub = new SendAttachServiceStub(serviceAddress);  

  64.         }  

  65.         catch (AxisFault e1)  

  66.         {  

  67.             // TODO Auto-generated catch block  

  68.             e1.printStackTrace();  

  69.         }  

  70.           

  71.         //二、建立一個發送消息的請求消息體。  

  72.         SendAttach sendAttach14 = new SendAttach();  

  73.         sendAttach14.setArgs0(subject);  

  74.           

  75.         //三、根據請求消息體,發送消息並獲取響應。  

  76.         try  

  77.         {  

  78.             response = stub.sendAttach(sendAttach14);  

  79.         }  

  80.         catch (RemoteException e)  

  81.         {  

  82.             // TODO Auto-generated catch block  

  83.             e.printStackTrace();  

  84.         }  

  85.           

  86.         //四、若是獲取的響應不爲空,獲取響應的字符串內容。  

  87.         if(response != null)  

  88.         {  

  89.             result = response.get_return();  

  90.         }  

  91.           

  92.         return result;  

  93.     }  

  94. }  



三、服務端

(1)接口

在wsdl文件生成的客戶端和服務端代碼中,會有一個接口類SendAttachServiceSkeletonInterface.java和接口實現類SendAttachServiceSkeleton.java。做爲服務端時,service.xml中默認的處理接收消息的類就是SendAttachServiceSkeleton.java。

(2)調用

建立類GetAttachService實現接口SendAttachServiceSkeletonInterface。修改aar包中service.xml文件中的內容:<parameter name="ServiceClass">com.yht.msg.SendAttachServiceSkeleton</parameter>;將com.yht.msg.SendAttachServiceSkeleton替換爲工程Demo-Axis2-1.6.2中實現了接口SendAttachServiceSkeletonInterface的類GetAttachService。即<parameter name="ServiceClass">com.yht.msg.service.GetAttachService</parameter>。

服務端源代碼以下:


  1. package com.yht.msg.service;  

  2.   

  3. import com.yht.msg.SendAttach;  

  4. import com.yht.msg.SendAttachResponse;  

  5. import com.yht.msg.SendAttachServiceSkeletonInterface;  

  6.   

  7. public class GetAttachService   

  8.     implements SendAttachServiceSkeletonInterface  

  9. {  

  10.       

  11.     public SendAttachResponse sendAttach(SendAttach arg0)   

  12.     {  

  13.         // TODO Auto-generated method stub  

  14.         System.out.println(arg0.getArgs0());  

  15.           

  16.         SendAttachResponse response = new SendAttachResponse();  

  17.         response.set_return("success");  

  18.         return response;  

  19.     }  

  20.       

  21. }  


四、SoapUI調測

(1)客戶端調測

將wsdl文件導入soapUI,配置soapUI接受消息地址,開啓接受消息的服務端。寫客戶端測試代碼以下:


  1. package main;  

  2.   

  3. import com.yht.msg.client.SendAttachClient;  

  4.   

  5. /** 

  6.  * 客戶端測試類。 

  7.  * @author Administrator 

  8.  * 

  9.  */  

  10. public class Test   

  11. {  

  12.     /** 

  13.      * 入口方法。 

  14.      * @param args 

  15.      */  

  16.     public static void main(String[] args)  

  17.     {  

  18.         String result = null;  

  19.         String subject = "Hello Axis2-1.6.2!";  

  20.         String serviceAddress = "http://127.0.0.1:8088/SendAttachService";  

  21.           

  22.         //建立客戶端類。  

  23.         SendAttachClient client = new SendAttachClient();  

  24.           

  25.         //設置消息體內容。  

  26.         client.setSubject(subject);  

  27.           

  28.         //設置服務地址。  

  29.         client.setServiceAddress(serviceAddress);  

  30.           

  31.         //發送消息獲取,結果。  

  32.         result = client.sendAttach();  

  33.           

  34.         //打印結果。  

  35.         System.out.println(result);  

  36.     }  

  37. }  

運行該類,查看開啓的soapUI是否正確接受到發送的消息。

(2)服務端調測

3.(2)中的demo服務端類,接受到消息體後打印消息內容,並返回響應「success」。將Demo-Axis2-1.6.2放到tomcat上啓動;利用soapUI發送消息到Demo。soapUI發送地址以下:

地址格式:http://服務器IP:服務器端口/應用名/services/發佈的服務名(service.xml中的service的名稱)

地址實例:http://localhost:8080/Demo-Axis2-1.6.2/services/SendAttachService

發送後,查看eclipse控制檯是否打印了,soapUI發送來的消息;soapUI是否正確接受了來自eclipse的響應「success」。

soapUI的基本操做,參見附件。

相關文章
相關標籤/搜索