WebService(axis2),整合springmvc
分类:
IT文章
•
2024-04-04 21:57:21
1.导入jar

2.在spring.xml中添加
<!-- axis2start -->
<bean id="testWSService" class="com.sh.test.WsTestServer"></bean>
<bean id="testWSService1" class="com.sh.test.WsTestServer1"></bean>
<!-- axis2end -->
3.创建Java文件,这两个文件就是要对外暴露的接口方法
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中添加
<!--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
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 }