Web Service学习笔记(四)

本文探讨了WebService从SOAP到JAX-WS的发展历程,重点介绍了JAX-WS作为Java API for XML-Based Web Services的最新进展,及其如何简化WebService的开发与部署,包括其与JAXB的集成,用于XML数据的编组和解组。

Web Service的发展

在Web Service的发展过程中,首先有的是SOAP,但是SOAP只是用来描述信息(Message)是什么样的。然后有了WSDL,但是WSDL并不会告知如何使用Java编写Web Service。在这种情况下,JAX-RPC1.0应运而生。JAX-RPC1.1的后续版本被命名我诶JAX-WS2.0(Java API for XML-based Web Services),如下图所示。

SOAP
WSDL
JAX-RPC
JAX-WS

JAX-WS

JAX-WS的全称为Java API for XML-Based Web Services。到目前为止,JAX-WS已经发展到 2.2版本,除了SUN的RI(JDK 5提供的是JAX-WS 2.0的实现,JDK 6提供的是JAX-WS 2.1的实现)提供相应的支持外,Apache CXF 2.3.0及后续版本也开始提供对JAX-WS2.2的支持。
JAX-WS 用于简化使用Java构造Web Service和Web Service客户端的工作,其优势如下:

  • 提供了完整的Web Service堆栈,可减少开发和部署Web Service的任务。
  • 提供了用于将传统Java对象类转换为Web Service的注解(annotation)库,从而加速了Web Service的开发工作。
  • 指定了采用WSDL(Web服务描述语言)定义的服务到实现该服务的Java类之间的详细映射。采用WSDL定义的任何复杂类型都通过遵循JAXB(Java Architecture for XML Binding)规范定义的映射来映射为Java类。

JAXB

JAX-WS发布Web Service时需要采用JAXB工具,JAXB提供了一种便捷的方式来绑定XML schema和Java,使Java程序员能够很方便地在Java应用程序中处理XML数据。JAXB提供了将XML文档解组为Java内容树的方法,以及将Java内容树重新编组回XML文档的方法。
JAXB的优点是将DTD定义好的XML文档映射为Java对象,提供简单、快速的数据操作方式。要访问XML中的元素和属性,只要通过相应对象上的一系列getter和setter即可。其缺点就在于只能访问特定的DTD定义的XML文档。
JAXB工作包括编组(Marshalling)和解组(Unmarshalling)。

  • 编组是把内存中的数据转化到存储媒介上的过程。因此在Java和XML环境中,编组就是把一些Java对象转化成一个(或多个)XML文档。在数据库环境中,则是把Java表示的数据存入数据库。显然,编组的秘密就在于把Java实例中的面向对象结构化成适用于XML的扁平结构,或者RDBMS中的关系结构。编组工作原理如下图。
    在这里插入图片描述
  • 解组是把数据从存储媒介转换到内存的过程,正好与编组相反。因此需要把XML文档解组到Java虚拟机中。这里的复杂性不是扁平数据中,因为这不是必需的,而在于从正确的数据到正确的Java代码变量的映射。如果映射是错误的,就不可能正确地访问数据。当然,如果再尝试重新编组还会造成更大的问题,并且问题传播得很快。解组工作原理如下图。
    在这里插入图片描述
    从存储媒介到内存然后回到存储媒介的完整循环被称作往返。在XML和Java技术环境中,这就意味着从XML文档到Java实例变量,然后再回到XML文档。正确的往返要求是,如果中间没有修改数据,XML输入和XML输出应该是相同的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值