====== spring整合webservice_axis2 ======
示例项目:[[分享:技术:示例项目:springmvc_mybatis_spring_freemarker_maven|springmvc+mybatis+spring+freemarker+maven示例项目]],只是普通的web项目,这里在这个项目的基础上,引入axis2,实现发布webservice服务!
===== web.xml =====
新增AxisServlet拦截串
AxisServlet
org.apache.axis2.transport.http.AxisServlet
1
AxisServlet
/services/*
===== 新建目录META-INF =====
在/WEB-INF/下手动创建目录/services/service/META-INF/
===== ServiceData.xml =====
===== services.xml =====
Spring 整合例子
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
axisService
===== application-context.xml =====
新增bean配置
===== AxisService.java =====
package com.gxx.record.service.impl;
/**
* Axis2实现的WebService
* @author Gxx
*/
public class AxisService {
/**
* 计算加法 d1+d2
*/
public Integer jiafa(Integer d1, Integer d2) {
return d1+d2;
}
}
===== 发布后访问 =====
访问:http://localhost:8080/record/services/AxisService?wsdl
{{:分享:技术:webservice:wechatimg392.jpeg?600|}}
===== 客户端调用 =====
执行main方法得到结果
package com.gxx.record.webservice;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
/**
* 测试WebService
* @author Gxx
*/
public class TestWebservice {
/**
* 测试
* @throws Exception
*/
public void test() throws Exception {
String url = "http://localhost:8080/record/services/AxisService?wsdl";
try {
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(url);
Options options = serviceClient.getOptions();
// 确定目标服务地址
options.setTo(targetEPR);
// 确定调用方法
options.setAction("urn:jiafa");
options.setTimeOutInMilliSeconds(60000);
// 上图中的targetNamespace
QName qname = new QName("http://impl.service.record.gxx.com","jiafa");
// 指定jiafa方法的参数值
String requestContent = "";
try {
} catch (Exception e) {
throw new Exception(e.getMessage(), e.getCause());
}
Object[] parameters = new Object[] {20,30};
// 指定getPrice方法返回值的数据类型的Class对象
Class[] returnTypes = new Class[] { String.class };
// 调用方法一 传递参数,调用服务,获取服务返回结果集
OMElement element = serviceClient.invokeBlocking(qname, parameters);
// 值得注意的是,返回结果就是一段由OMElement对象封装的xml字符串。
String result = element.getFirstElement().getText();
System.out.println(result);
} catch (AxisFault e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
new TestWebservice().test();
}
}
===== 打包下载 =====
{{:分享:技术:webservice:record.zip|}}