热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Springboot集成Axis2——通过wsdl生成webService

Springboot集成Axis2——通过wsdl生成webService背景介绍下载Axis2使用wsdl2java工具执行代码生成服务端代码生成命令客户端代码生成命令生成服务端

Springboot集成Axis2——通过wsdl生成webService

  • 背景介绍
    • 下载Axis2
    • 使用wsdl2java工具执行代码生成
      • 服务端代码生成命令
      • 客户端代码生成命令
    • 生成服务端代码
    • 生成客户端代码

背景介绍

客户方需要通过WebService进行消息交互,并且文档中规定了wsdl格式。由于目前Springboot对cxf框架支持较好,并没对axis进行较好的集成,但是客户放所规定的wsdl又使用到了仅axis支持的rpc模式,因此不得不使用axis作为Webservice框架进行服务的服务端和客户端的搭建。由于涉及到业务环境,所以代码暂不提供,仅以此文作为搭建流程的记录。

下载Axis2

Axis2提供了wsdl2java的工具包,首先需要现在Axis2至本地目录(不用是项目目录)。官网下载地址,本人下载的版本为axis2-1.7.9。

下载完成后解压,进入bin目录会发现wsdl2java.sh (windows使用 wsdl2java.bat)
Springboot集成Axis2——通过wsdl生成webService

使用wsdl2java工具执行代码生成

服务端代码生成命令

命令格式为:

wsdl2java.sh -uri [wsdl文件路径] -d adb -s -ss -sd -ssi -o [代码生成路径]

例如:

wsdl2java.sh -uri ~alistair/notify-response.wsdl -d adb -s -ss -sd -ssi -o ~alistair/Projects/ws/server/notify

客户端代码生成命令

命令格式为:

wsdl2java.sh -uri [wsdl文件路径] -d adb -o [代码生成路径]

例如:

wsdl2java.sh -uri ~alistair/notify_response.wsdl -d adb -o ~alistair/Projects/ws/client

生成服务端代码

使用wsdl2java生成服务端代码,生成结果如下:
Springboot集成Axis2——通过wsdl生成webService
查看生成的resources/services.xml,该文件是服务的配置文件,可以看出ResultNotify为红色,是因为代码生成是大小写有无,将其改为小写resultNotify即可(目前是笔者遇到的这个问题,有可能只是个例)
Springboot集成Axis2——通过wsdl生成webService
代码生成完成后,对代码结构进行调整
Springboot集成Axis2——通过wsdl生成webService
将生成的配置文件放置resouces***意文件夹的路径,其中servicesPath后面会用到
Springboot集成Axis2——通过wsdl生成webService
修改pom,引入axis2相关包:

	
	  org.apache.axis2
	  axis2-transport-http
	  1.7.7
	
	
	  org.apache.axis2
	  axis2-transport-local
	  1.7.7
	
	
	  org.apache.axis2
	  axis2-adb
	  1.7.7
	

修改ServiceSkeleton类,增加服务端的业务处理逻辑:

public class CSPResponseServiceSkeleton
    implements CSPResponseServiceSkeletonInterface {
    /**
     * Auto generated method signature
     *
     * @param resultNotify0
     * @return resultNotifyResponse1
     */
    @Override
    public ResultNotifyResponse resultNotify(ResultNotify resultNotify0) {
        ResultNotifyResponse resultNotifyRespOnse= new ResultNotifyResponse();

        CSPResult result = new CSPResult();
        result.setResult(0);

        String errorDescription = new String();
        errorDescription.setString("this is alistair.chow's web service");
        result.setErrorDescription(errorDescription);

        resultNotifyResponse.setResultNotifyReturn(result);

        return resultNotifyResponse;
    }
}

增加severlet配置:

@Configuration
public class AxisConfig {

    @Bean
    public ServletRegistrationBean axisServlet(){
        ServletRegistrationBean axisServlet = new ServletRegistrationBean();
        axisServlet.setServlet(new AxisServlet());
        axisServlet.addUrlMappings("/services/*");
        // 设置服务路径,主要用于读取生成的services.xml文件,注意这里的serviesPath为保持和resouse下文件名一致
        String path = this.getClass().getResource("/servicesPath").getPath();
        axisServlet.addInitParameter("axis2.repository.path", path);
        axisServlet.setLoadOnStartup(1);

        return axisServlet;
    }
}

执行run,查看服务是否能正常运行:
Springboot集成Axis2——通过wsdl生成webService

生成客户端代码

使用wsdl2java生成客户端代码,生成结果如下:
Springboot集成Axis2——通过wsdl生成webService
调整代码位置,并新建一个客户端测试类ServiceClient,用户向服务端测试发送请求:
Springboot集成Axis2——通过wsdl生成webService
代码如下:

public class CSPResponseServiceClient {

    public static void main(String[] args) throws Exception{
        CSPResponseServiceStub stub = new CSPResponseServiceStub();
        CSPResponseServiceStub.ResultNotify resultNotify = new CSPResponseServiceStub.ResultNotify();
        org.apache.axis2.databinding.types.soapencoding.String cspId = new org.apache.axis2.databinding.types.soapencoding.String();
        cspId.setString("a");
        resultNotify.setCSPID(cspId);
        CSPResponseServiceStub.ResultNotifyResponse notifyRespOnse= stub.resultNotify(resultNotify);
        System.out.println(notifyResponse.getResultNotifyReturn().getResult());
        System.out.println(notifyResponse.getResultNotifyReturn().getErrorDescription());
    }
}

执行该main方法,可以看到为服务端处理后的消息:
Springboot集成Axis2——通过wsdl生成webService


推荐阅读
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 1.创建目录mkdir-phomerocketmqnamesvr1data&&mkdir-phomerocketmqnamesvr1log&&mkdir-phomerocketm ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 在优化Nginx与PHP的高效配置过程中,许多教程提供的配置方法存在诸多问题或不良实践。本文将深入探讨这些常见错误,并详细介绍如何正确配置Nginx和PHP,以实现更高的性能和稳定性。我们将从Nginx配置文件的基本指令入手,逐步解析每个关键参数的最优设置,帮助读者理解其背后的原理和实际应用效果。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
author-avatar
风一样的男孩668
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有