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 }
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 }
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>
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 }