当前位置: 首页 > news >正文

spring-创建Webservice服务

       Web service是一个平台独立的,松耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。webservice用的是soap协议。

       客户通过发送请求(大部分是 XML消息)来召唤 WebServices ,而服务则返回 XML 响应。WebServices 通过网络调用通信,
HTTP作为两个框架之间的网络公认的最广泛的方法。Web 服务等效于 SOA (面向服务的体系结构) ,并且从根本上依赖于度量,例如 XML-RPC和 SOAP (简单对象访问协议)。

      Java项目中可以使用注解 @WebService 注解,你可以将普通的 Java 类转换成可发布为 Web 服务的类。 @WebService 是 Java API for XML Web Services(JAX-WS)中的注解,用于标识一个类或接口作为一个可通过网络访问的 Web 服务。

@WebService注解

@WebService-定义服务,有以下配置项
    targetNamespace:指定命名空间,一般是接口的包名倒序
    name:portType的名称,客户端生成代码时 为接口名称
    portName:port的名称
    serviceName:服务名称
    endpointInterface:SEI接口地址,如果一个服务类实现了多个接口,只需要发布一个接口的方法,可通过此注解指定要发布服务的接口。 

        类上添加注解@WebService,则类中所有 非静态方法 都会被发布;静态方法和 final 方法不能被发布;方法上加@WebMentod(exclude=true)后,此方法不被发布

@WebMethod注解

@WebMethod-定义方法,在公开方法上边
    operationName:方法名
    exclude:设置为true表示此方法不是webservice方法,反之则表示webservice方法,默认是false 

@WebParam

@WebParam-定义参数,在方法参数前边
    name:指定参数的名称

@WebResult

@WebResult-定义返回值,在方法返回值前边
    name:返回结果值的名称 

首先先实现一个接口:

package com.zhong.test.webservice;import java.util.List;import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;@WebService(name = "WebServiceTest", targetNamespace = "http://server.webservice.example.com")
public interface WebServiceTest{@WebMethodString emrService(@WebParam(name = "name") String name,@WebParam(name = "info") String info);@WebMethodString student1111(@WebParam(name = "name") String name,@WebParam(name = "info) String info);@WebMethodString aboutstudent(@WebParam(name="student") Student student);@WebMethodString studentlist(List<Student> list1);
}

然后在想要实现的服务中实现接口:

package com.zhong.test.webservice;import java.util.List;import javax.jws.WebParam;
import javax.jws.WebService;import org.springframework.stereotype.Component;@Component
@WebService( targetNamespace = "http://server.webservice.example.com",endpointInterface = "com.zhong.test.webservice.WebServiceTest")
public class WebServicecTestImp implements WebServiceTest{@Overridepublic String emrService( String name,String info) {if(null == name|| "".equals(name.trim())){return "传入的参数为空";}return "name="+name+"@info="+info;}@Overridepublic String student1111(String name, String info) {return "name="+name+"@info="+info;}@Overridepublic String aboutstudent(Student student) {System.out.println(student==null);return "student.getName()="+student.getName();}@Overridepublic String studentlist(List<Student> list1) {return "list1.size()="+list1.size();}}

然后再配置文件中注入配置;

package com.zhong.test.webservice;import javax.xml.ws.Endpoint;import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBus;
import org.apache.cxf.jaxws.EndpointImpl;
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;@Configuration
public class WebServiceConfig {@Autowiredprivate WebServiceTest webServiceTest;/*** Apache CXF 核心架构是以BUS为核心,整合其他组件。* Bus是CXF的主干, 为共享资源提供一个可配置的场所,作用类似于Spring的ApplicationContext,这些共享资源包括* WSDl管理器、绑定工厂等。通过对BUS进行扩展,可以方便地容纳自己的资源,或者替换现有的资源。默认Bus实现基于Spring架构,* 通过依赖注入,在运行时将组件串联起来。BusFactory负责Bus的创建。默认的BusFactory是SpringBusFactory,对应于默认* 的Bus实现。在构造过程中,SpringBusFactory会搜索META-INF/cxf(包含在 CXF 的jar中)下的所有bean配置文件。* 根据这些配置文件构建一个ApplicationContext。开发者也可以提供自己的配置文件来定制Bus。* 非必要项*/@Bean(name = Bus.DEFAULT_BUS_ID)public SpringBus springBus() {return new SpringBus();}/***** 这里需要注意  由于springmvc 的核心类 为DispatcherServlet,此处若不重命名此bean的话 原本的mvc就被覆盖了。可查看配置类:DispatcherServletAutoConfiguration* 一种方法是修改方法名称 或者指定bean名称,* 这里需要注意 若beanName命名不是 cxfServletRegistration 时,会创建两个CXFServlet的。具体可查看下自动配置类:Declaration org.apache.cxf.spring.boot.autoconfigure.CxfAutoConfiguration** 也可以不设置此bean 直接通过再application中的配置项 cxf.path 来修改访问路径的* http://127.0.0.1:8080/soap/列出服务列表 或 http://127.0.0.1:8080/soap/ws/api?wsdl 查看实际的服务*/
@Bean("cxfServletRegistration")
public ServletRegistrationBean dispatcherServlet() {//注册servlet 拦截/ws 开头的请求 不设置 默认为:/services/*return new ServletRegistrationBean(new CXFServlet(), "/ws/*");
}@Beanpublic Endpoint endpoint() {EndpointImpl endpoint = new EndpointImpl(springBus(), webServiceTest);endpoint.publish("/ws/api");return endpoint;}
}

测试的时候也可以使用一下方式测试:

ublicstatic void main(String[] args) {  /*** 参数1:服务的发布地址* 参数2:服务的实现者*/ Endpoint.publish("http://192.168.24.138:456/helloWord",new WebServiceTestImpl()); }

       EndPoint是 jdk 提供的一个专门用于发布服务的类,该类的publish()方法接收两个参数,一个是本地的服务地址,二是提供服务的类。位于javax.xml.ws.Endpoint包中。

相关文章:

spring-创建Webservice服务

Web service是一个平台独立的&#xff0c;松耦合的&#xff0c;自包含的、基于可编程的web的应用程序&#xff0c;可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序&#xff0c;用于开发分布式的互操作的应用程序。webservice用的是soap协议。 客户通过发送请求…...

Maven系列第3篇:详解maven解决依赖问题

maven系列目标&#xff1a;从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第3篇。 我们先来回顾一下什么是maven&#xff1f; maven是apache软件基金会组织维护的一款自动化构件工具&#xff0c;专注服务于java平台的项目构件和依赖管理。 本文主要内容…...

读书笔记:多Transformer的双向编码器表示法(Bert)-4

多Transformer的双向编码器表示法 Bidirectional Encoder Representations from Transformers&#xff0c;即Bert&#xff1b; 第二部分 探索BERT变体 从本章开始的诸多内容&#xff0c;以理解为目标&#xff0c;着重关注对音频相关的支持&#xff08;如果有的话&#xff09;…...

Stable Diffusion XL搭建

本文参考&#xff1a;Stable Diffusion XL1.0正式发布了&#xff0c;赶紧来尝鲜吧-云海天教程 Stable Diffision最新模型SDXL 1.0使用全教程 - 知乎 1、SDXL与SD的区别 &#xff08;1&#xff09;分辨率得到了提升 原先使用SD生成图片&#xff0c;一般都是生成512*512&…...

面试题-React(十一):性能优化之PureComponent和memo

一、React性能优化的重要性 随着应用的复杂性增加&#xff0c;React组件的渲染可能成为性能瓶颈。频繁的渲染可能导致不必要的性能开销和卡顿。为了确保应用的高性能和流畅用户体验&#xff0c;我们需要采取一些措施来优化组件的渲染。 二、PureComponent-自动浅比较 PureCo…...

<图像处理> Fast角点检测

Fast角点检测 基本原理是使用圆周长为N个像素的圆来判定其圆心像素P是否为角点&#xff0c;如下图所示为圆周长为16个像素的圆&#xff08;半径为3&#xff09;&#xff1b;OpenCV还提供圆周长为12和8个像素的圆来检测角点。 相对中心像素的位置信息 //圆周长为16 static c…...

基于centos、alpine制作Java JDK基础镜像

文章目录 前言一、 简介二、制作JDK/Java基础镜像1.准备事项2.制作Dockerfile脚本2.1.基于centos作为基础镜像2.2.基于alpine作为基础镜像3.构建镜像4.测试验证前言 在日常开发中,但凡项目需要docker容器化部署,制作项目镜像前都需要在Dockerfile中配置Java基础镜像。为什么…...

【AI视野·今日Robot 机器人论文速览 第五十二期】Wed, 11 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Wed, 11 Oct 2023 Totally 31 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers RoboHive: A Unified Framework for Robot Learning Authors Vikash Kumar, Rutav Shah, Gaoyue Zhou, Vincent Moens, Vittor…...

hive 知识总结

​编辑 社区公告教程下载分享问答JD 登 录 注册 01 hive 介绍与安装 1 hive介绍与原理分析 Hive是一个基于Hadoop的开源数据仓库工具&#xff0c;用于存储和处理海量结构化数据。它是Facebook 2008年8月开源的一个数据仓库框架&#xff0c;提供了类似于SQL语法的HQL&#xf…...

golang/云原生/Docker/DevOps/K8S/持续 集成/分布式/etcd 教程

3-6个月帮助学员掌握golang后端开发岗位必备技术点 教程时长: 150小时 五大核心专栏,原理源码案例分析项目实战直击工作岗位 golang&#xff1a;解决go语言编程问题 工程组件&#xff1a;解决golang工程化问题 分布式中间件&#xff1a;解决技术栈单一及分布式开发问题 云原生…...

jeecg库login登录过程分析笔记

jeecg库&#xff08;版本jeecg-boot-v3.5.1last&#xff09;实现了用户登录功能&#xff0c;二开时为了借鉴jeecg用户登录的方法&#xff0c;跑了一遍登录方法&#xff1a; org.jeecg.modules.system.controller.LoginController#login 定义这个方法的类的路径是&#xff1a;…...

echarts仪表盘vue

<div class"ybptx" ref"btryzb"></div>mounted() {this.getBtData();},getBtData() {var chart this.$echarts.init(this.$refs.btryzb);var data_czzf 88;var option {series: [{name: 内层数据刻度,type: gauge,radius: 80%,min: 0,max: 1…...

管道和重定向分号-连接符

本文介绍shell脚本常用命令连接符&#xff1a;管道符( | )、重定向( < 、>、>>、2> 、&> )、分号( ; ) 本文内容同微信公众号【凡登】&#xff0c;关注不迷路&#xff0c;学习上高速&#xff0c;欢迎关注共同学习。 1、管道 进程的通信方式之一&#xf…...

WSL VScode连接文件后无法修改(修改报错)

权限问题 usrname:用户名 dirpath:要修改的文件夹路径 sudo chown -R usrname /dirpath...

迷你Ceph集群搭建(超低配设备)

我的博客原文链接&#xff1a;https://blog.gcc.ac.cn/post/2023/%E8%BF%B7%E4%BD%A0ceph%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BA/ 环境 机器列表&#xff1a; IP角色说明10.0.0.15osdARMv7&#xff0c;512M内存&#xff0c;32G存储&#xff0c;百兆网口10.0.0.16clientARM64…...

Python数据挖掘项目实战——自动售货机销售数据分析

摘要&#xff1a;本案例将主要结合自动售货机的实际情况&#xff0c;对销售的历史数据进行处理&#xff0c;利用pyecharts库、Matplotlib库进行可视化分析&#xff0c;并对未来4周商品的销售额进行预测&#xff0c;从而为企业制定相应的自动售货机市场需求分析及销售建议提供参…...

TortoiseGit使用教程

文章目录 一. 创建仓库二. Clone仓库三. 查看修改记录四. 版本回溯五. 创建分支六. 切换分支七. 合并分支八. 删除分支九. TortoiseGit配置1. 常规配置2. 配置远程仓库账户密码3. 配置远程仓库 一. 创建仓库 在需要创建仓库的文件上右键→Git Create repository here… 创建仓…...

如何测量GNSS信号和高斯噪声功率及载波比?

引言 本文将介绍如何测量德思特Safran GSG-7或GSG-8 GNSS模拟器的输出信号功率。此外&#xff0c;还展示了如何为此类测量正确配置德思特Safran Skydel仿真引擎以及如何设置射频设备&#xff0c;从而使用频谱分析仪准确测量信号的射频功率。 什么是载波噪声密度C/N0 GNSS接收…...

动态壁纸软件iWall mac中文特色

iWall for mac是一款动态壁纸软件&#xff0c;它可以使用任何格式的漂亮视频(无须转换)&#xff0c;音频(可视化功能)&#xff0c;图片&#xff0c;动画&#xff0c;Flash&#xff0c;gif&#xff0c;swf&#xff0c;程序&#xff0c;网页&#xff0c;网站做为您的动态壁纸&…...

xtrabackup全备 增备

版本针对mysql8.0版本 官方下载地址 https://www.percona.com/downloads 自行选择下载方式 yum安装方式 1、下载上传服务器 安装软件 [rootmaster mysql]# ll percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm -rw-r--r--. 1 root root 44541856 Oct 10 13:25 percona-x…...

【广州华锐互动】灭火器使用VR教学系统应用于高校消防演练有什么好处?

在科技发展的大潮中&#xff0c;虚拟现实&#xff08;VR&#xff09;技术以其独特的沉浸式体验赢得了各个领域的青睐&#xff0c;其中包括教育和培训。在高校消防演练中&#xff0c;VR也成为了一种新的消防教育方式。 由广州华锐互动开发的VR消防演练系统&#xff0c;就包含了校…...

Pymol做B因子图

分子动力学模拟结束后&#xff0c;获得蛋白的平均结构&#xff0c; 比如获得的平均结构为WT-average.pdb 然后将平均结构导入到Pymol 中&#xff0c;可以得到B因子图。 gmx rmsf -f md_0_100_noPBC.xtc -s md_0_100.tpr -o rmsf-per-residue.xvg -ox average.pdb -oq bfactors…...

EKF例程 matlab

% 不含IMU误差方程的EKF滤波典型程序&#xff0c;适用于多次滤波的第二级 % author:Evand % date: 2023-09-20 % Ver1 clear;clc;close all; global T %% initial T 0.1; %采样率 t [T:T:100]; Q 0.1diag([1,1,1]);wsqrt(Q)randn(size(Q,1),length(t)); R 1diag([1,1,1]);v…...

【C语言】atoi函数的模拟

atoi对于初学者来说大概率是一个陌生的函数 但不要害怕&#xff0c;我们可以通过各种网站去查询 例如&#xff1a; cplusplus就是一个很好的查询网站 目录 函数介绍模拟实现需要注意的点 函数介绍 我们发现这是一个将字符串转换为整形数字的函数 例如&#xff1a; int main()…...

JAXB 使用记录 bean转xml xml转bean 数组 继承 CDATA(转义问题)

JAXB 使用记录 部分内容引自 https://blog.csdn.net/gengzhy/article/details/127564536 基础介绍 JAXBContext类&#xff1a;是应用的入口&#xff0c;用于管理XML/Java绑定信息 Marshaller接口&#xff1a;将Java对象序列化为XML数据 Unmarshaller接口&#xff1a;将XML数…...

Linux Centos安装Sql Server数据库,结合cpolar内网穿透实现公网访问

目录 前言 1. 安装sql server 2. 局域网测试连接 3. 安装cpolar内网穿透 4. 将sqlserver映射到公网 5. 公网远程连接 6.固定连接公网地址 7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库&#xff0c;并结合cpolar内网穿透工具…...

Vulnhub系列靶机---Raven: 2

文章目录 信息收集主机发现端口扫描目录扫描用户枚举 漏洞发现漏洞利用UDF脚本MySQL提权SUID提权 靶机文档&#xff1a;Raven: 2 下载地址&#xff1a;Download (Mirror) 信息收集 靶机MAC地址&#xff1a;00:0C:29:15:7F:17 主机发现 sudo nmap -sn 192.168.8.0/24sudo arp…...

计算机视觉与深度学习 | 视觉惯性SLAM的基础理论

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 视觉惯性SLAM的基础理论 引言三维空间刚体的运动表示旋转矩阵(Rotatio…...

[电源选项]没有系统散热方式,没有被动散热选项

背景 笔记本的风扇声音太大&#xff0c;想改成被动散热方式&#xff0c;又不想影响性能。 于是我打开了控制面板\所有控制面板项\电源选项&#xff0c;点更改计划设置-> 更改高级电源设置。 想把散热方式改成被动散热。发现win11中好像没有这个选项了&#xff01; 如何…...

房产中介租房小程序系统开发搭建

随着移动互联网的发展&#xff0c;租房小程序已经成为许多房产中介公司转型线上的重要工具。通过租房小程序&#xff0c;房产中介公司可以方便地展示房源信息、吸引租户、达成交易。那么&#xff0c;如何通过乔拓云网开发租房小程序呢&#xff1f;下面是详细的开发指南。 1.进入…...