WebService(axis2),整合springmvc

 1.導入jarjava

 

2.在spring.xml中添加web

  <!-- axis2start -->
  <bean id="testWSService" class="com.sh.test.WsTestServer"></bean>  
  <bean id="testWSService1" class="com.sh.test.WsTestServer1"></bean>  
  <!-- axis2end -->

3.建立Java文件,這兩個文件就是要對外暴露的接口方法spring

 1 package com.sh.test;
 2 
 3 /**
 4  * webservice服務端
 5  * @author Administrator
 6  *
 7  */
 8 public class WsTestServer {
 9     
10     /** 
11     * WS服務器返回數據 一個加法操做
12     */  
13    public Integer jiafa(Integer d1, Integer d2) {  
14        return d1+d2;  
15    }  
16    /** 
17     * WS服務器返回數據 一個減法操做
18     */  
19    public Integer jianfa(Integer d1, Integer d2) {  
20        return d1-d2;  
21    }  
22 
23 }
WsTestServer
 1 package com.sh.test;
 2 
 3 /**
 4  * webservice服務端
 5  * @author Administrator
 6  *
 7  */
 8 public class WsTestServer1 {
 9     
10     /** 
11     * WS服務器返回數據 一個乘法操做
12     */  
13    public Integer chengfa(Integer d1, Integer d2) {  
14        return d1*d2;  
15    }  
16 
17 }
WsTestServer1

4.在web.xml中添加apache

    
    <!--axis2  WebService配置信息開始-->  
     <servlet>  
            <servlet-name>AxisServlet</servlet-name>  
           <servlet-class>org.apache.axis2.transport.http.AxisServlet  
           </servlet-class>  
            <load-on-startup>1</load-on-startup>  
        </servlet>  
        <servlet-mapping>  
            <servlet-name>AxisServlet</servlet-name>  
            <url-pattern>/services/*</url-pattern>  
        </servlet-mapping>  
    <!-- axis2  WebService配置信息結束-->  

5.在WEB-INF下建立如下文件夾和文件 services/MyService/META-INF/services.xml   「MyService」這個自定義服務器

 1 <?xml version="1.0" encoding="UTF-8"?>  
 2 <serviceGroup> <!-- 多個類發佈 -->
 3     <!-- 訪問地址中的訪問那個webservice的名字 -->  
 4     <service name="TestWSService">  
 5         <description>例子 </description>  
 6         <parameter name="ServiceObjectSupplier">  
 7             org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier  
 8         </parameter>  
 9         <!-- 配置在applicationContext中配置的bean,,這裏的值域bean中的id事同樣的,不然就報錯找不到bean錯 -->  
10       
11         <parameter name="SpringBeanName">testWSService</parameter>  
12         <messageReceivers>  
13             <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  
14                 class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
15             <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"  
16                 class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
17         </messageReceivers>  
18     </service>  
19     <!-- 訪問地址中的訪問那個webservice的名字 -->  
20     <service name="TestWSService1">  
21         <description>例子1 </description>  
22         <parameter name="ServiceObjectSupplier">  
23             org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier  
24         </parameter>  
25         <!-- 配置在applicationContext中配置的bean,,這裏的值域bean中的id事同樣的,不然就報錯找不到bean錯 -->  
26       
27         <parameter name="SpringBeanName">testWSService1</parameter>  
28         <messageReceivers>  
29             <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  
30                 class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
31             <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"  
32                 class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
33         </messageReceivers>  
34     </service>  
35 </serviceGroup>
View Code

 6.建立調用方法app

  1 package com.sh.test;
  2 
  3 
  4 import javax.servlet.http.HttpServletRequest;
  5 import javax.servlet.http.HttpServletResponse;
  6 import javax.xml.namespace.QName;
  7 
  8 import org.apache.axiom.om.OMElement;  
  9 import org.apache.axis2.AxisFault;  
 10 import org.apache.axis2.addressing.EndpointReference;  
 11 import org.apache.axis2.client.Options;  
 12 import org.apache.axis2.rpc.client.RPCServiceClient; 
 13 import org.springframework.stereotype.Controller;
 14 import org.springframework.web.bind.annotation.RequestMapping;
 15 import org.springframework.web.bind.annotation.RequestMethod;
 16 
 17 /**
 18  * WebSerivce 客戶端
 19  * @author Administrator
 20  *
 21  */
 22 @Controller
 23 public class WsClient {
 24     
 25     @RequestMapping(value="/wsclient",method=RequestMethod.GET)
 26     public  void Wstest(HttpServletRequest request, HttpServletResponse response){
 27         String url = "http://192.168.1.168:8080/axis2demo/services/TestWSService?wsdl";//TestWSService這個就是services.xml中第三行的
 28         try {  
 29             // 使用RPC方式調用WebService  
 30             RPCServiceClient serviceClient = new RPCServiceClient();  
 31             // 指定調用WebService的URL  
 32             EndpointReference targetEPR = new EndpointReference(url);  
 33             Options options = serviceClient.getOptions();  
 34             // 肯定目標服務地址  
 35             options.setTo(targetEPR);  
 36             // 肯定調用方法  
 37             options.setAction("urn:jiafa");  
 38             options.setTimeOutInMilliSeconds(60000L);//超時時間  毫秒
 39             //第一個參數:包名倒過來,第二個參數:調用的方法
 40             QName qname = new QName("http://test.sh.com","jiafa");  
 41             // 指定jiafa方法的參數值  
 42             Object[] parameters = new Object[] {9,9};  
 43             // 調用方法一 傳遞參數,調用服務,獲取服務返回結果集  
 44             OMElement element = serviceClient.invokeBlocking(qname, parameters);  
 45             // 值得注意的是,返回結果就是一段由OMElement對象封裝的xml字符串。  
 46             String result = element.getFirstElement().getText();  
 47             System.out.println(result);  
 48         } catch (AxisFault e) {  
 49             e.printStackTrace();  
 50         }  
 51     }
 52     @RequestMapping(value="/wsclientjianfa",method=RequestMethod.GET)
 53     public  void Wstest1(HttpServletRequest request, HttpServletResponse response){
 54         String url = "http://192.168.1.168/axis2demo/services/TestWSService?wsdl";//TestWSService這個就是services.xml中第三行的
 55         try {  
 56             // 使用RPC方式調用WebService  
 57             RPCServiceClient serviceClient = new RPCServiceClient();  
 58             // 指定調用WebService的URL  
 59             EndpointReference targetEPR = new EndpointReference(url);  
 60             Options options = serviceClient.getOptions();  
 61             // 肯定目標服務地址  
 62             options.setTo(targetEPR);  
 63             // 肯定調用方法  
 64             options.setAction("urn:jianfa");  
 65             options.setTimeOutInMilliSeconds(60000L);//超時時間  毫秒
 66             //第一個參數:包名倒過來,第二個參數:調用的方法
 67             QName qname = new QName("http://test.sh.com","jianfa");  
 68             // 指定jiafa方法的參數值  
 69             Object[] parameters = new Object[] {9,9};  
 70             // 調用方法一 傳遞參數,調用服務,獲取服務返回結果集  
 71             OMElement element = serviceClient.invokeBlocking(qname, parameters);  
 72             // 值得注意的是,返回結果就是一段由OMElement對象封裝的xml字符串。  
 73             String result = element.getFirstElement().getText();  
 74             System.out.println(result);  
 75         } catch (AxisFault e) {  
 76             e.printStackTrace();  
 77         }  
 78     }
 79     @RequestMapping(value="/wsclientchengfa",method=RequestMethod.GET)
 80     public  void Wstest2(HttpServletRequest request, HttpServletResponse response){
 81         String url = "http://192.168.1.168/axis2demo/services/TestWSService1?wsdl";//TestWSService這個就是services.xml中第三行的
 82         try {  
 83             // 使用RPC方式調用WebService  
 84             RPCServiceClient serviceClient = new RPCServiceClient();  
 85             // 指定調用WebService的URL  
 86             EndpointReference targetEPR = new EndpointReference(url);  
 87             Options options = serviceClient.getOptions();  
 88             // 肯定目標服務地址  
 89             options.setTo(targetEPR);  
 90             // 肯定調用方法  
 91             options.setAction("urn:chengfa");  
 92             options.setTimeOutInMilliSeconds(60000L);//超時時間  毫秒
 93             //第一個參數:包名倒過來,第二個參數:調用的方法
 94             QName qname = new QName("http://test.sh.com","chengfa");  
 95             // 指定jiafa方法的參數值  
 96             Object[] parameters = new Object[] {9,9};  
 97             // 調用方法一 傳遞參數,調用服務,獲取服務返回結果集  
 98             OMElement element = serviceClient.invokeBlocking(qname, parameters);  
 99             // 值得注意的是,返回結果就是一段由OMElement對象封裝的xml字符串。  
100             String result = element.getFirstElement().getText();  
101             System.out.println(result);  
102         } catch (AxisFault e) {  
103             e.printStackTrace();  
104         }  
105     }
106 
107     
108 
109 }
View Code
相關文章
相關標籤/搜索