Axis2搭建WebService服务

使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++实现引用计数

概述 当有指针指向同一块内存空间时&#xff0c;计数器加1&#xff0c;没增加一个指向该内存空间的指针&#xff0c;计数器加1&#xff0c;同理&#xff0c;当原本指向该内存空间的指针指向另一块内存&#xff0c;计数器减1&#xff0c;被指向的另一个内存的计数器加1。下面是…

焦虑的 BAT、不安的编程语言,揭秘程序员技术圈生存现状!

戳蓝字“CSDN云计算”关注我们哦&#xff01;【CSDN 编者按】在迭代不休的技术圈中&#xff0c;仅在过去的一个月期间&#xff0c;我们见证了有史以来第一张黑洞照片的诞生&#xff1b;经历了为让人义愤填膺的 996&#xff1b;思考了作为程序员的年龄之槛&#xff1b;膜拜了技术…

5G精华问答 | 除了速度,5G还能带来什么?

从2016年以来&#xff0c;5G热度逐步攀升。作为下一代移动通信网络&#xff0c;如果用一个关键词来形容5G&#xff0c;那就是“快”。5G不仅会极大地改变人们现有的生活和工作方式&#xff0c;提升通信效率&#xff0c;还可以加大很多前沿技术和产品落地的可能性。今天&#xf…

Spring获取JavaBean的xml形式和注解形式

Spring获取JavaBean的xml形式和注解形式 文章目录一、用xml文件方式管理JavaBean1. 创建一个xml配置文件2. 将一个Bean交由spring创建并管理3. 获取Spring上下文&#xff0c;获取bean二、用注解获取Javabean1. 创建一个class配置java文件2. 将一个bean交由Spring创建并管理3. 获…

C++中两个栈实现一个队列

引言 首先看这个标题的时候&#xff0c;需要联想到栈和队列的特点&#xff0c;栈是先进后出&#xff0c;队列是先进先出。假如三个元素1&#xff0c;2&#xff0c;3&#xff0c;将这三个元素依次入栈1后&#xff0c;再将栈1中元素依次出栈放入到栈2中&#xff0c;栈1中只留下最…

Kube-OVN:基于OVN的开源Kubernetes网络实践

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;今天&#xff0c;许多企业开始运行Kubernetes集群&#xff0c;并从中受益。但我们仍然…

IntelliJ IDEA中创建xml文件

1、file—setting&#xff0c;左上角输入template&#xff0c;2、在左侧栏找到File And Code Templates3、中间选中Files4、点击号&#xff0c;添加模板5、输入模板名字&#xff1a;Name:mybatis-cfg.xml &#xff08;name可以自定义&#xff09;6、后缀名extension&#xff1a…

C++冒泡排序

引言 冒泡排序作为排序中一个比较重要的方法&#xff0c;这里做一些简单的记录。 示例 本例中将一组数据2&#xff0c;4&#xff0c;3&#xff0c;8&#xff0c;5按照从小到大的顺序进行冒泡排序。首先说一下&#xff0c;冒泡排序是怎么排序的&#xff1a;将数组中相邻的两个…

阿里云技术专家入选Apache Member;百度Q1财报:营收241亿元;华为面向全球发布AI-Native数据库……...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周二第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

c++选择排序

引言 选择排序就是找出每趟中的最小值或者最大值与对应趟数位置上的数值进行交换&#xff0c;从而排序&#xff0c;具体像序列&#xff1a;2&#xff0c;5&#xff0c;4&#xff0c;3&#xff0c;8若按照从小到大的顺序选择排序&#xff0c;总共5个元素&#xff0c;需要进行5-…

C++快速排序(二)

引言 此文继上一次的c快速排序之后&#xff0c;是时隔一年后的重新领悟。快速排序就是从一列序列中选择一个数作为基数&#xff0c;一般以左边第一个元素为基数&#xff0c;然后定义两个变量left与right,left指向左边第一个元素&#xff0c;与基数指向相同&#xff0c;right指…

如何看待“英特尔是一家软件公司”?

戳蓝字“CSDN云计算”关注我们哦&#xff01;1968年7月&#xff0c;传奇半导体公司仙童的两位共同创办人罗伯特诺伊斯、高登摩尔从仙童请辞&#xff0c;共同创办了以“INTegrated ELectronics&#xff08;集成电子&#xff09;”前缀为名的一家电子公司&#xff0c;这家公司就是…

C++插入排序

引言 插入排序就是将一个序列中第一个元素&#xff0c;认为是有序数组&#xff0c;该数组含一个元素&#xff0c;剩下的元素构成一个无序数组&#xff0c;将无序数组中元素逐一与有序数组中最后一个元素开始向前比较&#xff0c;根据具体的从大到小的顺序或者从小到大的顺序&a…

日常软件安装

软件安装专栏总览 文章目录一、JDK安装1.1下载、安装一路next1.2 配置环境变量1.2.1. 新建系统变量JAVA_HOME1.2.2. 创建CLASSPATH环境变量1.2.3. 编辑Path环境变量1.2.4. 验证1.2.5. 验证javac一、JDK安装 1.1下载、安装一路next 1.2 配置环境变量 1.2.1. 新建系统变量JAVA…

Java 动态加载类

Class.forName(“类的全称”); 不仅表示类的类类型&#xff0c;还代表了动态加载类 请大家区分编译、运行 编译时刻加载类时静态加载类、运行时刻加载类时动态加载类 编写一个Office.java文件&#xff0c;在类中创建2个不存在的对象Word和Excel&#xff0c; public class Off…

升级为私有全栈云的腾讯云TStack究竟强在了哪儿?

戳蓝字“CSDN云计算”关注我们哦&#xff01;在刚刚结束的美国丹佛Open Infrastructure峰会上&#xff0c;腾讯云对全新升级为私有全栈云的TStack进行了详细的介绍&#xff0c;引起峰会现场众多OpenStack专业人士侧目。那么&#xff0c;这款腾讯基于OpenStack倾力打造的私有云解…

C++中继承与虚函数示例

引言 此文记录以下虚函数和继承的一个示例。 示例 class Base {virtual void method(){std::cout<<"from base"<<std::endl;} public:virtual ~Base(){method();}void baseMethod(){method();} };class A:public Base {void method(){std::cout<&l…

漫画:图的 “多源” 最短路径

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;————— 第二天 —————小灰的思路如下&#xff1a;第一步&#xff0c;利用迪…

C++实现单链表的反序

引言 将一个没有空结点作为头的单链表实现反转。其实质就是将结点的指针域指向反转。定义指向当前结点的指针&#xff0c;指向前一个结点的指针&#xff0c;指向当前结点的后一个结点的指针&#xff0c;这个过程中包含只有一个结点的单链表&#xff0c;那么反转之后还是它本身…

vs2010中引入boost库

引言 在vs2010中无法使用C11中的大多数特性&#xff0c;像mutex互斥锁&#xff0c;要想使用需要引入boost库。下面记录一下boost库引入到vs2010中。 实现 分为以下几步&#xff1a; 下载boost压缩包 可以采用下面的地址下载适合自己的版本。下载地址&#xff1a; https://…