使用Axis2搭建WebService服务

文章目录

一、服务端部署

1.1 在web.xml配置文件中添加映射路径:

Axis2搭建WebService服务_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文件:
  • Axis2搭建WebService服务_WebService_02

  • 文件内容如下:
  • Axis2搭建WebService服务_xml_03

<?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">
<messageReceiver
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="hello">
<messageReceiver
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<schema schemaNamespace="gblfy"/>
</service>

3. 新建服务接口

Axis2搭建WebService服务_WebService_04

4. 新建接口实现类

Axis2搭建WebService服务_WebService_05

package com.gblfy.axis2.service.impl;

import com.gblfy.axis2.service.IWebService;

public class WebServiceImpl implements IWebService{

public String hello(String name) {
return "你好:" + name;
}

@Override
public String forward(String strXml) {
return "测试TestService:" + strXml;
}
}

5. 发布服务

6. 浏览器测试

​http://localhost:8081/spring-axis2/services/ExposureServiceName?wsdl​​​ 效果图:
Axis2搭建WebService服务_客户端_06
手动设置命名空间截图(没有需求,保持默认即可,如果有这样的需求,按照我照样是设置即可):
Axis2搭建WebService服务_客户端_07

注:为了满足需求,命名空间,我手动设置过

二、客户端部署

2.1 Axis2客户端通用工具类封装(企业版本)

Axis2搭建WebService服务_WebService_08

  /**
*
* @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);// 超时时间20s
options.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 单元测试(命名空间默认):

命名空间默认:

Axis2搭建WebService服务_xml_09

2.3 单元测试:命名空间根据需求,名称为gblfy

Axis2搭建WebService服务_命名空间_10


第一种:

  public static void main(String[] args) {
String url = "http://localhost:8081/spring-axis2/services/ExposureServiceName?wsdl";
String nameSpace = "http://";
// 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);

}

任选其一即可

控制台输出:

Axis2搭建WebService服务_WebService_11

三、jar包依赖获取

3.1 登录axis2官网下载即可

​http:///axis2/java/core/download.cgi​Axis2搭建WebService服务_WebService_12
Axis2搭建WebService服务_xml_13
Axis2搭建WebService服务_WebService_14
Axis2搭建WebService服务_WebService_15
Axis2搭建WebService服务_xml_16

3.2 war包部署tomcat

  • 将war包放到tomcat的webapp目录下面,启动tomcat就可以看到Axis2的首页。
    项目所用到的jar从第1个压缩包中取,简单直接从lib文件夹里面的jar全部复制到项目中即可

本文源码下载:

链接

​https://pan.baidu.com/s/1Ww6qrAopbIiQReIeojd4tg ​

提取码

hjlx