Webservice实践(五)基于CXF的服务端开发

Spring和CXF整合发布WebService(服务端、客户端) 目录 一、服务端 1、依赖 1.1 第一种方式 1.2 第二种方式 2、测试代码 3、配置文件 3.1 第一种配置方式 3.2 第二种配置方式 4、运行 二、生成客户端 第一种方式wsdl2java 第二种方式 wsimport 三、测试 工作上遇到了,所以自己琢磨了一下,也是第一次想到用博客来记录,平时也有用word文档记录,怕忘了。所以在这里来一个详细总结,那些关于... 阅读详情

本节将实践目前最流行的第二种web service 发布和调试框架  CXF

Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构。它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 Spring 的轻量级容器中,以及部署在更高级的服务器上。Java的webService实现本身就是一个很耗性能的实现方案(xml与java对象之间在服务端以及客户端的互转比较消耗性能),目前java主流的webService应用以CXF、AXIS2为主,CXF比AXIS2效率更高,并且在java 应用中CXF很成熟,因此CXF在webservice中占有非常重要的地位。

下面一张网络上的图比较好的说明了CXF 与web service的关系

           

下面将具体说说如何使用CXF 进行Webservice 开发。关于CXF的实践分2篇,第一篇通过注解发布webservice,利用cxf 进行客户端开发。 第二篇:通过spring与cxf 结合进行发布

一、实践目标

1、 webservice 发布服务

2、使用CXF 进行 客户端开发

二、环境准备

1、 myeclipse 

2、cxf 包

三、服务发布

1、首先在myeclipse中创建一个java web project

工程里面的实体类、DAO类就沿用上一篇中的类。 它们是Student.java   StudentDAO.java  StudentDAOImpl.java   StudentSimlationDB.java.

这里重点贴一下 StudentWs.java  和  StudentWsImpl.java.    StudentWs是暴露的接口类,也是web service 服务接口,  实现类是服务的实现。

整个工程的结构如下图:

下面列出 StudentWs.java  和  StudentWsImpl.java这两个类的源码,其他类源码见其他

StudentWs.java源码如下: 

package com.study.cxfws;

import javax.jws.WebParam;
import javax.jws.WebService;

//这个接口是用来暴露给外部的webservice类
//只提供接口是为了服务端便于扩展,增加灵活性
@WebService
public interface StudentWs {
	
	//暴露的接口 增加学生
	public boolean addStudent(@WebParam(name="name")String name, @WebParam(name="sex")String sex, @WebParam(name="birthday")String birthday);

	//暴露的接口查询学生
	public String queryStudent(@WebParam(name="studentName")String studentName) ;

}

 StudentWsImpl.java源码如下:

package com.study.cxfws.impl;

import com.study.cxfws.StudentWs;
import com.study.dao.StudentDAO;
import com.study.dao.impl.StudentDAOImpl;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService(endpointInterface="com.study.cxfws.StudentWs",serviceName="StudentWs")
public class StudentWsImpl implements  StudentWs {
	
	//Student的dao 类,负责处理student 实体类的操作
	private StudentDAO studentDAO;
	
	public  StudentWsImpl(){
		studentDAO = new StudentDAOImpl();
	}

	public boolean addStudent(String name, String sex, String birthday) {
		// 调用studentDAO.addStudent 方法入库
		System.out.println("Now put student into DB!");
		studentDAO.addStudent(name, sex, birthday);
		return true;

	}

	public String queryStudent(String studentName) {
		System.out.println("StudentWsImpl queryStudent->"+studentName);
		Object tmp = studentDAO.queryStudent(studentName);
		if (tmp== null) {
			return "null";
		} else {
			return tmp.toString();
		}

	}

	public static void main(String[] args) {
		 
		 System.out.println("web service start");
		 StudentWsImpl studentWs= new StudentWsImpl();
                 String address="http://localhost:8080/StudentWs?wsdl";
         
                 Endpoint.publish(address, studentWs);
                 System.out.println("web service started");
		 
	}


}

在整个工程上,选中 StudentWsImpl.java 右键运行,url:http://localhost:8080/StudentWs


点击wsdl链接可以看到接口说明wsdl文档


                                                       

好了,简单的服务端就写到这里。(注: 实质上这里是利用java ws 发布服务端)

四、CXF 客户端编写

1、下载cxf工具

可以从下面URL下载cxf, http://cxf.apache.org/download.html, 将下载的apache-cxf-3.1.10.zip 保存到本地,并解压。

        2、利用cxf的工具 wsdl2java 将 服务端发布的wsdl 进行编译转换为java

这些是使用cxf 里面的工具wsdl2java  生成的java类。在命令行执行下面命令,就可以生成这些类

E:\cwqwork\myeclipse_workspace\StudyWSCxfStudentCli\src>F:\lib\cxf\apache-cxf-3.1.10\bin\wsdl2java http://localhost:8080/StudentWs?wsdl

3、编写client端类

package com.study.cxfws.client;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;  
import com.study.cxfws.StudentWs;  
  
public class StudentWsClient {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
          
        //首先右键run as 运行com.hsy.server.webServiceApp类,然后再运行这段客户端代码  
        JaxWsProxyFactoryBean jwpfb = new JaxWsProxyFactoryBean();  
        jwpfb.setServiceClass(StudentWs.class);  
        jwpfb.setAddress("http://localhost:8080/StudentWs");  
        StudentWs   ws = (StudentWs) jwpfb.create();  
        
        ws.addStudent("Tom", "male", "19780618");
        ws.addStudent("Jerry", "female", "19800323");
        
        System.out.println( ws.queryStudent("Tom") );  
        System.out.println( ws.queryStudent("Jerry") );  
          
    }  
  
}  

4、为客户端加上cxf需要的jar包,否则运行会报错误

5、在StudentWsClient.java 右键run as -》java application

执行结果如下:

五、服务端修改发布方式:用cxf 框架 替换 javax ws 方式

前面的服务端,我们可以看到是采用 java ws方式,也就是说并没有用到cxf框架,下面说明一下如何用cxf 发布。

1、修改服务端 StudentWsImpl.java

源码如下:

package com.study.cxfws.impl;

import javax.jws.WebService;

import com.study.cxfws.StudentWs;
import com.study.dao.StudentDAO;
import com.study.dao.impl.StudentDAOImpl;

import org.apache.cxf.endpoint.Server;  
import org.apache.cxf.jaxws.JaxWsServerFactoryBean; 

@WebService  
public class StudentWsImpl implements  StudentWs {
	
	//Student的dao 类,负责处理student 实体类的操作
	private StudentDAO studentDAO;
	
	public  StudentWsImpl(){
		studentDAO = new StudentDAOImpl();
	}

	public boolean addStudent(String name, String sex, String birthday) {
		// 调用studentDAO.addStudent 方法入库
		System.out.println("Now put student into DB!");
		studentDAO.addStudent(name, sex, birthday);
		return true;

	}

	public String queryStudent(String studentName) {
		System.out.println("StudentWsImpl queryStudent->"+studentName);
		Object tmp = studentDAO.queryStudent(studentName);
		if (tmp== null) {
			return "null";
		} else {
			return tmp.toString();
		}

	}

	public static void main(String[] args) {

  	      System.out.println("web service start");
	        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();  
	        //这里必须传入class,不能是接口,否则客户端会报异常 Could not instantiate service class ... because it is an interface
	        factory.setServiceClass(StudentWsImpl.class);  
	        factory.setAddress("http://localhost:8080/StudentWs");  
	          
	        Server server = factory.create();  
	        server.start();  
	        System.out.println("web service started");
	
	}


}
2、服务端通过run as 运行起来后,重新执行wsdl2java 命令,生成客户端需要的java

3、在StudentWsClient.java 上运行客户端,得到的效果与前面一致。说明用CXF发布服务端也是OK的。




SpringBoot 集成CXF开发WebService 参考文章传送门:https://www.dexcoder.com/selfly/article/4593 Apache CXF 介绍 Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTf... 阅读详情

相关推荐

基于Apache CXF的WebService服务端与客户端开发实战

Apache CXF 是当前 Java 领域中最成熟、功能最全面的 WebService 框架之一,广泛应用于企业级服务集成场景。它不仅支持标准的 SOAP/WSDL 协议栈,还提供了对 RESTful 服务、JAX-WS、JAX-RS 等多种编程模型的良好支持。其模块化设计和高度可扩展性使其成为构建高可用、高性能分布式系统的首选工具链。

weixin_36364707的博客 1037

cxf根据wsdl生成webserivice服务端

1.根据wsdl文件生成相关代码 wsdl2java用法:  wsdl2java -p com -d src -all  aa.wsdl  -p  生成代码的包名:  -d  指定要产生代码所在目录  -client 生成web service客户端代码  -server 生成web  service服务器代码  -impl 生成web service

yecong111的专栏 9596

CXF-SOAP WebService服务端搭建实战教程

Maven的强大之处在于它的插件系统,通过使用插件,可以执行广泛的构建任务。以下是一些常用的Maven插件:: 编译项目的源代码。: 执行测试。: 创建一个JAR文件。: 部署项目到远程仓库。每个插件都有默认的行为,但是通常需要对其进行配置以满足特定需求。简单对象访问协议(Simple Object Access Protocol, SOAP)是一种基于XML的协议,用于在分布式环境中交换信息。

weixin_33245447的博客 742

cxf反向根据.net wsdl内容生成服务器端代码

cxf 3.5根据低版本.net web service wsdl生成服务端代码

程序员记事本 831

根据wsdl生成webservice服务端(3种方式)

详细介绍3种方法根据wsdl逆向生成webservice服务端;有最原始的wsdl2java指令,还有通过soapUI工具以及通过myeclipse的web service project来生成。

《玩儿起来吧》MATLAB 实时图像处理系列(一二三四)

大家学了图像处理之后,是不是就想学以致用。而要用于生活中,最好的方式就是和摄像头搭配,实现实时图像处理。今天就给大家分享MATLAB实时图像处理的基础方法,希望能帮你快速入门。

HPC_ZY 1万+

CXF 根据WSDL生成客户端服务器端代码

根据wsdl生成客户端服务端代码

Cnc2014的博客 3243

DDR5内存Training全解析:从信号完整性到CS训练模式的实战指南

本文深入解析了DDR5内存Training的全过程,从信号完整性挑战到CS训练模式(CSTM)的实战应用。文章详细阐述了Training在DDR5高频时代的关键作用,对比了In-Band与OOB两种架构,并拆解了Intel MRC的核心训练步骤,为硬件与固件工程师提供了诊断与优化系统稳定性的实用指南。

weixin_29252171的博客 1031

java cxf服务端代码_webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成...

首先到CXF官网及spring官网下载相关jar架包,这个不多说。webservice是干嘛用的也不多说。入门例子模拟新增一个用户,并返回新增结果,成功还是失败。大概的目录如上,很简单。ResultInfo.javapackagecom.fei.webservice.user.bean;importjava.text.MessageFormat;importjavax.xml.bind.an...

weixin_39524574的博客 506

保姆级避坑指南:在Ubuntu 18.04上搞定速腾Helios雷达驱动与fast-LIO2的完整配置流程

本文提供了一份详细的速腾Helios雷达与fast-LIO2在Ubuntu 18.04上的配置避坑指南,涵盖驱动安装、数据格式转换到建图全流程。特别针对常见编译错误和数据转换问题提供了解决方案,帮助开发者高效完成环境搭建与建图任务。

weixin_27252001的博客 113

LSCM最小二乘保角参数化

LSCM最小二乘保角参数化 最小二乘思想 已知一组点的数据(x,y) x x1x_1x1​ x2x_2x2​ x3x_3x3​ … xnx_nxn​ y y1y_1y1​ y2y_2y2​ y3y_3y3​ … yny_nyn​ 可以近似为线性关系 y=ax+by=ax+by=ax+b ,目标为确定常数 aaa , bbb ; 解法:找到 aaa , bbb ,使得所有 yiy_iyi​ 与 axi+bax_i+baxi​+b 偏差的平方和 Q=∑i=1n(yi−axi−b)2 Q=\s

weixin_49732532的博客 4252

cxf动态构建webservice

title: cxf动态构建webservice date: 2020-06-11 09:58:55 tags: [cxf,webservice,xml/http] categories:平台需要提供一个可配置的webservice接口,用于其他服务的远程调用,并且可以依照项目不同的业务意义自定义webservice接口的上下文。本文主要描述如何通过cxf动态构建webservice接口。 维基百科上基于web服务的体系结构流程: 大概的流程图:Web Service也叫XML Web Service We

qq_40224163的博客 1061

ArcMap学习笔记(三)地图数字化

地图数字化前言地图数字化实现步骤1.加载地形图2.新建要素图层3.开启编辑环境4.设置捕捉环境5.选择数字化图层6.数字化控制点7.数字化等高线8.数字化图幅边框9.保存数字化成果总结 前言 使用软件:ArcMap10.4.1中文版 如果出现侵权,请在评论留言,我会及时删除,谢谢。 地图数字化 空间数据采集(输入)是将现有的地图、外业观测成果、航空像片、遥感图片数据、文本资料等转换成GIS可以直接...

JayWang博客 1万+

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

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

qq_42109746的博客 2687

DIC新手避坑指南:压缩实验中的应变测量常见错误与数据校验技巧

本文为DIC技术新手提供了压缩实验中应变测量的全面避坑指南。文章系统梳理了从试样尺寸录入、散斑质量到数据后处理中应变方向与符号混淆、数据插值对齐等常见错误,并分享了基于MATLAB的自动化数据校验与可视化对比技巧,帮助建立可靠的实验数据分析SOP,确保DIC测量结果的准确性。

weixin_29313423的博客 113

OpenClaw部署太难?汉化版+中文社区+国产替代品,国内用户零门槛指南

OpenClaw作为GitHub 10万+星的开源AI助手平台,近期在国内AI圈备受关注 🌟 但部署难度和英文界面让很多用户望而却步。本文整理了针对国内用户的友好资源和简便替代方案,帮助国内用户零门槛上手AI助手工具 🚀

XiaoqiangClub的博客 5758

基于CXF框架下的SOAP Webservice服务端接口开发

最近对webservice 进行入门学习,网上也是找了很多的学习资料。总得感觉就是这了解点,那了解点。感觉不够系统,不够容易入门。差不多断断续续看了一个星期了,今天小有成果,把客户端,服务端都搞定了。我先写服务端,在说客户端。 框架:服务端webservice是spring+cxf的maven工程。 环境:jdk1.7+maven3.3.9+tomcat7 新建maven工程可

万米高空的博客 1万+

Dify 实战:使用 Firecrawl 插件高效爬取微信公众号文章

本文介绍了如何利用Dify平台和Firecrawl插件构建微信公众号文章自动化采集系统。Dify作为开源LLM应用开发平台,结合Firecrawl的智能网页爬取能力,可轻松实现文章爬取、清洗和结构化存储。文章详细讲解了环境部署、插件安装以及工作流创建过程,通过可视化节点操作即可完成从URL输入到Markdown格式输出的全流程。该方案无需复杂代码,能有效解决反爬、动态渲染等问题,适用于知识库构建、模型训练等场景,显著提升开发效率。

SmartSi 1826

【WebService开发】之使用CXF开发WebService

1.开发服务端 a) 下载CXF:apache-cxf-3.1.6 b) 把cxf的jar包加入到项目中,其它不需要改变(同JDK开发webservice一样),webservice服务端开发完成。 2.开发客户端 a) 加入环境变量path中,E:\apache-cxf-3.1.6\bin b) 在cmd命令下生成客户代码,命令为:wsdl2java url,该命令为cxf的bin目录

北风 957

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

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

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

WebService-CXF

WebService-CXF 注:如果只想开发一个简单的WebService,蓝色标注的文字可以不看。 红色字体是需要注意的地方。   简介:Apache CXF  ==  Celtix + Xfire, CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持. CXF 既支持 WSDL 优先开发,也支持从 Java 的代码优先开发模式。容易

单眼皮的猫 4733

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Apache CXF WebService 框架

WebService、JAX-WS、JAX-RS、Apache-CXF

hzz19943305823的博客 1792

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

使用cxf发布webservice接口,以及调用webservice接口

一、cxf发布webservice接口 添加maven依赖 <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.4.3</version> </dependency> <de

qq_20161461的博客 1万+

CXF开发webservice

现在常用的开发webservice接口的方式有两种,一种是CXF 一种是Axis       下面用CXF开发一个webservice接口      Apache CXF 下载地址:http://www.apache.org/dyn/closer.lua/cxf/3.1.6/apache-cxf-3.1.6.zip       引入CXF的jar包 lib中的  编写服务端

zml19910925的博客 797

WebService与CXF

标题WebService简介 Webservice也叫XML Web Service,Web服务。可使用开放的xml标准来描述、发布、发现、协调和配置这些应用程序。用于开发分布式的互操作的应用程序。是一种跨编程语言、跨操作系统、跨网络的远程服务器调用技术。 WebService,顾名思义就是基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用. 我们可以调...

欢迎大家互相交流分享 1678

WebService框架——CXF介绍

1. WebService与CXF简介 1.1WebService WebService是一种跨编程语言和跨操作系统平台的远程调用技术。 跨编程语言和跨操作平台 就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。 远程调用 就是一台计算机a上的...

武汉小喽啰 2255

Springboot 基于CXF构建WebService服务

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

蜀道难,难于上青天。 2158
上一篇: Webservice实践(四)基于AXIS2的服务端开发
下一篇: Webservice实践(六)CXF拦截器简介
虎纠卫
博客等级 码龄24年 440粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值