使用Spring WS 2.0开发基于SOAP的web service

Spring Boot调用SOAP Web Service Spring Boot项目中,调用遗留的SOAP Web Service,方法很简单,仅需引入spring-boot-starter-web-services。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte... 阅读详情
经过1年的开发之后,SpringWeb service项目最近发布了一个新的主要版本Spring WS 2.0。这个版本要求使用它的工程使用的是Java 5或以上版本及Spring 3.0或以上版本。但是升级到Spring WS 2.0是十分值得的,因为Spring WS 2.0为Java开发者提供了很多好处。

    Spring WS 2.0中的新特性包括:

  • 升级后的更加灵活的@EndPoint编程模型
  • 新的集成测试框架,提供对服务器端和客户端的测试。
  • Java 5 API(泛型,可变数目参数)等

    Spring WS是Springportfolio其中一个项目,可以用来开发基于Spring的、面向文档的SOAP Web service。和其他的Java SOAP开发工具不过的是,Spring WS只支持约定优先的Web service开发风格。Spring WS关注与XML消息,并且它不是代码生成器(处理从XSD动态生成WSDL之外)。

    在过去的几周,我正在学习SpringWS 2.0,本文中我将分享我的一点经验,向大家介绍怎样使用Spring WS 2.0创建一个简单的SOAP Web service。


创建一个新的Spring WS 2.0工程

    使用Maven原型,很容易就可以创建一个新的Spring WS工程。如果你的机器上安装了Maven 2,只需要执行以下的命令:

  1. mvn archetype:create-DarchetypeGroupId=org.springframework.ws-DarchetypeArtifactId=spring-ws-archetype -DarchetypeVersion=2.0.0.RELEASE-DgroupId=com.shekhar.usermanagement -DartifactId=profileService
复制代码
    这个命令会创建一个基于Maven2的Spring WS工程,带有所有需要的配置。除了pom.xml之外,原型还会创建spring-ws-servlet.xml和web.xml文件。Web.xml文件是标准的Web应用程序布署描述符,这个文件中将所有的输入请求都映射到MessageDispatcherServlet。Spring-ws-servlet.xml文件包含所有的Spring-WS相关的bean,例如endpoints,WebServiceMessageReceivers,拦截器等等。这个文件的名字是web.xml文件中定义的servlet的名字后面加上-servlet.xml。在web.xml文件中servlet的名字是spring-ws,因此这个XML文件的名字叫做spring-ws-servlet.xml。


Spring WS 2.0中的新特性

    本节将介绍Spring WS2.0中最值得一提的新特性。


注解驱动的Endpoint模型

    第一个新特性是在spring-ws-servlet.xml文件中只需要一行配置。这一行配置(下面会显示)配置了注解驱动的Spring WS endpoint模型。因此在Spring WS 2.0中,不需要在spring-ws-context.xml文件中定义任何的bean来配置@Endpoing编程模型。

    作为例子,让我们编写一个简单的基于SOAP的web service,该webservice会创建用户信息。由于Spring WS遵从约定优先的开发风格,我们应该首先编写XML约定。我们的web service的XML schema定义如下:

  1. <?xmlversion="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  3.     elementFormDefault="qualified"targetNamespace="http://shekhar.com/usermanagement/schemas"
  4.     xmlns:schemas="http://shekhar.com/usermanagement/schemas">
  5.     <xs:element name="UserProfileCreateRequest">
  6.         <xs:complexType>
  7.             <xs:sequence>
  8.                 <xs:elementname="UserProfile" type="schemas:UserProfile" />
  9.             </xs:sequence>
  10.         </xs:complexType>
  11.     </xs:element>

  12.     <xs:complexTypename="UserProfile">
  13.         <xs:sequence>
  14.             <xs:elementname="firstName" type="xs:string" />
  15.             <xs:elementname="lastName" type="xs:string" />
  16.             <xs:elementname="age" type="xs:integer" />
  17.         </xs:sequence>
  18.     </xs:complexType>

  19.     <xs:elementname="UserProfileCreateResponse">
  20.         <xs:complexType>
  21.             <xs:sequence>
  22.                 <xs:elementname="message" type="xs:string" />
  23.             </xs:sequence>
  24.         </xs:complexType>
  25.     </xs:element>
  26. </xs:schema>
复制代码

使用sws:dynamic-wsdl来自动生成WSDL

    Spring WS让我们可以选择从XSD动态生成WSDL。在2.0版之前,我们必须在context文件中定义一个bean来动态生成WSDL。在SpringWS 2.0中,我们可以通过使用<sws:dynamic-wsdl>标签来动态生成WSDL。

  1. <sws:dynamic-wsdlid="profile" portTypeName="UserManagement"locationUri="/profileService"   targetNamespace="http://shekhar.com/usermanagement/schemas">
  2. <sws:xsdlocation="/WEB-INF/userManagement.xsd"/>
  3. </sws:dynamic-wsdl>
复制代码
    我们也可以使用这个标签来发表已经存在的WSDL。如果我们将这个应用程序布署在如Jetty或Tomcat的服务器上,就可以在http://localhost:8080/profileService/profile.wsdl处看到该文件。


升级了的、更加灵活的@Endpoint模型

    现在我们已经生成了约定(也就是WSDL),但是还没有编写会在服务器端被调用的代码。在Spring WS中,我们要编写endpoint来处理输入的XML消息。一个endpoint就是一个使用了@Endpoint注解的类。在endpoint类中,我们要创建一个或多个方法来处理输入请求的XML消息。处理方法可以接受很多类型的参数和返回值,例如JAXB2,dom4j,XPATH,SAX,STAX等等。也可以将这些类型组合使用(例如,可以使用DOM对象的参数,但是返回JAXB2的响应对象)。

    下面就是Spring WS引入的重要的特性之一。处理方法可以使用@PayloadRoot或@SoapAction注解来指定哪种类型的消息是该方法能够处理的。可以从SpringSource文档中获得完整的支持的参数和返回类型的列表。

下面是一个endpoint的例子:

  1. importorg.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.ws.server.endpoint.annotation.Endpoint;
  3. import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
  4. import org.springframework.ws.server.endpoint.annotation.RequestPayload;
  5. import org.springframework.ws.server.endpoint.annotation.ResponsePayload;
  6. import com.shekhar.usermanagement.profile.UserProfileCreateRequest;
  7. import com.shekhar.usermanagement.profile.UserProfileCreateResponse;
  8. @Endpoint
  9. public class UserProfileEndpoint {
  10.     private UserService service;
  11.     @Autowired
  12.     public UserProfileEndpoint(UserServiceservice) {
  13.         this.service = service;
  14.     }

  15.     @PayloadRoot(localPart ="UserProfileCreateRequest", namespace ="http://shekhar.com/usermanagement/schemas")
  16.     @ResponsePayload
  17.     public UserProfileCreateResponsecreate(@RequestPayload UserProfileCreateRequest request) {
  18.         String message =service.createUser(request.getUserProfile());
  19.         UserProfileCreateResponse response= new UserProfileCreateResponse();
  20.         response.setMessage(message);
  21.         return response;
  22.     }
  23. }
复制代码
    在上面的例子中,@PayloadRoot组件将所有的命名空间为http://shekhar.com/usermanagement/schemas并且localPart为”UserProfileCreateRequest” 的输入请求映射到create 方法。这个方法中我们使用的是JAXB2 对象作为参数和返回值。可以使用Maven 2 的插件来从XSD 生成JAXB2 对象。

小结

    从上面的简单的例子可以看出,使用Spring WS 2.0能够十分容易的创建基于SOAP的web service。升级后的@Endpoint编程模型十分灵活,而且只需要很少的配置。开发人员不必要编写冗长的配置代码,只需要在应用程序的context XML文件中添加几个XML标签就行了。


解决异构系统之间交互——Web Service Web Service见名之意就是网络上的一些服务,解决的问题就是如何使用这些服务,因为软件的开发有各种各样的语言,利用Java,C#,VB.NET,PHP等等,如何使这些语言编写的程序能够进行互通,彼此相互利用。Web Service就可以解决异构系统的通信的整合。           首先看一下,和WebService一样能够解决异构系统的通信和整合的方案吧:           1,通过XM 阅读详情

相关推荐

SpringBoot Web Service 与 RESTful API 对比:3个维度解析 SOAP 与 REST 的选型决策

本文深入对比了SpringBoot中Web Service(SOAP)与RESTful API的三大核心维度:协议特性、开发效率和生态支持。通过性能测试数据和实际案例,为金融支付、移动应用等不同场景提供选型建议,帮助开发者根据业务需求选择最适合的远程接口调用方案。

GOBY 栏目 865

SpringWS创建webservice服务端及客户端

一、服务端 下图 主要目录结构,这个是完整的,下面,我们就来构建 1.1、创建spring initializr,下一步 1.2选中springweb,下一步,最后创建 1.3导入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web- services&

qq_41048799的博客 1862

Web Service核心解析:从SOAP到RESTful API的设计与Spring Boot实战

Web Service是软件系统间通过互联网进行标准化通信的核心技术,其核心价值在于实现跨平台、跨语言的互操作性。从技术原理上看,它主要遵循两种主流架构风格:基于XML协议栈、强调严谨规范的SOAP/WSDL,以及基于HTTP协议、以资源为中心的RESTful架构。在工程实践中,RESTful API因其轻量、高效和对Web友好的特性,已成为构建公开API、微服务通信和移动后端的首选方案。本文聚焦于使用Spring Boot框架快速实现一个健壮的RESTful Web Service,涵盖从API设计、统一

weixin_33896726的博客 318

使用Spring-ws 创建WebService服务端

使用Spring-ws 创建WebService服务端 一、搭建环境 环境使用的是普通web项目 1、创建一个项目 2、需要使用的jar包 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/200...

qq_35598594的博客 1665

使用XFire+Spring构建Web Service(一)——helloWorld篇

XFire是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用。相对于Axis来说,目前XFire相对受欢迎,加上其提供了和Spring集成的支持,在目前的Web Service开源社区拥有众多的追随者。并且因为XFire为Spring提供的支持,使得我们可以很容易在Spring中使用

igate的专栏 2972

Web Service架构解析:从SOAP到RESTful API的演进与实践

Web Service作为实现跨平台、跨语言系统间通信的核心技术,其本质是通过标准化协议解决异构系统间的数据交换问题。其工作原理基于客户端-服务器架构,通过定义清晰的接口契约实现松耦合集成。在技术价值层面,Web Service显著提升了系统的互操作性和可维护性,成为企业应用集成和微服务架构的基础。随着技术演进,从早期的SOAP协议到当前主流的RESTful架构,Web Service不断适应新的开发范式。SOAP以其严格的XML格式和WS-*标准体系,在金融、电信等需要高安全性和可靠性的领域仍有应用;而R

464

Spring-WS

Spring-WS——Spring Web ServiceQuick Start URL: 继承了Spring文档驱动服务的理念,Spring-WS旨在促进合同为先的SOAP服务的开发。允许创建灵活的Web服务,使用许多方法来处理xml的有效载荷。

怀英小斋 3409

SpringBoot整合spring-ws开发webservice接口(全流程详细教程)

场景 spring-ws spring-ws官网: https://spring.io/projects/spring-ws SpringWebServices(Spring-WS)是Spring社区的一个产品,专注于创建文档驱动的Web服务。SpringWebServices旨在促进契约优先的SOAP服务开发,允许使用多种操作XML有效负载的方式之一创建灵活的Web服务。该产品基于Spr...

BADAO_LIUMANG_QIZHI的博客 3万+

Spring-WS(二)-入门

官方帮助手册:http://docs.spring.io/spring-ws/site/reference/html/tutorial.html     接着《SpringWS(一)-环境搭建》所搭建的服务,运行项目访问地址:http://localhost:8080/Spring-WS-Demo-01/service/UserService.wsdl;SpringWS会根据我们定义的Sch

hippo0918的专栏 3175

Web Service 学习笔记

Web Service 即 web 服务,它是一种跨编程语言和跨操作系统平台的远程调用技术。 Java 中共有三种 Web Service 规范: - JAX-WS(JAX-RPC): 基于 xml 数据 - JAXM&SAAJ - JAX-RS:基于 xml 或 json 数据

Gjw_java的博客 737

WinForm布局

登录模板页面UILoginForm

m0_71541781的博客 470

Apache CXF 简介

Apache CXF 简介 SOA 目前已经成为了人人皆知的热点,对分析人员来讲,SOA 重点需要加强对业务服务的分析;各种不同的服务是 SOA 的重要基础;ESB 则提供了一个舞台,让各种异构系统的业务服务在这里进行实际业务的展现、集成等。对开发人员来讲,如何更快速地创建出更稳定的业务服务组件是关键;应该更加深入领会使用面向接口的组件化开发方式;开发人员重点是保障服务的生命周期,其它的事

ailihx的专栏 1128

Arxml文件可视化:当汽车软件架构遇见交互式设计工具

本文探讨了Arxml文件在汽车电子系统开发中的可视化技术,结合AUTOSAR架构标准,介绍了如何利用现代Web技术构建交互式设计工具。通过三维组件关系图、动态数据流展示和版本对比等功能,显著提升开发效率和架构评审质量,适用于MBD和ASPICE开发流程。

weixin_29050271的博客 427

java调用soap服务_Spring Boot调用SOAP Web Service

org.springframework.bootspring-boot-starter-web-servicesWebServiceTemplate我们使用WebServiceTemplate来调用SOAP Service。WebServiceTemplate提供了三类调用方法sendSourceAndReceive、marshalSendAndReceive、sendAndReceive。sen...

weixin_32743475的博客 1179

Flowable任务节点动态预测:基于任务ID与参数获取下一节点及候选分配策略

本文深入探讨了Flowable工作流引擎中任务节点动态预测功能的实现。通过解析任务ID与运行时参数,模拟流程执行路径,精准预测下一节点及候选用户/组集合,从而提升用户体验与系统透明度。核心在于利用自定义命令实现表达式求值,并深度解析候选者分配策略,确保预测结果与实际流程执行一致。

nnn11的博客 739

Android Qcom USB Driver学习(十三)

该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) Android Qcom USB Driver学习(八) Android Qcom USB Driver学习(九)deals with the USB Power Delivery resources used by one or more ports on the basis of the local device policy the basis of the local device policy.opera

Android驱动开发 2613

Spring Web Services 是 Spring 框架的一部分,用于构建基于 SOAP 的 Web 服务

作为 Spring 框架的一部分,Spring Web Services 可以无缝集成到现有的 Spring 应用程序中,利用 Spring 提供的各种功能,如依赖注入、事务管理等。:这是最常见的传输协议,用于在客户端和服务器之间传递消息。:作为 Spring 框架的一部分,Spring Web Services 拥有庞大的社区支持,开发者可以轻松找到相关的文档、教程和示例代码。:Spring Web Services 提供了对安全性的支持,包括身份验证、授权和加密等功能,确保 Web 服务的安全性。

[Blog][Domain] programb.blog.youkuaiyun.com 544

高通ISP模块全解析:从Raw到JPEG的18个关键处理步骤(附避坑指南)

本文全面解析高通ISP模块从Raw到JPEG的18个关键处理步骤,涵盖原始数据预处理、色彩科学处理链、画质增强与降噪等核心环节。通过实战调优经验,揭示ISP架构中的技术原理与工程实践要点,帮助开发者避免常见问题,提升移动影像处理质量。

weixin_30399155的博客 359

Web Service 那点事儿 —— 使用 CXF 开发 SOAP 服务

选框架犹如选媳妇,选来选去,最后我还是选了“丑媳妇(CXF)”,为什么是它?因为 CXF 是 Apache 旗下的一款非常优秀的 WS 开源框架,具备轻量级的特性,而且能无缝整合到 Spring 中。 其实 CXF 是两个开源框架的整合,它们分别是:Celtix 与 XFire,前者是一款 ESB 框架,后者是一款 WS 框架。话说早在 2007 年 5 月,当 XFire 发展到了它的

lujianing2011的专栏 1494

个人顶级AI助手OpenClaw(Clawdbot) - 新手快速入门指南

本文详细介绍了个人顶级AI助手OpenClaw(Clawdbot) 的快速入门指南,包括安装部署和使用配置及注意事项

program哲学 5305

python乘法运算 信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析

本文解析了全国青少年信息素养大赛Python编程挑战赛的乘法运算题目。题目要求通过递归算法实现两个自然数的乘法运算,并输出算式。算法分析指出可将乘法转化为累加,使用递归函数实现。程序代码展示了一个自定义函数add(),通过递归调用完成累加运算。文章还分析了考点,包括递归函数、输入处理、分支语句等编程基础知识的应用。最后强调解题方法的多样性,重点在于理解递归原理和实现题目要求。该题目难度适中,主要考查选手对递归算法的理解和编程基础能力。

青少年编程学习指导 789

大多数人忽略了的Spring官方项目,Spring Web Services

1、什么是Spring Web Service? 首先,不知道Web service的小伙伴,还需要,去了解下Web service 的相关知识再来看这篇文章。本文基于官方文档,作为基础。 Spring Web Services(Spring-WS)是Spring社区的产品,致力于创建文档驱动的Web服务。Spring Web Services旨在促进约定优先SOAP服务的开发,从而允许使用多种处理XML有效负载的方式之一来创建灵活的Web服务。该产品基于Spring本身,这意味着您可以将诸如依赖项注入之类

一个爱上护士的猿 5736

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

天天酷科研的博客 1114

基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice

一、基于JAX-WS的Web Service服务端/客户端 下面描述的是在main函数中使用JAX-WS的Web Service的方法,不是在web工程里访问,在web工程里访问,参加第二节。 JAX-WS简介: JAX_RPC(Java API for XML-Based RPC)允许Java应用程序可以通过已知的描述信息调用一个基于Java的Web服务,描述信息与Web服务的W...

anyao4367的博客 412

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

翻译-使用Spring WebService生成SOAP Web Service

生成SOAP web service 该指南将带领你使用Spring创建一个基于SOAP的web service的整个过程。 指南内容 你将创建一个服务,该服务通过一个基于WSDL的SOAP web service向外暴露欧洲国家的数据。  注意:为了简化该示例,你将使用硬编码方式嵌入英国,西班牙及波兰。 准备事项 15分钟 喜爱的编辑器或IDE

243

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

**Spring Web Services 1.0** 是 Spring 框架中的一个重要模块,专注于构建基于 SOAP 的 Web 服务

Spring Web Services 1.0 的发布标志着 Spring 社区在 Web 服务领域的一个重要里程碑。它提供了强大的功能,支持契约优先的开发方式,并与 Spring 框架紧密集成,帮助开发者快速构建灵活的 Web 服务。是 Spring 框架中的一个重要模块,专注于构建基于 SOAP 的 Web 服务。它的首次发布标志着 Spring 在 Web 服务领域的正式扩展,为开发者提供了一种更简单、更灵活的方式来创建和部署 SOAP 服务。

[Blog][Domain] programb.blog.youkuaiyun.com 439

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: springsecurity3.0.5 filterSecurityInterceptor 使用和配置
下一篇: 基于CXF restwebservice
rabbit0708
博客等级 码龄15年 12粉丝 27原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值