跳至内容
wiki
用户工具
登录
站点工具
工具
显示页面
修订记录
反向链接
最近更改
媒体管理器
网站地图
登录
最近更改
媒体管理器
网站地图
您的足迹:
分享:技术:webservice:spring整合webservice_axis2
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== spring整合webservice_axis2 ====== 示例项目:[[分享:技术:示例项目:springmvc_mybatis_spring_freemarker_maven|springmvc+mybatis+spring+freemarker+maven示例项目]],只是普通的web项目,这里在这个项目的基础上,引入axis2,实现发布webservice服务! ===== web.xml ===== 新增AxisServlet拦截串 <code xml 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配置信息结束 --> </code> ===== 新建目录META-INF ===== 在/WEB-INF/下手动创建目录/services/service/META-INF/ ===== ServiceData.xml ===== <code xml ServiceData.xml> <?xml version="1.0" encoding="UTF-8"?> <ServiceData> </ServiceData> </code> ===== services.xml ===== <code xml services.xml> <?xml version="1.0" encoding="UTF-8"?> <!-- 对外发布的WebService名字 --> <service name="AxisService"> <description>Spring 整合例子 </description> <parameter name="ServiceObjectSupplier"> org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier </parameter> <!-- 配置在applicationContext中配置的bean,这里的值域bean中的id事一样的,否则就报错找不到bean错 --> <parameter name="SpringBeanName">axisService</parameter> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> </messageReceivers> </service> </code> ===== application-context.xml ===== 新增bean配置 <code xml application-context.xml> <bean id="axisService" class="com.gxx.record.service.impl.AxisService"></bean> </code> ===== AxisService.java ===== <code xml 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; } } </code> ===== 发布后访问 ===== 访问:http://localhost:8080/record/services/AxisService?wsdl {{:分享:技术:webservice:wechatimg392.jpeg?600|}} ===== 客户端调用 ===== <code java TestWebservice.java> 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(); } } </code> ===== 打包下载 ===== {{:分享:技术:webservice:record.zip|}}
分享/技术/webservice/spring整合webservice_axis2.1483957191.txt.gz
· 最后更改: 2017/01/09 18:19 由
gxx
页面工具
显示页面
修订记录
反向链接
回到顶部