如何使用 JAXB 框架定制 Web 服务行为Word格式.docx

上传人:b****3 文档编号:15727350 上传时间:2022-11-15 格式:DOCX 页数:14 大小:190.24KB
下载 相关 举报
如何使用 JAXB 框架定制 Web 服务行为Word格式.docx_第1页
第1页 / 共14页
如何使用 JAXB 框架定制 Web 服务行为Word格式.docx_第2页
第2页 / 共14页
如何使用 JAXB 框架定制 Web 服务行为Word格式.docx_第3页
第3页 / 共14页
如何使用 JAXB 框架定制 Web 服务行为Word格式.docx_第4页
第4页 / 共14页
如何使用 JAXB 框架定制 Web 服务行为Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

如何使用 JAXB 框架定制 Web 服务行为Word格式.docx

《如何使用 JAXB 框架定制 Web 服务行为Word格式.docx》由会员分享,可在线阅读,更多相关《如何使用 JAXB 框架定制 Web 服务行为Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

如何使用 JAXB 框架定制 Web 服务行为Word格式.docx

Web服务基本构件

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

WSDL(WebServiceDescriptionLanguage):

Web服务描述语言。

每个Web服务都会有一个相应的WSDL文档来进行描述。

WSDL文档首先对接口和访问时的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服务访问点。

WSDL文档本质上是一个XML格式的文档,其中详细定义了Web服务所暴露的接口集合,接口原型,接口参数、返回类型的数据结构,接口调用消息格式,承载协议等。

SOAP(SimpleObjectAccessProtocol):

简单对象访问协议。

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

UDDI(UniversalDescription,DiscoveryandIntegration):

统一描述、发现和集成协议。

它是为解决Web服务的发布和发现问题而制订的技术标准,包含一组基于Web的、分布式的Web服务信息注册中心的实现标准,以及一组使企业能将自己提供的Web服务注册到该中心的实现标准。

Web服务中的数据绑定

通俗来讲,XML形式数据和应用程序业务数据结构的转换过程就称为数据绑定。

XML以其特有的平台独立性可以很好的用来描述Web服务,但是Web服务的核心仍在于应用程序业务逻辑处理,在业务逻辑处理中需要的业务数据结构而非这些XMl格式的数据,因此就需要数据绑定来完成从XML格式数据到应用程序业务数据结构的转换。

从上节我们不难看出Web服务在通信过程中均以XML形式进行表示的,而在JavaWeb服务的提供端和调用端又是以Java对象形式存在,因此就必然需要一个XML和Java之间的一个双向转换过程,这个转换过程就是XML和Java的数据绑定。

目前业界有很多数据绑定实现,比如adb、xmlbeans、jibx、jaxme、jaxb等,可以根据项目实际情况进行选择,像Axis2里就是用了自己的adb绑定框架,而JAX-RPC类型Web服务就有自己的绑定机制。

下图直观地反映了JavaWeb服务调用过程中的数据绑定:

图1.Web服务中的数据绑定Web服务类型:

JAX-WSvsJAX-RPC

JAX-RPC规范定义了如何使用Java语言来实现Web服务,这个实现是基于Java的RPC,并不完全支持XMLschema规范,同时没有对数据绑定定义标准的实现。

JAX-WS是JAX-RPC的后续版本,它在协议支持、接口映射模型以及消息传输等方面均作了较大提升和优化。

同时JAX-WS映射到Java5.0版本,它大量使用了Java5.0版本新特性诸如注解、泛型支持等,而JAX-RPC映射到Java1.4版本。

此外一个重要区别就是JAX-WS将数据绑定交给JAXB来处理,而JAX-RPC像之前提到的定义了一套非标准的私有绑定机制,这也直接导致了在JAX-RPCWeb服务中开发者很难对Web服务进行数据绑定的定制。

本文后续所指Web服务默认为JAX-WS型Web服务。

JAXB框架概述

JAXB(JavaArchitectureforXMLBinding)是由J2EE体系中标准的XMLschema和Java数据绑定框架,开发者可以使用JAXB方便地在Java应用程序中进行XML数据和Java对象的转换。

JAXB提供了将XML文档解析为Java内容树的方法,以及将Java内容树重新写回XML文档的方法。

同时JAXB还提供了基于XMLschema生成Java类以及从Java类生成XMLschema的支持。

JAXB框架分为以下三个组成部分:

schema编译器:

schema编译器以XMLschema为输入生成和schema相对应的Java类集,生成的Java类中会根据schema的结构自动包含了相应的JAXB注解。

比方说schema里的一个元素映射的Java类会自动用@XmlType注解加以标注,一个元素的属性所映射的Java字段会自动用@XmlElement注解加以标注;

schema生成器:

schema生成器以包含JAXB注解的Java类集为输入生成相应的XMLschema。

比方说一个包含@XmlType注解的Java类在生成的schema中会被映射为一个元素;

JAXB运行环境:

JAXB运行时环境提供了两个基本的操作用于XML文档的访问,操作以及验证等等:

marshal、unmarshal,这两个操作也是XML和Java绑定的基础。

Marshal是指将一个内存对象以XML文档形式进行编组处理的过程,unmarshal则是一个相反的过程,将一个XML文档解析为内存对象的过程。

图2.JAXB框架结构示意图

JAXB的基础-XMLschema

XMLschema是XML文档的格式定义,是DTD的替代产品用于约束XML文档内容及结构,比如它定义了XML文档可以出现的元素,元素出现的顺序,元素具有的属性等。

XMLschema本身就是一个XML文档,因此天然具有了XML的可扩展性。

同时XMLschema对XML数据类型提供了更为丰富的支持。

JAXB框架的基础就是XMLschema,一个使用JAXB的典型场合就是根据业务数据模型需要先写出XMLschema,然后利用JAXB框架的绑定编译器直接生成XML相应的Java类集。

JAXB与Web服务关系

JAX-WS型Web服务将XML和Java之间的绑定代理给了JAXB来完成,也就是说在Web服务调用过程中的XML数据和Java对象间转换都是由JAXB框架来完成的。

Web服务中接口引用的参数、返回类型等等数据类型描述都是在关联的XMLschema中定义的,而JAXB框架也正是根据这个Web服务关联的XMLschema来完成于Java对象之间的相互映射。

JAXB框架定制支持

JAXB规范定义了XMLschema与Java的标准映射关系,比方说XML的xsd:

string数据类型映射为Java.lang.String,所有JAXB规范实现者必须实现规范所定义的标准的XMLschema与Java的映射。

在大多数情况下标准映射已经能满足开发者编程需要,但是不排除在一些特殊场合我们需要定制或重载JAXB规范定义的标准映射,比方说我们想把xsd:

string映射到我们自己的一个Javabean而非标准映射里的Java.lang.String类,或者我们希望对XMLschema编译器产生的Java类集增加Javadoc支持,甚至定制产生的Java类的名字等等,这个时候我们就需要对JAXB标准映射进行定制。

JAXB提供了两种方式支持从XMLschema到Java的绑定定制,定制通常是以定制声明形式完成。

schema内置注解:

开发者可以通过在XMLschema文档中用注解方式进行定制声明,这种定制方式开发者可以直观的看到定制声明的作用对象,作用域等,通常用于比较简单的绑定定制。

schema内置定制声明通常的语法格式如下:

<

xs:

annotation>

appinfo>

.....

bindingdeclaration

/xs:

 

schema外部绑定定制文件:

开发者可以把定制声明编写在一个单独的文件中,然后在编译schema时指定这个定制文件,这类定制文件通常以.xjb扩展名命名。

这种方式便于schema定制声明的集中化管理。

外部绑定定制文件中的定制声明通常的语法格式如下:

jxb:

bindings>

<

bindingdeclaration>

/jxb:

从Java到XMLschema的映射开发者可以通过JAXB提供的注解来完成,在编程Java类时可以使用JAXB丰富的注解轻松地完成绑定定制。

开发者可以在全局、schema、组件等不同层次上进行进行定制声明,相应不同的声明作用域。

使用JAXB框架定制Web服务

自底向上编程模型

自底向上编程模型是指开发者从编写Java类开始,然后将之发布为Web服务。

自底向上编程模型通常在Web服务提供方被采用,开发者在Java类的开发过程中可以使用Java注解来完成对Web服务的行为定制。

JAXB框架提供了丰富的注解供开发者使用来完成从Java类开始定制Web服务,当然这个定制局限在数据绑定层面上。

在这种编程模型中JAXB主要完成从Java类到XMLschema的映射。

JAX-WS规范本身也定义了若干注解用于Web服务的基础行为定制(比方说服务名称,命名空间等)。

本文我们重点关注如何利用JAXB来定制Web服务,因此下面我们主要结合Webshpere应用服务器Web服务实现来介绍一些在编程中常用的注解并介绍相应的Web服务行为。

@XmlRootElement

@XmlRootElement注解用于标注类或枚举类型,用它标注的类在映射后的schema中会以一个全局元素的形式出现,元素的类型是一个包含Java类属性的XML复杂数据类型。

我们可以通过@XmlRootElement注解的name属性来定制映射的schema全局元素的名称,一般来说以@XmlRootElement标注的类在相应的XML文档中会以最外层或根节点形式出现。

比方说有如下标注类:

@XmlRootElement(name="

RootStudent"

namespace="

publicclassStudent{

...

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1