SpringBoot集成axis发布WebService服务

文章目录

    • 1、使用maven-web项目生成server-config.wsdd文件
      • 1.1、新建maven-web项目
        • 1.1.1、新建项目
        • 1.1.2、添加依赖
      • 1.2、编写服务接口和实现类
        • 1.2.1、OrderService接口
        • 1.2.2、OrderServiceImpl实现类
      • 1.3、配置deploy.wsdd文件
        • deploy.wsdd文件
      • 1.4、配置tomcat
        • 1.4.1、配置tomcat-server
        • 1.4.2、配置web.xml 文件
      • 1.5、生成server-config.wsdd文件
        • 1.5.1、验证服务是否发布
        • 1.5.2、生成server-config.wsdd文件
        • 1.5.3、验证server-config.wsdd文件
    • 2、将axis集成到SpringBoot应用中去
      • 2.1、新建springboot应用
      • 2.2、配置应用
        • 2.2.1、复制server-config.wsdd文件
        • 2.2.2、新建AxisServiceConfig配置类
        • 2.2.3、新建EngineConfigurationFactoryServlet类
      • 2.3、启动并访问
    • 3、验证服务
      • 3.1、获取wsdl文件
      • 3.2、使用soapUI验证

本文档详细说明了使用SpringBoot集成axis发布WebService服务的步骤,供大家在开发的过程中参考

1、使用maven-web项目生成server-config.wsdd文件

1.1、新建maven-web项目

1.1.1、新建项目

新建maven-web项目,archetype这里选择maven-archetype-webapp

在这里插入图片描述

1.1.2、添加依赖

pom.xml的依赖添加如下:

        
<!-- 引入axis的依赖 BEGIN -->
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.0</version>
</dependency>
<dependency><groupId>axis</groupId><artifactId>axis</artifactId><version>1.4</version>
</dependency>
<dependency><groupId>axis</groupId><artifactId>axis-wsdl4j</artifactId><version>1.5.1</version>
</dependency>
<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version>
</dependency>
<!-- 引入axis的依赖 END -->

1.2、编写服务接口和实现类

1.2.1、OrderService接口

新建一个OrderService接口,如下:

package com.iambest.study.axis.service;public interface OrderService {/*** 下单接口* @param userId 用户ID* @param token 令牌* @param orderInfo 订单信息-JSON格式* @return*/String createOrder(String userId, String token, String orderInfo);/*** 支付接口* @param userId 用户ID* @param token 令牌* @param paymentInfo 支付信息-JSON格式* @return*/String payment(String userId, String token, String paymentInfo);}
1.2.2、OrderServiceImpl实现类

新建接口实现类,这里演示需要,仅对方法做简单实现,如下:

package com.iambest.study.axis.service.impl;import com.iambest.study.axis.service.OrderService;public class OrderServiceImpl implements OrderService {@Overridepublic String createOrder(String userId, String token, String orderInfo) {return "SUCCESS";}@Overridepublic String payment(String userId, String token, String paymentInfo) {return "SUCCESS";}
}

1.3、配置deploy.wsdd文件

deploy.wsdd文件

在webapp/WEB-INF目录下新建deploy.wsdd文件,如下:

在这里插入图片描述


<deployment xmlns="http://xml.apache.org/axis/wsdd/"xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><!-- name: 服务名随便写。 --><service name="OrderService" provider="java:RPC"><parameter name="className" value="com.iambest.study.axis.service.impl.OrderServiceImpl" /><!-- value表示哪些方法需要发布,*表示全部的public方法。 --><!-- 如果想指定方法名,方法名与方法名用逗号隔开 --><parameter name="allowedMethods" value="*" /><!-- 指定命名空间 --><namespace>http://com.iambest.study.axis.service/OrderServiceHttpSoap11Endpoint</namespace></service>
</deployment>

1.4、配置tomcat

1.4.1、配置tomcat-server

菜单栏:Edit Configurations , 点击+号,选择Tomcat Server --> Local, 如下:

在这里插入图片描述

在Server标签页下,Application server: 点击Configure,选择你本地的Tomcat 服务器的路径,如下:

在这里插入图片描述

然后选择Deploymen标签页,点击+号,选择当前的项目即可

在这里插入图片描述

1.4.2、配置web.xml 文件

web.xml文件新增如下的内容:

<!-- WebService接入配置  BEGIN -->
<servlet><servlet-name>AxisServlet</servlet-name><servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>AxisServlet</servlet-name><url-pattern>/services/*</url-pattern>
</servlet-mapping>
<!-- WebService接入配置  END -->

1.5、生成server-config.wsdd文件

1.5.1、验证服务是否发布

直接启动tomcat,浏览器访问:http://127.0.0.1:8080/axis_study/services,显示如下的内容表示webservice服务发布成功了

在这里插入图片描述

1.5.2、生成server-config.wsdd文件

切换到tomcat的webapps目录下,我的是mac电脑,路径如下:/Users/david/Developer/apache-tomcat-8.5.98/webapps/axis_study/WEB-INF , 如果是别的电脑,则根据你的实际路径切换即可

执行如下的命令:

java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l http://127.0.0.1:8080/axis_study/services deploy.wsdd

显示如下,表示生成文件成功:

在这里插入图片描述

1.5.3、验证server-config.wsdd文件

将生成好的server-config.wsdd文件,复制到工程文件的WEB-INF目录下,和deploy.wsdd同级即可,然后重启tomcat,再次访问http://127.0.0.1:8080/axis_study/services ,显示如下表示成功生成server-config.wsdd文件

在这里插入图片描述

2、将axis集成到SpringBoot应用中去

2.1、新建springboot应用

新建springboot工程,将1.1.2章节的依赖添加到当前的pom.xml文件中,并将接口和实现类复制到当前的工程中,如下:

在这里插入图片描述

2.2、配置应用

2.2.1、复制server-config.wsdd文件

在resources目录下,新建WEB-INF文件夹,将1.5.2章节中生成的server-config.wsdd文件复制到WEB-INF目录下

2.2.2、新建AxisServiceConfig配置类

新建AxisServiceConfig配置类,内容如下:

package com.iambest.study.axis.config;import org.apache.axis.transport.http.AxisServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class AxisServiceConfig {@Beanpublic ServletRegistrationBean<AxisServlet> axisServletServletRegistrationBean() {ServletRegistrationBean<AxisServlet> axisServletServletRegistrationBean =new ServletRegistrationBean<>(new AxisServlet(),"/services/*");axisServletServletRegistrationBean.setName("AxisServlet");axisServletServletRegistrationBean.setLoadOnStartup(1);return axisServletServletRegistrationBean;}}
2.2.3、新建EngineConfigurationFactoryServlet类

新建EngineConfigurationFactoryServlet类,必须放到org.apache.axis.configuration包路径下,内容入下:

package org.apache.axis.configuration;import java.io.InputStream;
import javax.servlet.ServletConfig;import org.apache.axis.AxisProperties;
import org.apache.axis.ConfigurationException;
import org.apache.axis.EngineConfiguration;
import org.apache.axis.EngineConfigurationFactory;
import org.apache.axis.components.logger.LogFactory;
import org.apache.axis.server.AxisServer;
import org.apache.axis.utils.ClassUtils;
import org.apache.axis.utils.Messages;
import org.apache.commons.logging.Log;public class EngineConfigurationFactoryServlet extends EngineConfigurationFactoryDefault {protected static Log log =LogFactory.getLog(EngineConfigurationFactoryServlet.class.getName());private ServletConfig cfg;public static EngineConfigurationFactory newFactory(Object param) {return (param instanceof ServletConfig)? new EngineConfigurationFactoryServlet((ServletConfig) param): null;}protected EngineConfigurationFactoryServlet(ServletConfig conf) {super();this.cfg = conf;}@Overridepublic EngineConfiguration getServerEngineConfig() {return getServerEngineConfig(cfg);}/*** Get a default server engine configuration in a servlet environment.** @param cfg a ServletContext* @return a server EngineConfiguration*/private static EngineConfiguration getServerEngineConfig(ServletConfig cfg) {String configFile = cfg.getInitParameter(OPTION_SERVER_CONFIG_FILE);if (configFile == null) {configFile = AxisProperties.getProperty(OPTION_SERVER_CONFIG_FILE);}if (configFile == null) {configFile = SERVER_CONFIG_FILE;}String appWebInfPath = "/WEB-INF";FileProvider config = null;String realWebInfPath = EngineConfigurationFactoryServlet.class.getResource(appWebInfPath).getPath();InputStream iss = ClassUtils.getResourceAsStream(EngineConfigurationFactoryServlet.class, appWebInfPath + "/" + SERVER_CONFIG_FILE);if (iss != null) {config = new FileProvider(iss);}if (config == null) {log.error(Messages.getMessage("servletEngineWebInfError03", ""));}if (config == null && realWebInfPath != null) {try {config = new FileProvider(realWebInfPath, configFile);} catch (ConfigurationException e) {log.error(Messages.getMessage("servletEngineWebInfError00"), e);}}/*** Fall back to config file packaged with AxisEngine*/if (config == null) {log.warn(Messages.getMessage("servletEngineWebInfWarn00"));try {InputStream is =ClassUtils.getResourceAsStream(AxisServer.class,SERVER_CONFIG_FILE);config = new FileProvider(is);} catch (Exception e) {log.error(Messages.getMessage("servletEngineWebInfError02"), e);}}return config;}}

最终的项目结构如下图所示:

在这里插入图片描述

2.3、启动并访问

启动springboot应用,并访问:http://127.0.0.1:8080/services路径,显示内容如下表示发布服务成功:

在这里插入图片描述

3、验证服务

3.1、获取wsdl文件

通过wget命令获取wsdl文件

wget -O OrderService.wsdl http://127.0.0.1:8080/services/OrderService?wsdl

文件获取成功,如下:
在这里插入图片描述

3.2、使用soapUI验证

导入刚才的wsdl文件后,发送请求信息,返回如下的信息,表示成功:

在这里插入图片描述

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

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

相关文章

MySQL数据库练习【一】

MySQL数据库练习【一】 一、建库建表-数据准备二、习题2.1. 查询部门编号为30的部门的员工详细信息2.2.查询从事clerk工作的员工的编号、姓名以及其部门号2.3.查询奖金多于基本工资的员工的信息、查询奖金小于基本工资的员工的信息2.4.查询奖金多于基本工资60%的员工的信息2.5.…

宠物空气净化器适合养猫家庭吗?除猫毛好的猫用空气净化器推荐

宠物掉毛是一个普遍存在的问题&#xff0c;尤其在脱毛季节&#xff0c;毛发似乎无处不在。这给家中的小孩和老人带来了很多麻烦&#xff0c;他们容易流鼻涕、过敏等不适。此外&#xff0c;宠物有时还会不规矩地拉扯和撒尿&#xff0c;这股气味实在是难以忍受。家人们对宠物的存…

【DC渗透系列】DC-4靶场

主机发现 arp-scan -l┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:6b:ed:27, IPv4: 192.168.100.251 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.100.1 00:50:56:c0:00:08 …

掌握Go的加密技术:crypto/rsa库的高效使用指南

掌握Go的加密技术&#xff1a;crypto/rsa库的高效使用指南 引言crypto/rsa 库概览RSA 加密算法基本原理crypto/rsa 库的功能和应用 安装和基本设置在 Go 项目中引入 crypto/rsa 库基本环境设置和配置 密钥生成与管理生成 RSA 密钥对密钥存储和管理 加密和解密操作使用 RSA 加密…

Kafka零拷贝技术与传统数据复制次数比较

读Kafka技术书遇到困惑: "对比传统的数据复制和“零拷贝技术”这两种方案。假设有10个消费者&#xff0c;传统复制方式的数据复制次数是41040次&#xff0c;而“零拷贝技术”只需110 11次&#xff08;一次表示从磁盘复制到页面缓存&#xff0c;另外10次表示10个消费者各自…

加固平板电脑丨三防智能平板丨工业加固平板丨智能城市管理

随着智能城市的不断发展&#xff0c;人们对于城市管理的要求也在不断提高&#xff0c;这就需要高效、智能的城市管理平台来实现。而三防平板就是一款可以满足这一需求的智能设备。 三防平板是一种集防水、防尘、防摔于一体的智能平板电脑&#xff0c;它可以在复杂的环境下稳定运…

【EI会议征稿通知】第三届智能控制与应用技术国际学术会议(AICAT 2024)

第三届智能控制与应用技术国际学术会议&#xff08;AICAT 2024&#xff09; 2024 3rd International Symposium on Artificial Intelligence Control and Application Technology 2024年第三届智能控制与应用技术国际学术会议&#xff08;AICAT 2024&#xff09;定于2024年5月…

Leetcode24:两两交换链表中的节点

一、题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#xff…

[Linux 进程控制(二)] 写时拷贝 - 进程终止

文章目录 1、写时拷贝2、进程终止2.1 进程退出场景2.1.1 退出码2.1.2 错误码错误码 vs 退出码2.1.3 代码异常终止引入 2.2 进程常见退出方法2.2.1 exit函数2.2.2 _exit函数 本片我们主要来讲进程控制&#xff0c;讲之前我们先把写时拷贝理清&#xff0c;然后再开始讲进程控制。…

JAVA面试汇总总结更新中ing

本人面试积累面试题 多线程微服务JVMKAFKAMYSQLRedisSpringBoot/Spring 1.面向对象的三个特征 封装&#xff0c;继承&#xff0c;多态&#xff0c;有时候也会加上抽象。 2.多态的好处 允许不同类对象对同一消息做出响应&#xff0c;即同一消息可以根据发送对象的不同而采用多种…

软考21-上午题-数组、矩阵

数组&#xff1a;一组地址连续的空间。 数组是定长线性表在维数上的扩展&#xff0c;即&#xff0c;线性表中的元素又是一个线性表。 一、数组 数组的特点&#xff1a; 数组数目固定&#xff0c;一旦定义了数组结构&#xff0c;不再有元素个数的增减变化。因此&#xff0c;数…

C# Onnx GroundingDINO 开放世界目标检测

目录 介绍 效果 模型信息 项目 代码 下载 介绍 地址&#xff1a;https://github.com/IDEA-Research/GroundingDINO Official implementation of the paper "Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection" 效果 …

MATLAB矩阵的操作(第二部分)

师从清风 矩阵的创建方法 在MATLAB中&#xff0c;矩阵的创建方法主要有三种&#xff0c;分别是&#xff1a;直接输入法、函数创建法和导入本地文件中的数据。 直接输入法 输入矩阵时要以中括号“[ ]”作为标识符号&#xff0c;矩阵的所有元素必须都在中括号内。 矩阵的同行元…

openssl3.2 - use openssl cmd create ca and p12

文章目录 openssl3.2 - use openssl cmd create ca and p12概述笔记实验的openssl环境建立CA生成私钥和证书请求生成CA证书用CA签发应用证书用CA对应用证书进行签名将已经签名好的PEM证书封装为P12证书验证P12证书是否可用END openssl3.2 - use openssl cmd create ca and p12 …

Redis(三)(实战篇)

查漏补缺 1.spring 事务失效 有时候我们需要在某个 Service 类的某个方法中&#xff0c;调用另外一个事务方法&#xff0c;比如&#xff1a; Service public class UserService {Autowiredprivate UserMapper userMapper;public void add(UserModel userModel) {userMapper.…

睿尔曼超轻量仿人机械臂—外置按钮盒使用说明

睿尔曼RM系列机械臂的控制方式有很多种&#xff0c;包括&#xff1a;示教器、JSON、API等。在此为大家介绍外置按钮盒的使用方法。 按钮盒接线安装 按钮盒外观如下图所示&#xff0c;有&#xff1a;急停、暂停、开始、继续。四个功能按钮。用户可通过这四个按钮来实现对机械臂运…

[嵌入式AI从0开始到入土]13_orangepi aipro开箱测评

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…

如何在电脑上恢复查看iPhone短信?4个有效方法给你!

在当今科技发达的世界&#xff0c;能够在计算机上查看 iPhone 短信将彻底改变游戏规则。无论是存档珍贵的对话还是管理与工作相关的聊天&#xff0c;这都是一项至关重要的技能。在本指南中&#xff0c;我们将引导您了解如何在计算机上查看 iPhone 短信的四种高效方法。通过执行…

1.0 Zookeeper 分布式配置服务教程

ZooKeeper 是 Apache 软件基金会的一个软件项目&#xff0c;它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。 ZooKeeper 的架构通过冗余服务实现高可用性。 Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来&#xff0c;构成一个高…

【AI数字人-论文】Geneface论文

文章目录 前言pipelineaudio-to-motionMotion domain adaptation可视化 Motion-to-imageHead-NeRFTorso-NeRF 结果对比 前言 语音驱动的说话人视频合成旨在根据一段输入的语音&#xff0c;合成对应的目标人脸说话视频。高质量的说话人视频需要满足两个目标&#xff1a; &#…