使用JAXB框架定制Web服务行为

Web 服务

Web 服务概述

从本质上来讲 Web 服务就是对外暴露的并能够通过 Web 进行调用的一组 API,它并不要求服务提供方及调用方的技术实现、编程语言、运行平台甚至操作系统等。也正因为这个特点 Web 服务能在企业应用集成领域迅速占领一席之地,并成为实施应用程序集成的首选手段之一,同时 Web 服务也是面向服务架构的重要实现手段。

深入剖析 Web 服务我们不难发现在这个简单定义的背后有若干问题需要解决:Web 服务提供程序如何描述自己才能为调用程序所理解;调用程序如何发现可用的 Web 服务;调用程序在找到需要的 Web 服务后应该如何调用特定的接口。目前业界已经有多个标准以及协议来解决上述问题并支撑 Web 服务的使用,其中最重要的非 WSDL、SOAP、UDDI 莫属。本文以 Java Web 服务为例介绍如何定制行为。

Web 服务基本构件

WSDL、SOAP 和 UDDI 是 Web 服务中最基础也是最重要的组成部分,这三个协议定义了 Web 服务的描述,发现以及访问。

WSDL(Web Service Description Language):Web 服务描述语言。每个 Web 服务都会有一个相应的 WSDL 文档来进行描述。WSDL 文档首先对接口和访问时的请求 / 响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服 务访问点。WSDL 文档本质上是一个 XML 格式的文档,其中详细定义了 Web 服务所暴露的接口集合,接口原型,接口参数、返回类型的数据结构,接口调用消息格式,承载协议等。

SOAP(Simple Object Access Protocol):简单对象访问协议。SOAP 协议本质上就是 XML 和 HTTP 协议的组合体,它定义了一个 XML 格式的 Web 服务访问消息封装格式并通过 HTTP 协议进行消息承载,当然 SOAP 消息也可以通过 HTTPS 或者 SMTP 等协议来承载。

UDDI(Universal Description, Discovery and Integration):统一描述、发现和集成协议。它是为解决 Web 服务的发布和发现问题而制订的技术标准,包含一组基于 Web 的、分布式的 Web 服务信息注册中心的实现标准,以及一组使企业能将自己提供的 Web 服务注册到该中心的实现标准。

Web 服务中的数据绑定

通俗来讲,XML 形式数据和应用程序业务数据结构的转换过程就称为数据绑定。XML 以其特有的平台独立性可以很好的用来描述 Web 服务,但是 Web 服务的核心仍在于应用程序业务逻辑处理,在业务逻辑处理中需要的业务数据结构而非这些 XMl 格式的数据,因此就需要数据绑定来完成从 XML 格式数据到应用程序业务数据结构的转换。从上节我们不难看出 Web 服务在通信过程中均以 XML 形式进行表示的,而在 Java Web 服务的提供端和调用端又是以 Java 对象形式存在,因此就必然需要一个 XML 和 Java 之间的一个双向转换过程,这个转换过程就是 XML 和 Java 的数据绑定。目前业界有很多数据绑定实现,比如 adb、xmlbeans、jibx、jaxme、jaxb 等,可以根据项目实际情况进行选择,像 Axis2 里就是用了自己的 adb 绑定框架,而 JAX-RPC 类型 Web 服务就有自己的绑定机制。下图直观地反映了 Java Web 服务调用过程中的数据绑定:

图 1 .Web 服务中的数据绑定 Web 服务类型 :JAX-WS vs JAX-RPC

JAX-RPC 规范定义了如何使用 Java 语言来实现 Web 服务,这个实现是基于 Java 的 RPC, 并不完全支持 XML schema 规范,同时没有对数据绑定定义标准的实现。 JAX-WS 是 JAX-RPC 的后续版本,它在协议支持、接口映射模型以及消息传输等方面均作了较大提升和优化。同时 JAX-WS 映射到 Java 5.0 版本,它大量使用了 Java 5.0 版本新特性诸如注解、泛型支持等,而 JAX-RPC 映射到 Java 1.4 版本。此外一个重要区别就是 JAX-WS 将数据绑定交给 JAXB 来处理,而 JAX-RPC 像之前提到的定义了一套非标准的私有绑定机制,这也直接导致了在 JAX-RPC Web 服务中开发者很难对 Web 服务进行数据绑定的定制。本文后续所指 Web 服务默认为 JAX-WS 型 Web 服务。

时间: 2024-10-30 19:57:40

使用JAXB框架定制Web服务行为的相关文章

XML、Web服务和.NET框架(2)

.net框架|web|web服务|xml 缆线级的XML:SOAP 实现Web服务的异类基本结构以及在整个Web中实现Web服务的关键,是实现支持简单数据描述格式的技术.这种格式就是XML.Web服务必须使用XML来完成三件事情:基本的缆线格式.服务描述以及"服务发现". SOAP:在通信的最低级别,系统需要使用同一语言.特别,作为通信双方的应用程序需要遵守同一套通信规则:如何表示不同的数据类型(例如:是整数还是数组),以及如何表示命令(即:需要对数据进行何种操作).另外,在必要的时候

XML、Web服务和.NET框架

.net框架|web|web服务|xml 应用程序开发技术正发生着一次质的飞跃,从根本上大幅度提高开发人员的生产效率,它开启了一道通向全新概念的应用程序的大门. 在过去,开发人员一直通过集成本地系统服务来构建应用程序.在这种模式下,开发人员可以访问丰富的开发资源并能严格控制应用程序的行为. 如今,开发人员在很大程度上已挣脱了这种模式的束缚,致力于构建具有复杂结构的n层系统,这种系统能将网络中各处的众多的应用程序进行集成,并大大提升应用程序的价值.这样,开发人员便可集中精力挖掘软件独特的商业价值,

开发自己的Web服务处理程序(以支持Ajax框架异步调用Web服务方法)

当你添加Asp.net AJAX功能到你的Web程序的时候,你需要在Web.config中做一些改变,需要你显式地移除默认的ASMX处理程序并且添加asp.net ajax框架自己的脚本处理器来作为ASMX处理程序.在上一篇异步调用Web服务方法中,我们谈论过,ajax框架的asmx(ScriptHandler)是不支持异步调用Web服务方法的,所以为了让asp.netajax支持异步Web方法调用,我们需要避开该处理器,以提供自定义的处理器来取代它. Asp.netAJAX框架的ASMX处理器

XML、Web服务和.NET框架(1)

.net框架|web|web服务|xml 应用程序开发技术正发生着一次质的飞跃,从根本上大幅度提高开发人员的生产效率,它开启了一道通向全新概念的应用程序的大门. 在过去,开发人员一直通过集成本地系统服务来构建应用程序.在这种模式下,开发人员可以访问丰富的开发资源并能严格控制应用程序的行为. 如今,开发人员在很大程度上已挣脱了这种模式的束缚,致力于构建具有复杂结构的n层系统,这种系统能将网络中各处的众多的应用程序进行集成,并大大提升应用程序的价值.这样,开发人员便可集中精力挖掘软件独特的商业价值,

使用 .NET 框架将现有代码作为 Web 服务提供

web 使用 .NET 框架将现有代码作为 Web 服务提供 使用 .NET 建立分布式应用程序 Steve Kirk 和 Priya DhawanMicrosoft Developer Network 摘要:本文介绍了使用 ASP.NET 将现有 Microsoft Visual Basic 6.0 代码作为 Web 服务提供时所进行的数据转换.适用于 Microsoft .NET SDK 和 Microsoft Visual Studio.NET 的 Beta 1 版. 目录简介 现有代码提

通过Web服务API和JAXB编组与WebSphere Process Server交互

简介 除了传统的 Enterprise JavaBeans (EJB) 接口之外,最近增加了 Java Messaging Service (JMS) API.REST 接口和 Web 服务 API.comparison of the programming interfaces for interacting with business processes and human tasks 讨论了这些 API 的优点和缺点. Web 服务 API 是在 WebSphere Process Ser

使用Spring的Web服务模拟器框架解决方案

大型 Web 开发计划通常会由多个开发项目组成,这些项目由分布在不同地域的团队全天候同步进行. 由这些团队开发的各个组件需要尽可能实现无缝互操作.这类开发的关键要求是在负责构造不同组件的团 队之间建立好约定.一个好的模拟器框架通过实现各个接口约定所支持的全部请求和响应来保证尽可能的 团队独立性,并潜在地提高生产率.本文将描述在快速 Web 开发环境中使用模拟器框架,逐步演示如何 使用 Rational Application Developer 快速创建一个模拟器框架,并包含了一些示例与代码.

关于二进制Web服务框架Hessian最简单代码实例

关于二进制Web服务框架Hessian最简单代码实例 在resin3.1 下测试通过 hessian版本: hessian-3.1.6.jar 官方地址: http://hessian.caucho.com/#Java http://hessian.caucho.com/ 步骤如下: 1. 接口定义 package com.yanek.study.hessian; public interface Hello {    public String hello(String name); }  

RESTful风格的Web服务框架 Swagger

Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步.Swagger 让部署管理和使用功能强大的API从未如此简单.   创建工程   1.REST API import javax.ws.rs.Consumes;      import javax.ws.rs.GET;      import javax.ws