springboot整合CXF发布webService和动态调用

SpringBoot整合CXF Webservice + 源码(1) WebService(name = “CommonService”, // 暴露服务名称targetNamespace = “http://webservice.lli.com/”// 命名空间,一般是接口的包名倒序@WebMethod@WebMethod创建一个接口,定义两个接口方法,分别用来返回不同的信息,实际中根据具体需求来定义接口方法以及参数。注解:表明该接口是个 WebService 服务,name 属性用来定义该 webservice 服务名称; 阅读详情

不说闲话,直接附上所有源码。

1.pom文件引入jar包

         <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.1.12</version>
        </dependency>

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>3.1.12</version>
        </dependency>

2.项目目录结构

3.接口ISayHello

package com.example.cxfdemo.service;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

/**
 * @Description TODO
 * @Author wuqingyan
 * Date 2019/5/17 10:19
 * Modify Log
 **/
@WebService(targetNamespace = "http://service.cxfdemo.example.com")
public interface IHello {

    @WebMethod
    public @WebResult String sayHello(@WebParam(name = "userName") String userName);
}

4.实现类SayHelloImpl

package com.example.cxfdemo.serviceimpl;

import com.example.cxfdemo.service.IHello;
import org.springframework.stereotype.Component;

import javax.jws.WebService;

/**
 * @Description TODO
 * @Author wuqingyan
 * Date 2019/5/17 10:22
 * Modify Log
 **/

@Component
@WebService(serviceName="helloService",  //【对外发布的服务名 】:需要见名知意
        targetNamespace="http://service.cxfdemo.example.com", //【名称空间】:要跟接口的保持一致
        endpointInterface = "com.example.cxfdemo.service.IHello") //【服务接口全路径】
public class HelloImpl implements IHello {

    @Override
    public String sayHello(String userName) {
        System.out.println("hello!"+userName);
        return "hello!"+userName;
    }
}

 5.配置类CxfConfig

package com.example.cxfdemo;

import com.example.cxfdemo.serviceimpl.HelloImpl;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBus;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.xml.ws.Endpoint;

/**
 * @Description TODO
 * @Author wuqingyan
 * Date 2019/5/17 10:29
 * Modify Log
 **/
@Configuration
public class CxfConfig {

    @Autowired
    private HelloImpl hello;
    //注意这个方法名 网上好多用dispatcherServlet启动会报错
    @Bean
    public ServletRegistrationBean getDispatcherServlet() { 
        return new ServletRegistrationBean(new CXFServlet(), "/cxf/*");// 发布服务名称 localhost:8080/cxf
    }
    @Bean(name = Bus.DEFAULT_BUS_ID)
    public SpringBus springBus() {
        return new SpringBus();
    }
    @Bean
    public Endpoint hello() {
        // 绑定要发布的服务实现类
        EndpointImpl endpoint = new EndpointImpl(springBus(),hello);
        endpoint.publish("/hello"); // 接口访问地址
        return endpoint;
    }

}

6.启动成功截图

 

7.客户端调用类CxfClient

package com.example.cxfdemo.client;

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

/**
 * @Description TODO
 * @Author wuqingyan
 * Date 2019/5/17 11:09
 * Modify Log
 **/
public class CxfClient {
    public static void main(String[] args) {
        // 创建动态客户端
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        Client client = dcf.createClient("http://127.0.0.1:8090/cxf/hello?wsdl");
        // 需要密码的情况需要加上用户名和密码
        // client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME, PASS_WORD));
        Object[] objects = new Object[0];
        try {
            // invoke("方法名",参数1,参数2,参数3....);
            objects = client.invoke("sayHello", "周杰伦");
            System.out.println("返回数据:" + objects[0]);
        } catch (java.lang.Exception e) {
            e.printStackTrace();
        }
    }
}

8.调用成功截图

 

 以上是所有步骤和源码,欢迎参考。

【WebService】springboot整合cxf实现webService远程调用 一、前言        在做接口对接的时候需要接口以HTTPS和WebService的形式暴露,虽然最近这几年restful非常火爆,但在一些特定的领域或者一些老旧系统中仍然采用WebService的形式来实现远程通信。       上一篇博客讲了WebService实现远程调用,在博文的最后,自己阐述了关于那种客户端调用存在的问题,如大家有疑问,欢迎留言区指正。二、实现       废话上一篇博... 阅读详情

相关推荐

Springboot整合cxf-ws发布webservice和restful接口

Springboot整合cxf-ws 一、SOAP接口开发 1、发布webservice接口 1.1、依赖 1.2、编写接口和实现类 1.3、配置类 1.4、测试 2、 调用webservice接口 2.1、解析地址 2.2、使用hutool工具调用 2.3、解析xml 二、 Restful接口开发 1、发布restful接口 1.1、依赖 1.2、编写接口和实现类 1.3、配置类 1.4、测试 ...

csweldn520的专栏 3337

SpringBoot集成CXF

Server端项目结构、Server端pom.xml、Server端实体类、Server端接口、Server端接口实现、Map类型返回值适配器、Server端自定义拦截器(调用接口方法前执行)、Server端配置类、Server端application.yml、启动Server端、Client端自动生成、Client端pom.xml、Client端自定义拦截器(发送SOAP消息时调用)、Client端测试类、彩蛋............

tongxin_tongmeng的博客 4401

springBoot完整整合WebService框架CXF示例

完整可用的spring整合CXF示例项目,包括服务发布端和调用端两个项目,包括CXF拦截器的实现的简单的授权校验

Spring Boot + CXF实践

Spring Boot + CXF实践

wsdhla的专栏 5904

用化学方法nmp溶剂从佳能cmos传感器上剥离拜耳矩阵和微透镜

将光刻胶暴露于 NMP 溶剂中 10-15 分钟,并进行轻微的机械搅拌,将溶解的光刻胶从基材表面带走,即可去除大部分光刻胶,之后再进行第二次溶剂浴,以洗去微量含有光刻胶的溶剂。我还担心传感器的校准问题,我觉得可以大致解决这个问题,比如在安装面上用刻度尺标记三个螺丝的位置,然后数着拧出螺丝的圈数,直到听到“咔哒”声(螺纹完全拧出)。我还担心传感器的校准问题,我觉得可以大致解决这个问题,比如在安装面上用刻度尺标记三个螺丝的位置,然后数着拧出螺丝的圈数,直到听到“咔哒”声(螺纹完全拧出)。在我看来,这是必读的;

qq_40247880的博客 1473

ARM CMSIS DAP源码分析(二)

今天分析的是RDDI_DAP_GetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)和RDDI_DAP_SetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)这两个函数。 以RDDI_DAP_GetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)为例,代码如下:

pengxiao618的专栏 7977

Springboot 基于CXF构建WebService服务

前言 最近因为系统需要接入了一个新的支付通道,一般来说都是使用RestApi 来接入,但是本次接入的支付通道为境外支付,使用的WebService,对于WS我们在实际业务中基本上不会用到,所以查阅了一些资料,记录一下自己项目中使用的WS。 WebService概述 什么是WebService Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,

蜀道难,难于上青天。 2158

博科的SAN交换机基本操作

2、添加用户testuser赋予user权限可以访问1-128VF默认VF为128账号描述"Test user"密码为password123。1、创建zone别名(100是指当前设备Domain ID,1和2是指对应的index号)2,删除新接入设备的ZONE或保持ZONE配置一致。3、将zone添加到当前生效的CFG中。2、将zone添加到当前生效的CFG中。3、将zone添加到当前生效的CFG中。3,将添加的级联端口持续关闭。4、将当前zone生效。4、将当前zone生效。1、查看当前所有用户。

chenjunokok的博客 1837

springboot集成cxf

springboot集成cxf实现webservice服务发布

weixin_42304484的博客 2548

为什么桥式传感器(Bridge Sensor)需要用到仪表放大器?

仪表放大器在桥式传感器的应用里起到关键作用,本文介绍桥式传感器的原理、特性,以及信号调理过程,并附上了一个 TINA - TI 的仿真电路。

疯狂的运放 1527

Conda报错急救指南:遇到Malformed version string ‘~‘怎么办?(附最新解决方案)

本文深度解析Conda报错`Malformed version string '~'`的根源与解决方案。该错误通常由版本字符串解析异常或Conda版本过旧引起。文章提供了从清理缓存、针对性升级到环境重建的完整修复流程,并强调了升级Conda至最新版本是解决此类`CondaValueError`问题的根本方法,帮助开发者高效恢复工作环境。

weixin_28835789的博客 646

SpringBoot整合CXF发布WebService接口,及动态调用(用户名和密码验证)

服务端继承AbstractPhaseInterceptor<T>,来实现AuthInterceptor的权限控制功能

SuperSunnyBoy的博客 7869

告别臃肿VS!仅用Visual Studio 2022 Build Tools为Qt 5.12.12配置MSVC2017开发环境

本文详细介绍了如何仅使用Visual Studio 2022 Build Tools为Qt 5.12.12配置MSVC2017开发环境,避免安装臃肿的完整VS。通过精准选择组件、配置Qt Creator编译器和优化Kit设置,实现高效、精简的Windows平台Qt开发环境搭建,特别适合追求性能和资源优化的开发者。

weixin_30340617的博客 349

SpringBoot中整合使用WebService

我使用的SpringBoot的版本为 2.0.3.RELEASE 首先pom.xml文件中加入WebService的相关依赖: &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-spring-boot-starter-jaxws&lt;/arti...

小夜丶凝眸的博客 7212

k8s中pod使用详解

k8s中Pod使用

congge 1万+

ADS基础教程12 - 参数扫描

在硬件设计、仿真以及调试阶段,很多时候需要找到一个合理的参数来使设计处于最优状态。前面所讲的调优方式是其中的最直接的手段。因此,本文将介绍ADS中如何指定元器件的参数为变量,并可以对变量设置相应的约束条件,来实现的变量进行多组参数的仿真结果的展示。在图形显示界面,添加一个Plot,并添加参数结果。此时,结果中会显示出所有的扫描结果。参数扫描的要素包含:新建变量、变量参数设置、扫描模型设置三个方面。如果找不到该图标,在菜单栏单击右键,弹出的对话框将。,弹出的选项卡中,将添加两个变量。点击菜单栏的仿真按钮。

XZ_ZC的博客 8157

SpringBoot整合cxf发布webService和客户端的调用

SpringBoot整合cxf发布webService 1. 看看项目结构图 2. cxf的pom依赖 1 <dependency> 2 <groupId>org.apache.cxf</groupId> 3 <artifactId>cxf-spring-boot-starter-jaxws</artif...

weixin_30386713的博客 114

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringBoot使用CXF集成WebService服务

SpringBoot2.2.1整合Webservice服务提供方服务调用方 服务提供方 引入依赖 <!-- cxf框架依赖 --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <v

Li_jiaqi_7的博客 530

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

springboot整合CXF发布webservice和客户端调用

springboot整合CXF发布webservice和客户端调用 项目使用springboot,首先附上项目结构 下面是pom中添加cxf支持: &lt;dependency&gt; &lt;groupId&gt;org.apache.cxf&lt;/groupId&gt; &lt;artifactId&gt;cxf-spring-b...

maple_fix的博客 3万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SpringBoot整合CXF,实现Restful api 与 WebService api dao层使用Mybatis

1、本demo目的查询学生信息【为了方便没有写批量查询,也就是说以下getAllStudents也是一个一个查询【而且没有测试该方法正确性,之所以写只是为了规范,返回Student的集合Students也是一个独立的实体,非必需,请忽略】2、主要是网上好多不全,整合的时候各种坑,我就记录一下。一、老规矩,先搞个数据库命名demo【可自己修改】/* Navicat MySQL Data Transf...

梦境迷离 2万+

Springboot整合cxf进行WebService发布和WebService调用

targetNamespace = “http://service.nobody.com”, // 与接口中的命名空间一致,一般是接口的包名倒。targetNamespace = “http://service.nobody.com” // 命名空间,一般是接口的包名倒序。它提倡着 纯函数 / 函数复合 / 数据不可变, 谨慎对待函数内的 状态共享 / 依赖外部 / 副作用;函数式编程其实是一种编程思想,它追求更细的粒度,将应用拆分成一组组极小的单元函数,组合调用操作数据流;

m0_61408947的博客 1618

SpringBoot整合cxf发布WebService服务和客户端调用WebService服务

SpringBoot整合cxf发布WebService服务和客户端调用WebService服务 参考了 https://blog.youkuaiyun.com/wangyuanjun008/article/details/79121687 自己测试过程中有些问题 做个记录 SpringBoot(spring整合cxf需添加cxf-rt-frontend-jaxws,cxf-rt-transports-h...

qq_41235865的博客 2213

Spring Boot整合CXF发布、调用WebService接口

一、webservice 的概念 Web是使应用程序可以与平台和编程语言无关的方式进行相互通信的一项技术。Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作。它使用基于 XML 语言的协议来描述要执行的操作或者要与另一个 Web 服务交换的数据。一组以这种方式交互的 Web 服务在面向服务的体系结构(Service-Oriented Architecture,SOA)中定义了特殊的 Web 服务应用程序。 简单的说WebService是一个SOA(面向服务的编.

真是适合睡觉的天气 6972

SpringBoot整合CXF框架实现Webservice服务端

1、前言 近期接手一个10多年的老项目,敲重点,10多年!!!就是最纯粹的servlet技术,貌似是从2008年运维到现在,老项目终究会有被淘汰的这一天,这不,到我接手的时候,我就是那接手的最后一个人,由我来开发数据迁移接口,通过Webservice接口调用的方式,把数据传输到新系统。没办法,只能忍住寂寞好好研究这坨代码。说来也是奇葩,这坨代码在一几年的时候,居然引入了Spring,导致这坨代码无敌臃肿,servlet和Spring共存,本身还引入了很古老的EJB框架,我直接当场头大。踩完了一个一个坑之后

qq_42109746的博客 2687

SpringBoot整合WebService

WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。其实WebService并不是什么神秘的东西,它就是一个可以远程调用的类,或者说是组件,把你本地的功能开放出去共别人调用。具体的说,Web Service可以让你的网站使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。

林知屿的博客 3744
上一篇: java的动态代理机制详解
下一篇: Request header is too large
justdoit_potato
博客等级 码龄11年 44粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值