使用Axis2搭建WebService服务
文章目录
- 一、服务端部署
- 1.1 在web.xml配置文件中添加映射路径:
- 2. 创建目录及文件
- 3. 新建服务接口
- 4. 新建接口实现类
- 5. 发布服务
- 6. 浏览器测试
- 二、客户端部署
- 2.1 Axis2客户端通用工具类封装(企业版本)
- 2.2 单元测试(命名空间默认):
- 2.3 单元测试:命名空间根据需求,名称为gblfy
- 三、jar包依赖获取
- 3.1 登录axis2官网下载即可
- 3.2 war包部署tomcat
- 本文源码下载:
一、服务端部署
1.1 在web.xml配置文件中添加映射路径:
<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>
2. 创建目录及文件
- 在WEB-INF下面新建services文件夹,在services文件夹下面新建conf文件夹,在conf文件夹下面新建META-INF文件夹,在META-INF文件夹下面新建services.xml文件:
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 1. name : 指定接口服务名,随便定义 2. targetNamespace::命名空间 自定义(默认包路径反着)3. description :服务的作用说明,可写可不写 -->
<service name="ExposureServiceName" targetNamespace="gblfy"><description>测试spring-axis2</description><!-- 1. 自定义 name 2. 指定要发布的类路径 --><parameter name="ServiceClass">com.gblfy.axis2.service.impl.WebServiceImpl</parameter><!-- 1. name : 类里面的方法名 2. 指定要发布的类路径 3. 有其他方法就在写个operation标签--><operation name="forward"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /></operation><operation name="hello"><messageReceiverclass="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /></operation><schema schemaNamespace="gblfy"/>
</service>
3. 新建服务接口
4. 新建接口实现类
package com.gblfy.axis2.service.impl;import com.gblfy.axis2.service.IWebService;public class WebServiceImpl implements IWebService{public String hello(String name) {return "你好:" + name;}@Overridepublic String forward(String strXml) {return "测试TestService:" + strXml;}
}
5. 发布服务
6. 浏览器测试
http://localhost:8081/spring-axis2/services/ExposureServiceName?wsdl
效果图:
手动设置命名空间截图(没有需求,保持默认即可,如果有这样的需求,按照我照样是设置即可):
注:为了满足需求,命名空间,我手动设置过
二、客户端部署
2.1 Axis2客户端通用工具类封装(企业版本)
/*** * @param url 服务调用地址* @param nameSpace 命名空间* @param method 方法名* @param tReqXml 请求报文* @return response 响应报文*/public String webserviceAxis2Client(String url, String nameSpace, String method, String tReqXml) {Object[] response = null;try {// 本机tomcat端口默认为8081,参数是wsdl网址的一部分EndpointReference targetEPR = new EndpointReference(url);RPCServiceClient sender = new RPCServiceClient();Options options = sender.getOptions();options.setTimeOutInMilliSeconds(2 * 20000L);// 超时时间20soptions.setTo(targetEPR);QName qname = new QName(nameSpace, method);Object[] param = new Object[] { tReqXml };Class<?>[] types = new Class[] { String.class }; // 这是针对返值类型的response = sender.invokeBlocking(qname, param, types);System.out.println(response[0]);} catch (AxisFault e) {e.printStackTrace();}return (String) response[0];}
2.2 单元测试(命名空间默认):
命名空间默认:
2.3 单元测试:命名空间根据需求,名称为gblfy
第一种:
public static void main(String[] args) {String url = "http://localhost:8081/spring-axis2/services/ExposureServiceName?wsdl";String nameSpace = "http://impl.service.axis2.gblfy.com";
// String method = "forward";String method = "hello";String tReqXml = "Axis2客户端调用成功";WebserviceClientUtils a = new WebserviceClientUtils();a.webserviceAxis2Client(url, nameSpace, method, tReqXml);}
第二种:
public static void main(String[] args) {String url = "http://localhost:8081/spring-axis2/services/ExposureServiceName?wsdl";String nameSpace = "gblfy";
// String method = "forward";String method = "hello";String tReqXml = "Axis2客户端调用成功";WebserviceClientUtils a = new WebserviceClientUtils();a.webserviceAxis2Client(url, nameSpace, method, tReqXml);}
任选其一即可
控制台输出:
三、jar包依赖获取
3.1 登录axis2官网下载即可
http://axis.apache.org/axis2/java/core/download.cgi
3.2 war包部署tomcat
- 将war包放到tomcat的webapp目录下面,启动tomcat就可以看到Axis2的首页。
项目所用到的jar从第1个压缩包中取,简单直接从lib文件夹里面的jar全部复制到项目中即可
本文源码下载:
链接 | https://pan.baidu.com/s/1Ww6qrAopbIiQReIeojd4tg |
---|---|
提取码 | hjlx |