《开发课堂精简》PPT课件

上传人:壹****1 文档编号:577865526 上传时间:2024-08-22 格式:PPT 页数:79 大小:1.05MB
返回 下载 相关 举报
《开发课堂精简》PPT课件_第1页
第1页 / 共79页
《开发课堂精简》PPT课件_第2页
第2页 / 共79页
《开发课堂精简》PPT课件_第3页
第3页 / 共79页
《开发课堂精简》PPT课件_第4页
第4页 / 共79页
《开发课堂精简》PPT课件_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《《开发课堂精简》PPT课件》由会员分享,可在线阅读,更多相关《《开发课堂精简》PPT课件(79页珍藏版)》请在金锄头文库上搜索。

1、JavaEE应用技术基础应用技术基础济南大学信息学院济南大学信息学院济南大学信息学院济南大学信息学院 刘鹍刘鹍刘鹍刘鹍1JPA开发步骤:开发步骤:开发步骤:开发步骤: 增加增加增加增加JPAJPA开发能力开发能力开发能力开发能力 配置文件配置文件配置文件配置文件 persistence.xmlpersistence.xml 编写带标注的实体类(可以通过反向工程生成)编写带标注的实体类(可以通过反向工程生成)编写带标注的实体类(可以通过反向工程生成)编写带标注的实体类(可以通过反向工程生成) 编写编写编写编写DAODAO层类(可以通过反向工程生成)层类(可以通过反向工程生成)层类(可以通过反向工

2、程生成)层类(可以通过反向工程生成)目录结构:目录结构:目录结构:目录结构: META-INF/META-INF/persistence.xmlpersistence.xml 实体实体实体实体BeanBean:带注释的:带注释的:带注释的:带注释的POJOPOJO类类类类 DAODAO层接口和实现类(会话层接口和实现类(会话层接口和实现类(会话层接口和实现类(会话BeanBean)2EJB实体BeanJBossJBoss中实体中实体中实体中实体BeanBean的应用的应用的应用的应用 配置配置配置配置JBossJBoss数据源(数据源(数据源(数据源(* *- -ds.xmlds.xml) 在

3、在在在MyEclipseMyEclipse的的的的DatabaseExplorerDatabaseExplorer视图下新建一个数据库连接视图下新建一个数据库连接视图下新建一个数据库连接视图下新建一个数据库连接的实例的实例的实例的实例 新建一个新建一个新建一个新建一个EJBprojectEJBproject,选择使用,选择使用,选择使用,选择使用JPAJPA,同时指定数据源的名称,同时指定数据源的名称,同时指定数据源的名称,同时指定数据源的名称(java:java:数据源名称)和数据库连接的参数。数据源名称)和数据库连接的参数。数据源名称)和数据库连接的参数。数据源名称)和数据库连接的参数。

4、反向工程(反向工程(反向工程(反向工程(EJB3ReverseEngineeringEJB3ReverseEngineering)生成实体)生成实体)生成实体)生成实体BeanBean和和和和DAODAO层实现类(接口)层实现类(接口)层实现类(接口)层实现类(接口) 打包,发布(需要把打包,发布(需要把打包,发布(需要把打包,发布(需要把JDBCJDBC驱动拷贝到驱动拷贝到驱动拷贝到驱动拷贝到serverdefaultdeployserverdefaultdeploy的的的的liblib下面)下面)下面)下面) 写测试类测试写测试类测试写测试类测试写测试类测试3第10章 Web Servic

5、e开发4学习要点:1 1掌握掌握掌握掌握WebServiceWebService的基础知识。的基础知识。的基础知识。的基础知识。2 2熟悉使用熟悉使用熟悉使用熟悉使用JAX-WSJAX-WS构建构建构建构建WebServiceWebService的过程。的过程。的过程。的过程。3 3掌握掌握掌握掌握JAXBJAXB绑定绑定绑定绑定XMLSchemaXMLSchema的方法。的方法。的方法。的方法。4 4了解了解了解了解SAAJSAAJ。5.5.了解了解了解了解JAXRJAXR。5Web Service概述什么是什么是什么是什么是WebServiceWebService? WebServiceW

6、ebService是一种是一种是一种是一种新的新的新的新的 WebWeb应用程序分支应用程序分支应用程序分支应用程序分支,它们是自包含、自描,它们是自包含、自描,它们是自包含、自描,它们是自包含、自描述、模块化的应用,可以在网络述、模块化的应用,可以在网络述、模块化的应用,可以在网络述、模块化的应用,可以在网络( (通常为通常为通常为通常为 Web)Web)中被描述、发布、查找中被描述、发布、查找中被描述、发布、查找中被描述、发布、查找以及通过以及通过以及通过以及通过 WebWeb来调用。来调用。来调用。来调用。 WebServiceWebService是是是是基于网络的、分布式的模块化组件基

7、于网络的、分布式的模块化组件基于网络的、分布式的模块化组件基于网络的、分布式的模块化组件,它执行特定的任,它执行特定的任,它执行特定的任,它执行特定的任务,遵守具体的技术规范,这些规范使得务,遵守具体的技术规范,这些规范使得务,遵守具体的技术规范,这些规范使得务,遵守具体的技术规范,这些规范使得 WebServiceWebService能与其他兼容能与其他兼容能与其他兼容能与其他兼容的组件进行互操作。的组件进行互操作。的组件进行互操作。的组件进行互操作。 使用标准的互联网协议,像超文本传输协议使用标准的互联网协议,像超文本传输协议使用标准的互联网协议,像超文本传输协议使用标准的互联网协议,像超

8、文本传输协议 HTTPHTTP和和和和 XMLXML。6Web Service概述简单来说,简单来说,简单来说,简单来说,Web ServiceWeb ServiceWeb ServiceWeb Service就是一个就是一个就是一个就是一个向外界暴露出接口的能向外界暴露出接口的能向外界暴露出接口的能向外界暴露出接口的能够通过网络进行远程调用够通过网络进行远程调用够通过网络进行远程调用够通过网络进行远程调用的应用程序。的应用程序。的应用程序。的应用程序。更准确地说:更准确地说:更准确地说:更准确地说: 一方面一方面一方面一方面Web ServiceWeb ServiceWeb ServiceW

9、eb Service是一种部署在是一种部署在是一种部署在是一种部署在WebWebWebWeb上的对象上的对象上的对象上的对象; 另一方面另一方面另一方面另一方面Web ServiceWeb ServiceWeb ServiceWeb Service是建立在以是建立在以是建立在以是建立在以XMLXMLXMLXML为主的、开放的为主的、开放的为主的、开放的为主的、开放的WebWebWebWeb标标标标准协议规范的基础上的分布式应用新平台准协议规范的基础上的分布式应用新平台准协议规范的基础上的分布式应用新平台准协议规范的基础上的分布式应用新平台, , , ,也就是说也就是说也就是说也就是说Web W

10、eb Web Web ServiceServiceServiceService的实质是一套标准,它定义了应用程序如何在的实质是一套标准,它定义了应用程序如何在的实质是一套标准,它定义了应用程序如何在的实质是一套标准,它定义了应用程序如何在WebWebWebWeb上实现互操作。上实现互操作。上实现互操作。上实现互操作。只需要遵守这一套标准,人们可以用任何语言,在任何只需要遵守这一套标准,人们可以用任何语言,在任何只需要遵守这一套标准,人们可以用任何语言,在任何只需要遵守这一套标准,人们可以用任何语言,在任何平台上实现所需要的平台上实现所需要的平台上实现所需要的平台上实现所需要的Web Servi

11、ceWeb ServiceWeb ServiceWeb Service,并且可以顺利地同网,并且可以顺利地同网,并且可以顺利地同网,并且可以顺利地同网络上任何其它亦遵守上述协议的络上任何其它亦遵守上述协议的络上任何其它亦遵守上述协议的络上任何其它亦遵守上述协议的Web ServiceWeb ServiceWeb ServiceWeb Service组件进行互组件进行互组件进行互组件进行互操作,从而可以实现一种高效、低廉的异构平台上应用操作,从而可以实现一种高效、低廉的异构平台上应用操作,从而可以实现一种高效、低廉的异构平台上应用操作,从而可以实现一种高效、低廉的异构平台上应用的集成。对于从事企

12、业应用开发来讲,学习的集成。对于从事企业应用开发来讲,学习的集成。对于从事企业应用开发来讲,学习的集成。对于从事企业应用开发来讲,学习Web ServiceWeb ServiceWeb ServiceWeb Service技术是相当必要的。技术是相当必要的。技术是相当必要的。技术是相当必要的。7第10章 Web Service开发10.10.1Web服务概述服务概述10.2WEBService基础基础10.3XML基础基础10.4用于用于XML的的javaAPI(JAXP)10.5使用使用JAX-WS构建简单的构建简单的WebService10.6使用使用JAXB绑定绑定XMLSchema10

13、.7SAAJ10.8JAXR8第10章 Web Service开发10.1Web服务概述服务概述10.2WEBService基础基础10.3XML基础基础10.4用于用于XML的的javaAPI(JAXP)10.5使用使用JAX-WS构建简单的构建简单的WebService10.6使用使用JAXB绑定绑定XMLSchema10.7SAAJ10.8JAXR910.1 Web服务概述1010.1.1WebService的核心标准的核心标准10.1.2WebService体系架构体系架构1010.1.1 Web Service的核心标准XMLXMLSOAPSOAPWSDLWSDLUDDIUDDI11

14、10.1.1 Web Service的核心标准XMLXMLXML(eXtensibleXML(eXtensibleMarkupMarkupLangugageLangugage,即可扩展标,即可扩展标,即可扩展标,即可扩展标记语言记语言记语言记语言 ) )是是是是WebServiceWebService技术架构的基石,它是技术架构的基石,它是技术架构的基石,它是技术架构的基石,它是WebWebServiceService中中中中表示数据的基本格式表示数据的基本格式表示数据的基本格式表示数据的基本格式,但是它没有定义怎样扩展,但是它没有定义怎样扩展,但是它没有定义怎样扩展,但是它没有定义怎样扩展这

15、套数据类型。例如,整形数用这套数据类型。例如,整形数用这套数据类型。例如,整形数用这套数据类型。例如,整形数用1616位、位、位、位、3232位还是位还是位还是位还是6464位表示位表示位表示位表示并没有在并没有在并没有在并没有在XMLXML中定义。而中定义。而中定义。而中定义。而W3CW3C制定的制定的制定的制定的XMLSchemaXMLSchema就是专就是专就是专就是专门解决这个问题的一套标准,它定义了一套标准的数据类门解决这个问题的一套标准,它定义了一套标准的数据类门解决这个问题的一套标准,它定义了一套标准的数据类门解决这个问题的一套标准,它定义了一套标准的数据类型,并给出了一种语言来

16、扩展这套数据类型,型,并给出了一种语言来扩展这套数据类型,型,并给出了一种语言来扩展这套数据类型,型,并给出了一种语言来扩展这套数据类型,WebWebServiceService平台就是用平台就是用平台就是用平台就是用XMLSchemaXMLSchema作为其数据类型系统的作为其数据类型系统的作为其数据类型系统的作为其数据类型系统的。1210.1.1 Web Service的核心标准SOAPSOAPSOAP(SimpleSOAP(Simple Object Access Protocol Object Access Protocol,简单对象访问,简单对象访问协议协议) )提供了标准的提供了标

17、准的RPC(RPC(远程过程调用协议远程过程调用协议) )方法来调用方法来调用Web ServiceWeb Service。SOAPSOAP规范中定义了规范中定义了SOAPSOAP消息的格式,以及怎样通过消息的格式,以及怎样通过HTTPHTTP协议来使用协议来使用SOAPSOAP。SOAPSOAP是基于是基于XMLXML和和XSD(XML Schemas Definition)XSD(XML Schemas Definition)的,的,其中其中XMLXML是是SOAPSOAP的数据编码方式。的数据编码方式。1310.1.1 Web Service的核心标准WSDLWSDLWSDL(WebWS

18、DL(WebServicesDescriptionLanguageServicesDescriptionLanguage,WebWebServicesServices描述语言描述语言描述语言描述语言 ) )是一种基于是一种基于是一种基于是一种基于XMLXML的,的,的,的,用于描述用于描述用于描述用于描述WebServiceWebService及及及及其操作、参数和返回值的语言其操作、参数和返回值的语言其操作、参数和返回值的语言其操作、参数和返回值的语言。因为是基于。因为是基于。因为是基于。因为是基于XMLXML的,所以的,所以的,所以的,所以WSDLWSDL既既既既是机器可阅读的,又是人可阅

19、读的,这将是一个很大的好处。不然是机器可阅读的,又是人可阅读的,这将是一个很大的好处。不然是机器可阅读的,又是人可阅读的,这将是一个很大的好处。不然是机器可阅读的,又是人可阅读的,这将是一个很大的好处。不然依靠依靠依靠依靠WebServiceWebService作者自身的即兴发挥,对作者自身的即兴发挥,对作者自身的即兴发挥,对作者自身的即兴发挥,对WebServiceWebService的描述将的描述将的描述将的描述将会变得混乱且不能被计算机解析。会变得混乱且不能被计算机解析。会变得混乱且不能被计算机解析。会变得混乱且不能被计算机解析。一些最新的开发工具既能根据一些最新的开发工具既能根据一些最

20、新的开发工具既能根据一些最新的开发工具既能根据WebServiceWebService生成生成生成生成WSDLWSDL文档,文档,文档,文档,又能通过导入又能通过导入又能通过导入又能通过导入WSDLWSDL文档,生成调用相应文档,生成调用相应文档,生成调用相应文档,生成调用相应WebServiceWebService的代码。的代码。的代码。的代码。1410.1.1 Web Service的核心标准UDDIUDDIUDDI(UniversalUDDI(UniversalDescriptionDiscoveryIntegrationDescriptionDiscoveryIntegration,统

21、一描述、发现和集成协议统一描述、发现和集成协议统一描述、发现和集成协议统一描述、发现和集成协议 ) )是是是是WebServiceWebService架构下核架构下核架构下核架构下核心的心的心的心的服务描述、发现和集成机制服务描述、发现和集成机制服务描述、发现和集成机制服务描述、发现和集成机制,其目的是在网上自动查,其目的是在网上自动查,其目的是在网上自动查,其目的是在网上自动查找找找找WebServiceWebService。一旦。一旦。一旦。一旦WebServiceWebService注册到注册到注册到注册到UDDIUDDI,客户就,客户就,客户就,客户就可以很方便地查找和定位到所需要的可

22、以很方便地查找和定位到所需要的可以很方便地查找和定位到所需要的可以很方便地查找和定位到所需要的WebServiceWebService。1510.1.2 Web Service体系架构服务提供者服务提供者服务提供者服务提供者(ServiceProvider)(ServiceProvider)从企业的角度看,这是服务的所有者。从体系结构的角度看,这从企业的角度看,这是服务的所有者。从体系结构的角度看,这从企业的角度看,这是服务的所有者。从体系结构的角度看,这从企业的角度看,这是服务的所有者。从体系结构的角度看,这是托管被访问服务的平台。是托管被访问服务的平台。是托管被访问服务的平台。是托管被访问

23、服务的平台。 服务请求者服务请求者服务请求者服务请求者(ServiceRequestor)(ServiceRequestor)从企业的角度看,这是要求满足特定功能的企业。从体系结构的从企业的角度看,这是要求满足特定功能的企业。从体系结构的从企业的角度看,这是要求满足特定功能的企业。从体系结构的从企业的角度看,这是要求满足特定功能的企业。从体系结构的角度看,这是寻找并调用服务,或启动与服务交互的应用程序。角度看,这是寻找并调用服务,或启动与服务交互的应用程序。角度看,这是寻找并调用服务,或启动与服务交互的应用程序。角度看,这是寻找并调用服务,或启动与服务交互的应用程序。服务请求者角色可以由浏览器

24、来担当,由人或无用户界面的程序服务请求者角色可以由浏览器来担当,由人或无用户界面的程序服务请求者角色可以由浏览器来担当,由人或无用户界面的程序服务请求者角色可以由浏览器来担当,由人或无用户界面的程序( (例如,另一个例如,另一个例如,另一个例如,另一个WebService)WebService)来控制它。来控制它。来控制它。来控制它。 服务注册中心服务注册中心服务注册中心服务注册中心(ServiceRegistry)(ServiceRegistry) 这是可搜索的服务描述注册中心,这是可搜索的服务描述注册中心,这是可搜索的服务描述注册中心,这是可搜索的服务描述注册中心,服务提供者在此发布他们的

25、服务描述。服务提供者在此发布他们的服务描述。服务提供者在此发布他们的服务描述。服务提供者在此发布他们的服务描述。1610.1.2 Web Service体系架构Publish(Publish(发布发布发布发布) )服务提供者发布服务描述以使服务可访问并且服务请求服务提供者发布服务描述以使服务可访问并且服务请求服务提供者发布服务描述以使服务可访问并且服务请求服务提供者发布服务描述以使服务可访问并且服务请求者可以查找它。者可以查找它。者可以查找它。者可以查找它。 Find(Find(查找查找查找查找) )服务请求者可以通过服务注册中心查找特定种类的服务。服务请求者可以通过服务注册中心查找特定种类的

26、服务。服务请求者可以通过服务注册中心查找特定种类的服务。服务请求者可以通过服务注册中心查找特定种类的服务。 Bind(Bind(绑定绑定绑定绑定) )服务请求者通过绑定调用服务提供者提供的服务。服务请求者通过绑定调用服务提供者提供的服务。服务请求者通过绑定调用服务提供者提供的服务。服务请求者通过绑定调用服务提供者提供的服务。17第10章 Web Service开发10.1Web服务概述服务概述10.2WEBService基础基础10.3XML基础基础10.4用于用于XML的的javaAPI(JAXP)10.5使用使用JAX-WS构建简单的构建简单的WebService10.6使用使用JAXB绑

27、定绑定XMLSchema10.7SAAJ10.8JAXR1810.2 WEB Service基础1010.2.1SOAP10.2.2WSDL10.2.3UDDI1910.2.1 SOAPSOAP(SimpleSOAP(SimpleObjectAccessProtocolObjectAccessProtocol,简单对象访问协,简单对象访问协,简单对象访问协,简单对象访问协议议议议) )是在分散或分布式的环境中交换信息的简单的协议,是是在分散或分布式的环境中交换信息的简单的协议,是是在分散或分布式的环境中交换信息的简单的协议,是是在分散或分布式的环境中交换信息的简单的协议,是一个基于一个基于一个

28、基于一个基于XMLXML的协议。的协议。的协议。的协议。SOAPSOAP在在在在WebServiceWebService中作为用于中作为用于中作为用于中作为用于XMLXML消息传递的一种非消息传递的一种非消息传递的一种非消息传递的一种非常普遍的协议,它包括四个部分:常普遍的协议,它包括四个部分:常普遍的协议,它包括四个部分:常普遍的协议,它包括四个部分: SOAPSOAP封装封装封装封装(envelop)(envelop),封装定义了一个描述消息中的内容是什么,封装定义了一个描述消息中的内容是什么,封装定义了一个描述消息中的内容是什么,封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接

29、受并处理它以及如何处理它们的框架;是谁发送的,谁应当接受并处理它以及如何处理它们的框架;是谁发送的,谁应当接受并处理它以及如何处理它们的框架;是谁发送的,谁应当接受并处理它以及如何处理它们的框架; SOAPSOAP编码规则编码规则编码规则编码规则(encodingrules)(encodingrules),用于表示应用程序需要使用的数,用于表示应用程序需要使用的数,用于表示应用程序需要使用的数,用于表示应用程序需要使用的数据类型的实例;据类型的实例;据类型的实例;据类型的实例; SOAPRPCSOAPRPC表示表示表示表示(RPCrepresentation)(RPCrepresentatio

30、n),表示远程过程调用和应答,表示远程过程调用和应答,表示远程过程调用和应答,表示远程过程调用和应答的协定;的协定;的协定;的协定; SOAPSOAP绑定绑定绑定绑定(binding)(binding),使用底层协议交换信息。,使用底层协议交换信息。,使用底层协议交换信息。,使用底层协议交换信息。虽然这四个部分都作为虽然这四个部分都作为虽然这四个部分都作为虽然这四个部分都作为SOAPSOAP的一部分定义的,但它们在功的一部分定义的,但它们在功的一部分定义的,但它们在功的一部分定义的,但它们在功能上是相交的、彼此独立的。特别的,信封和编码规则是能上是相交的、彼此独立的。特别的,信封和编码规则是能

31、上是相交的、彼此独立的。特别的,信封和编码规则是能上是相交的、彼此独立的。特别的,信封和编码规则是被定义在不同的被定义在不同的被定义在不同的被定义在不同的XMLXML命名空间命名空间命名空间命名空间(namespace)(namespace)中,这样使得定中,这样使得定中,这样使得定中,这样使得定义更加简单。义更加简单。义更加简单。义更加简单。2010.2.1 SOAPSOAPSOAP的两个主要设计目标是的两个主要设计目标是的两个主要设计目标是的两个主要设计目标是简单性简单性简单性简单性和和和和可扩展性可扩展性可扩展性可扩展性。这就。这就。这就。这就意味着有一些传统消息系统或分布式对象系统中的

32、某些意味着有一些传统消息系统或分布式对象系统中的某些意味着有一些传统消息系统或分布式对象系统中的某些意味着有一些传统消息系统或分布式对象系统中的某些性质将不是性质将不是性质将不是性质将不是SOAPSOAP规范的一部分。规范的一部分。规范的一部分。规范的一部分。比如:分布式垃圾收集比如:分布式垃圾收集比如:分布式垃圾收集比如:分布式垃圾收集 (Distributedgarbage(Distributedgarbagecollection)collection)、成批传送消息、成批传送消息、成批传送消息、成批传送消息( (BoxcarringBoxcarringorbatchingoforbatc

33、hingofmessages)messages)、对象引用、对象引用、对象引用、对象引用 (Objects-by-(Objects-by-referencereference(whichrequiresdistributedgarbagewhichrequiresdistributedgarbagecollectioncollection)) )、对象激活、对象激活、对象激活、对象激活 (Activation(Activation(whichwhichrequiresobjects-by-referencerequiresobjects-by-reference)) )。 2110.2.1 S

34、OAPSOAPSOAP可简单地理解为这样一个开放协议的组合可简单地理解为这样一个开放协议的组合可简单地理解为这样一个开放协议的组合可简单地理解为这样一个开放协议的组合SOAP=RPC+HTTP+XMLSOAP=RPC+HTTP+XML: 采用采用采用采用HTTPHTTP作为底层通讯协议;作为底层通讯协议;作为底层通讯协议;作为底层通讯协议; RPCRPC作为一致性的调用途径;作为一致性的调用途径;作为一致性的调用途径;作为一致性的调用途径; XMLXML作为数据传送的格式,允许服务提供者和服务客户经过防火作为数据传送的格式,允许服务提供者和服务客户经过防火作为数据传送的格式,允许服务提供者和服

35、务客户经过防火作为数据传送的格式,允许服务提供者和服务客户经过防火墙在墙在墙在墙在INTERNETINTERNET进行通讯交互。进行通讯交互。进行通讯交互。进行通讯交互。RPCRPC的描叙可能不太准确,因为的描叙可能不太准确,因为的描叙可能不太准确,因为的描叙可能不太准确,因为SOAPSOAP一开始构思就是一开始构思就是一开始构思就是一开始构思就是要实现平台与环境的无关性和独立性,每一个通过网络要实现平台与环境的无关性和独立性,每一个通过网络要实现平台与环境的无关性和独立性,每一个通过网络要实现平台与环境的无关性和独立性,每一个通过网络的远程调用都可以通过的远程调用都可以通过的远程调用都可以通

36、过的远程调用都可以通过SOAPSOAP封装起来,包括封装起来,包括封装起来,包括封装起来,包括DCE(DistributedDCE(DistributedComputingEnvironment)ComputingEnvironment)、RPCRPCCALLSCALLS、COM/DCOMCALLSCOM/DCOMCALLS、CORBACALLSCORBACALLS、JAVACALLSJAVACALLS等等。等等。等等。等等。2210.2.1 SOAP客户发送请求时,不管客户是什么平台,首先把请求转客户发送请求时,不管客户是什么平台,首先把请求转客户发送请求时,不管客户是什么平台,首先把请求转

37、客户发送请求时,不管客户是什么平台,首先把请求转换成换成换成换成XMLXML格式,格式,格式,格式,SOAPSOAP网关可自动执行这个转换。为了网关可自动执行这个转换。为了网关可自动执行这个转换。为了网关可自动执行这个转换。为了保证传送时参数、方法名、返回值的唯一性,保证传送时参数、方法名、返回值的唯一性,保证传送时参数、方法名、返回值的唯一性,保证传送时参数、方法名、返回值的唯一性,SOAPSOAP协协协协议使用了一个私有标记表,从而服务器的议使用了一个私有标记表,从而服务器的议使用了一个私有标记表,从而服务器的议使用了一个私有标记表,从而服务器的SOAPSOAP网关可网关可网关可网关可以正

38、确地解析;而使用以正确地解析;而使用以正确地解析;而使用以正确地解析;而使用XMLXML作为编码表现形式,提供了作为编码表现形式,提供了作为编码表现形式,提供了作为编码表现形式,提供了更高层次上的抽象,从而实现与平台和环境的无关。更高层次上的抽象,从而实现与平台和环境的无关。更高层次上的抽象,从而实现与平台和环境的无关。更高层次上的抽象,从而实现与平台和环境的无关。2310.2.2 WSDLWSDL(WebWSDL(WebServiceDescriptionLanguageServiceDescriptionLanguage,即,即,即,即WebWeb服务器描述语言服务器描述语言服务器描述语言

39、服务器描述语言) )是用是用是用是用XMLXML文档来描述文档来描述文档来描述文档来描述WebWeb服务的标准,服务的标准,服务的标准,服务的标准,是是是是WebWeb服务的接口定义语言,由服务的接口定义语言,由服务的接口定义语言,由服务的接口定义语言,由AribaAriba、IntelIntel、IBMIBM、MicrosoftMicrosoft等共同提出。通过等共同提出。通过等共同提出。通过等共同提出。通过WSDLWSDL,可描述,可描述,可描述,可描述WebWeb服务的服务的服务的服务的三个基本属性:三个基本属性:三个基本属性:三个基本属性: 服务做些什么服务做些什么服务做些什么服务做些

40、什么服务所提供的操作服务所提供的操作服务所提供的操作服务所提供的操作( (方法方法方法方法) ) 如何访问服务如何访问服务如何访问服务如何访问服务和服务交互的数据格式以及必要协议和服务交互的数据格式以及必要协议和服务交互的数据格式以及必要协议和服务交互的数据格式以及必要协议 服务位于何处服务位于何处服务位于何处服务位于何处协议相关的地址,如协议相关的地址,如协议相关的地址,如协议相关的地址,如URLURL2410.2.2 WSDLWSDLWSDL文档以端口集合的形式来描述文档以端口集合的形式来描述文档以端口集合的形式来描述文档以端口集合的形式来描述WebWeb服务,服务,服务,服务,WSDLW

41、SDL服服服服务描述包含对一组操作和消息的一个抽象定义,绑定到这务描述包含对一组操作和消息的一个抽象定义,绑定到这务描述包含对一组操作和消息的一个抽象定义,绑定到这务描述包含对一组操作和消息的一个抽象定义,绑定到这些操作和消息的一个具体协议,和这个绑定的一个网络端些操作和消息的一个具体协议,和这个绑定的一个网络端些操作和消息的一个具体协议,和这个绑定的一个网络端些操作和消息的一个具体协议,和这个绑定的一个网络端点规范。点规范。点规范。点规范。WSDLWSDL文档被分为两种类型:服务接口文档被分为两种类型:服务接口文档被分为两种类型:服务接口文档被分为两种类型:服务接口(service(serv

42、iceinterface)interface)和和和和 服务实现服务实现服务实现服务实现(serviceimplementations)(serviceimplementations)2510.2.2 WSDLWSDLWSDL文档在文档在文档在文档在WebServiceWebService的定义中使用下列元素:的定义中使用下列元素:的定义中使用下列元素:的定义中使用下列元素: TypesTypes- -数据类型定义的容器数据类型定义的容器数据类型定义的容器数据类型定义的容器; ; MessageMessage- -通信消息的数据结构的抽象类型化定义;通信消息的数据结构的抽象类型化定义;通信消息

43、的数据结构的抽象类型化定义;通信消息的数据结构的抽象类型化定义; OperationOperation- -对服务中所支持的操作的抽象描述;对服务中所支持的操作的抽象描述;对服务中所支持的操作的抽象描述;对服务中所支持的操作的抽象描述; PortTypePortType- -对于某个访问入口点类型所支持的操作的对于某个访问入口点类型所支持的操作的对于某个访问入口点类型所支持的操作的对于某个访问入口点类型所支持的操作的抽象集合;抽象集合;抽象集合;抽象集合; BindingBinding- -特定端口类型的具体协议和数据格式规范的特定端口类型的具体协议和数据格式规范的特定端口类型的具体协议和数据

44、格式规范的特定端口类型的具体协议和数据格式规范的绑定。绑定。绑定。绑定。 PortPort- -定义为协议定义为协议定义为协议定义为协议/ /数据格式绑定与具体数据格式绑定与具体数据格式绑定与具体数据格式绑定与具体WebWeb访问地址访问地址访问地址访问地址组合的单个服务访问;组合的单个服务访问;组合的单个服务访问;组合的单个服务访问; SrviceSrvice- -相关服务结点的集合相关服务结点的集合相关服务结点的集合相关服务结点的集合 。2610.2.3 UDDIUDDI(UniversalUDDI(UniversalDescriptionDescription,DiscoveryandD

45、iscoveryandIntegrationIntegration,即统一描述、发现与集成协议标准,即统一描述、发现与集成协议标准,即统一描述、发现与集成协议标准,即统一描述、发现与集成协议标准) )是一个是一个是一个是一个非常重要的创新。它是第一个由平台提供者、软件开发非常重要的创新。它是第一个由平台提供者、软件开发非常重要的创新。它是第一个由平台提供者、软件开发非常重要的创新。它是第一个由平台提供者、软件开发者、交易市场运营者、电子商务企业和全球商务领头羊者、交易市场运营者、电子商务企业和全球商务领头羊者、交易市场运营者、电子商务企业和全球商务领头羊者、交易市场运营者、电子商务企业和全球商

46、务领头羊为解决为解决为解决为解决B2BB2B电子商务的发展的局限性而一起提出的跨行电子商务的发展的局限性而一起提出的跨行电子商务的发展的局限性而一起提出的跨行电子商务的发展的局限性而一起提出的跨行业的解决方案,业的解决方案,业的解决方案,业的解决方案,是一套基于是一套基于是一套基于是一套基于WebWeb的、分布式的、为的、分布式的、为的、分布式的、为的、分布式的、为WebWeb服务提供的信息注册中心的实现标准规范服务提供的信息注册中心的实现标准规范服务提供的信息注册中心的实现标准规范服务提供的信息注册中心的实现标准规范,同时也包含,同时也包含,同时也包含,同时也包含一组使企业能将自身提供的一组

47、使企业能将自身提供的一组使企业能将自身提供的一组使企业能将自身提供的WebWeb服务注册服务注册服务注册服务注册以使得别的企以使得别的企以使得别的企以使得别的企业能够业能够业能够业能够发现发现发现发现的访问协议的实现标准。的访问协议的实现标准。的访问协议的实现标准。的访问协议的实现标准。 2710.2.3 UDDIUDDIUDDI计划是一个广泛的,开放的行业计划,它计划是一个广泛的,开放的行业计划,它计划是一个广泛的,开放的行业计划,它计划是一个广泛的,开放的行业计划,它使得商业实体能够使得商业实体能够使得商业实体能够使得商业实体能够 (1)(1)彼此发现;彼此发现;彼此发现;彼此发现; (2

48、)(2)定义它们怎样在定义它们怎样在定义它们怎样在定义它们怎样在internetinternet上互相作用,并在一个全上互相作用,并在一个全上互相作用,并在一个全上互相作用,并在一个全球的注册体系架构中共享信息。球的注册体系架构中共享信息。球的注册体系架构中共享信息。球的注册体系架构中共享信息。 UDDIUDDI是这样一种基础的系统构筑模块,它使商是这样一种基础的系统构筑模块,它使商是这样一种基础的系统构筑模块,它使商是这样一种基础的系统构筑模块,它使商业实体能够快速、方便地使用它们自身的企业应业实体能够快速、方便地使用它们自身的企业应业实体能够快速、方便地使用它们自身的企业应业实体能够快速、

49、方便地使用它们自身的企业应用软件来发现合适的商业对等实体,并以其实施用软件来发现合适的商业对等实体,并以其实施用软件来发现合适的商业对等实体,并以其实施用软件来发现合适的商业对等实体,并以其实施电子化的商业贸易。电子化的商业贸易。电子化的商业贸易。电子化的商业贸易。2810.2.3 UDDIUDDIUDDI同时也是同时也是同时也是同时也是WebWeb服务集成的一个体系框架。服务集成的一个体系框架。服务集成的一个体系框架。服务集成的一个体系框架。它包含了服务描述与发现的标准规范。它包含了服务描述与发现的标准规范。它包含了服务描述与发现的标准规范。它包含了服务描述与发现的标准规范。UDDIUDDI

50、规规规规范利用了范利用了范利用了范利用了W3CW3C和和和和InternetInternet工程任务组织工程任务组织工程任务组织工程任务组织(IETF)(IETF)的的的的很多标准作为其实现基础,比如很多标准作为其实现基础,比如很多标准作为其实现基础,比如很多标准作为其实现基础,比如XMLXML,HTTPHTTP和和和和域名服务域名服务域名服务域名服务(DNS)(DNS)这些协议。另外,在跨平台的设这些协议。另外,在跨平台的设这些协议。另外,在跨平台的设这些协议。另外,在跨平台的设计特性中,计特性中,计特性中,计特性中,UDDIUDDI主要采用了已经被提议给主要采用了已经被提议给主要采用了已经

51、被提议给主要采用了已经被提议给W3CW3C的规范的早期版本。的规范的早期版本。的规范的早期版本。的规范的早期版本。2910.2.3 UDDI通过这个开放性的计划,企业可以发布他们所期通过这个开放性的计划,企业可以发布他们所期通过这个开放性的计划,企业可以发布他们所期通过这个开放性的计划,企业可以发布他们所期望的在望的在望的在望的在WebWeb上实现商务流程对接的方式的相关信上实现商务流程对接的方式的相关信上实现商务流程对接的方式的相关信上实现商务流程对接的方式的相关信息和技术规范,这潜在地为息和技术规范,这潜在地为息和技术规范,这潜在地为息和技术规范,这潜在地为B2BB2B商务的成长提供商务的

52、成长提供商务的成长提供商务的成长提供了动力。了动力。了动力。了动力。UDDIUDDI将通过创建一个全球的、独立平将通过创建一个全球的、独立平将通过创建一个全球的、独立平将通过创建一个全球的、独立平台,运用台,运用台,运用台,运用InternetInternet发现商机、描述服务和综合商发现商机、描述服务和综合商发现商机、描述服务和综合商发现商机、描述服务和综合商务的开放式框架,使所有的贸易都从中获利。务的开放式框架,使所有的贸易都从中获利。务的开放式框架,使所有的贸易都从中获利。务的开放式框架,使所有的贸易都从中获利。 3010.2.3 UDDIUDDIUDDI计划不由任何一家现有的公司实际运

53、作。计划不由任何一家现有的公司实际运作。计划不由任何一家现有的公司实际运作。计划不由任何一家现有的公司实际运作。同时它也不是一个标准的实体或者是一个新的公同时它也不是一个标准的实体或者是一个新的公同时它也不是一个标准的实体或者是一个新的公同时它也不是一个标准的实体或者是一个新的公司。司。司。司。UDDIUDDI商业注册中心被作为一个支持商业注册中心被作为一个支持商业注册中心被作为一个支持商业注册中心被作为一个支持UDDIUDDI规规规规范的范的范的范的WebWeb服务来运作。最初,服务来运作。最初,服务来运作。最初,服务来运作。最初,AribaAriba,IBMIBM和和和和Microsoft

54、Microsoft将运作这个分布式的服务,但是额外将运作这个分布式的服务,但是额外将运作这个分布式的服务,但是额外将运作这个分布式的服务,但是额外的注册中心的访问入口仍然被期待着。一个访问的注册中心的访问入口仍然被期待着。一个访问的注册中心的访问入口仍然被期待着。一个访问的注册中心的访问入口仍然被期待着。一个访问入口的委员会入口的委员会入口的委员会入口的委员会(OperatorCouncil)(OperatorCouncil)将协助制定访将协助制定访将协助制定访将协助制定访问入口的方针和服务质量等问题。问入口的方针和服务质量等问题。问入口的方针和服务质量等问题。问入口的方针和服务质量等问题。

55、3110.2.3 UDDI 从从从从UDDIUDDI可以获得的直接收益包括:可以获得的直接收益包括:可以获得的直接收益包括:可以获得的直接收益包括: 具备具备具备具备UDDIUDDI能力的企业可以在能力的企业可以在能力的企业可以在能力的企业可以在InternetInternet上通过他们首选的上通过他们首选的上通过他们首选的上通过他们首选的企业应用,快速便捷地发现合适的商业实体并实现彼此企业应用,快速便捷地发现合适的商业实体并实现彼此企业应用,快速便捷地发现合适的商业实体并实现彼此企业应用,快速便捷地发现合适的商业实体并实现彼此之间的互操作,这将最终推动企业自身的经济收益。之间的互操作,这将最

56、终推动企业自身的经济收益。之间的互操作,这将最终推动企业自身的经济收益。之间的互操作,这将最终推动企业自身的经济收益。 为企业迅疾地参与全球化的为企业迅疾地参与全球化的为企业迅疾地参与全球化的为企业迅疾地参与全球化的InternetInternet经济提供了一个方经济提供了一个方经济提供了一个方经济提供了一个方便的发展道路。便的发展道路。便的发展道路。便的发展道路。 提供了一个为商业在一个简单的开放式环境中,循序渐提供了一个为商业在一个简单的开放式环境中,循序渐提供了一个为商业在一个简单的开放式环境中,循序渐提供了一个为商业在一个简单的开放式环境中,循序渐进地描述他们的服务和商业流程的途径。进

57、地描述他们的服务和商业流程的途径。进地描述他们的服务和商业流程的途径。进地描述他们的服务和商业流程的途径。 提供了一组规范,使企业能够在提供了一组规范,使企业能够在提供了一组规范,使企业能够在提供了一组规范,使企业能够在InternetInternet上调用服务并上调用服务并上调用服务并上调用服务并为他们的首选客户提供增值服务。为他们的首选客户提供增值服务。为他们的首选客户提供增值服务。为他们的首选客户提供增值服务。 32回顾:Web服务基础SOAP: Simple Object Access Protocol,简单对象访问,简单对象访问协议协议WSDL: Web Service Descri

58、ption Language,即,即Web服服务器描述语言务器描述语言UDDI: Universal Description,Discovery and Integration,即统一描述、发现与集成协议标准,即统一描述、发现与集成协议标准33第10章 Web Service开发10.1Web服务概述服务概述10.2WEBService基础基础10.3XML基础基础10.4用于用于XML的的javaAPI(JAXP)10.5使用使用JAX-WS构建简单的构建简单的WebService10.6使用使用JAXB绑定绑定XMLSchema10.7SAAJ10.8JAXR3410.3 XML基础10.

59、3.1XML标准标准10.3.2DTD10.3.3XMLSchema3510.3 XML基础XML(eXtensibleXML(eXtensibleMakeupLanguageMakeupLanguage,即可扩展标记语,即可扩展标记语,即可扩展标记语,即可扩展标记语言言言言) )是一种简单灵活的文本格式,可以作为创建新的标记是一种简单灵活的文本格式,可以作为创建新的标记是一种简单灵活的文本格式,可以作为创建新的标记是一种简单灵活的文本格式,可以作为创建新的标记语言的基础,以便在语言的基础,以便在语言的基础,以便在语言的基础,以便在文档发布和数据交换文档发布和数据交换文档发布和数据交换文档发布

60、和数据交换中使用。中使用。中使用。中使用。XMLXML基于万维网联盟基于万维网联盟基于万维网联盟基于万维网联盟 (W3C)(W3C)的工作小组发布的一系列标的工作小组发布的一系列标的工作小组发布的一系列标的工作小组发布的一系列标准。因此,非常适合准。因此,非常适合准。因此,非常适合准。因此,非常适合( (且不限于且不限于且不限于且不限于) )在基于在基于在基于在基于WebWeb的应用程序的应用程序的应用程序的应用程序中使用。中使用。中使用。中使用。XMLXML是一套定义语义标记的规则,这些标记将文档分成是一套定义语义标记的规则,这些标记将文档分成是一套定义语义标记的规则,这些标记将文档分成是一

61、套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,许多部件并对这些部件加以标识。它也是元标记语言,许多部件并对这些部件加以标识。它也是元标记语言,许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其它与特定领域有关的、语义的、结即定义了用于定义其它与特定领域有关的、语义的、结即定义了用于定义其它与特定领域有关的、语义的、结即定义了用于定义其它与特定领域有关的、语义的、结构化的标记语言的句法语言。构化的标记语言的句法语言。构化的标记语言的句法语言。构化的标记语言的句法语言。 3610.3 XML基础关于关于关于关于XMLXML要理解的第一件事是

62、,它不只是像超文本标记要理解的第一件事是,它不只是像超文本标记要理解的第一件事是,它不只是像超文本标记要理解的第一件事是,它不只是像超文本标记语言语言语言语言(HypertextMarkupLanguage(HypertextMarkupLanguage,HTML)HTML)或是格式或是格式或是格式或是格式化的程序。化的程序。化的程序。化的程序。 XMLXML是一种元标记语言。用户可以定义自己需要的标记。这些标是一种元标记语言。用户可以定义自己需要的标记。这些标是一种元标记语言。用户可以定义自己需要的标记。这些标是一种元标记语言。用户可以定义自己需要的标记。这些标记必须根据某些通用的原理来创建

63、,但是在标记的意义上,也具记必须根据某些通用的原理来创建,但是在标记的意义上,也具记必须根据某些通用的原理来创建,但是在标记的意义上,也具记必须根据某些通用的原理来创建,但是在标记的意义上,也具有相当的灵活性。有相当的灵活性。有相当的灵活性。有相当的灵活性。 XMLXML定义了一套元句法,与特定领域有关的标记语言定义了一套元句法,与特定领域有关的标记语言定义了一套元句法,与特定领域有关的标记语言定义了一套元句法,与特定领域有关的标记语言( (如如如如MusicMLMusicML、MathMLMathML和和和和CML)CML)都必须遵守。如果一个应用程序可都必须遵守。如果一个应用程序可都必须遵

64、守。如果一个应用程序可都必须遵守。如果一个应用程序可以理解这一元句法,那么它也就自动地能够理解所有的由此元语以理解这一元句法,那么它也就自动地能够理解所有的由此元语以理解这一元句法,那么它也就自动地能够理解所有的由此元语以理解这一元句法,那么它也就自动地能够理解所有的由此元语言建立起来的语言。言建立起来的语言。言建立起来的语言。言建立起来的语言。关于关于关于关于XMLXML要了解的第二件事是,要了解的第二件事是,要了解的第二件事是,要了解的第二件事是,XMLXML标记描述的是标记描述的是标记描述的是标记描述的是文档文档文档文档的结构和意义的结构和意义的结构和意义的结构和意义。它不描述页面元素的

65、格式化。可用样式。它不描述页面元素的格式化。可用样式。它不描述页面元素的格式化。可用样式。它不描述页面元素的格式化。可用样式单为文档增加格式化信息。文档本身只说明文档包括什单为文档增加格式化信息。文档本身只说明文档包括什单为文档增加格式化信息。文档本身只说明文档包括什单为文档增加格式化信息。文档本身只说明文档包括什么标记,而不是说明文档看起来是什么样的。么标记,而不是说明文档看起来是什么样的。么标记,而不是说明文档看起来是什么样的。么标记,而不是说明文档看起来是什么样的。3710.3 XML基础HotCopHotCopbyJacquesMoraliHenriBeloloandVictorWil

66、lisbyJacquesMoraliHenriBeloloandVictorWillisProducer:JacquesMoraliProducer:JacquesMoraliPublisher:PolyGramRecordsPublisher:PolyGramRecordsLength:6:20Length:6:20 Written:978Written:978 Artist:VillagePeopleArtist:VillagePeople HotCopHotCopJacquesMoraliJacquesMorali HenriBeloloHenriBeloloVictorWillisVi

67、ctorWillisJacquesMoraliJacquesMoraliPolyGramRecordsPolyGramRecords6:206:20 978978 VillagePeopleVillagePeople3810.3 XML基础XMLXML是一种类似于是一种类似于是一种类似于是一种类似于HTMLHTML的标记语言,但是它是被设计的标记语言,但是它是被设计的标记语言,但是它是被设计的标记语言,但是它是被设计用来用来用来用来描述数据描述数据描述数据描述数据的,重点是什么是数据,如何存放数据,的,重点是什么是数据,如何存放数据,的,重点是什么是数据,如何存放数据,的,重点是什么是数据,如

68、何存放数据,与描述信息相关;而与描述信息相关;而与描述信息相关;而与描述信息相关;而HTMLHTML是被设计用来显示数据的是被设计用来显示数据的是被设计用来显示数据的是被设计用来显示数据的,重点是显示数据以及如何显示数据更好,与显示信息相重点是显示数据以及如何显示数据更好,与显示信息相重点是显示数据以及如何显示数据更好,与显示信息相重点是显示数据以及如何显示数据更好,与显示信息相关。关。关。关。XMLXML不是不是不是不是HTMLHTML的替代品,的替代品,的替代品,的替代品,XMLXML和和和和HTMLHTML是两种不是两种不是两种不是两种不同用途的语言。同用途的语言。同用途的语言。同用途的

69、语言。 XMLXML被设计成什么都不做的,它只是用来组织、存储和被设计成什么都不做的,它只是用来组织、存储和被设计成什么都不做的,它只是用来组织、存储和被设计成什么都不做的,它只是用来组织、存储和发送信息。发送信息。发送信息。发送信息。XMLXML是自由的、可以扩展的;是自由的、可以扩展的;是自由的、可以扩展的;是自由的、可以扩展的; XMLXML使用文档类型定义使用文档类型定义使用文档类型定义使用文档类型定义(DTD)(DTD)或者模式或者模式或者模式或者模式(Schema)(Schema)来描述数来描述数来描述数来描述数据;据;据;据;XMLXML是一种跨平台的,与软、硬件无关的,处理信息

70、的是一种跨平台的,与软、硬件无关的,处理信息的是一种跨平台的,与软、硬件无关的,处理信息的是一种跨平台的,与软、硬件无关的,处理信息的工具;工具;工具;工具;3910.3 XML基础XMLXML的主要应用:的主要应用:的主要应用:的主要应用:作为配置文件:作为配置文件:作为配置文件:作为配置文件: SpringSpring StrutsStruts HibernateHibernate WebWeb应用应用应用应用 TomcatTomcat的的的的server.xmlserver.xml JBossJBoss EJBEJB作为数据传输的标准:作为数据传输的标准:作为数据传输的标准:作为数据传输

71、的标准: AJAXAJAX WebServiceWebService4010.3 XML基础标准XML技术XMLXML: XML1.0(XML1.0(第第第第2 2版版版版)W3C)W3C推荐标准推荐标准推荐标准推荐标准 当然是衍生出当然是衍生出当然是衍生出当然是衍生出XMLXML技术技术技术技术大树的主干。它在大树的主干。它在大树的主干。它在大树的主干。它在UnicodeUnicodeConsortiumUnicodeUnicodeConsortium技术技术技术技术报告和报告和报告和报告和ISOISO标准标准标准标准 的基础上定义了文本格式的严格规则,的基础上定义了文本格式的严格规则,的基

72、础上定义了文本格式的严格规则,的基础上定义了文本格式的严格规则,以及以及以及以及DocumentTypeDefinition(DocumentTypeDefinition(文档类型定义,文档类型定义,文档类型定义,文档类型定义,DTD)DTD)验验验验证语言证语言证语言证语言。 XML1.1XML1.1开发中开发中开发中开发中 是改变了结构良好的是改变了结构良好的是改变了结构良好的是改变了结构良好的XMLXML文档的定义的文档的定义的文档的定义的文档的定义的第一个修订版。第一个修订版。第一个修订版。第一个修订版。主要的变化是修订了主要的变化是修订了主要的变化是修订了主要的变化是修订了XMLXM

73、L规范中对字符的规范中对字符的规范中对字符的规范中对字符的处理处理处理处理,使其更自然地适应,使其更自然地适应,使其更自然地适应,使其更自然地适应UnicodeUnicode规范的变化,并通过引规范的变化,并通过引规范的变化,并通过引规范的变化,并通过引用用用用CharacterModelfortheWorldWideWeb(CharacterModelfortheWorldWideWeb(万维网字万维网字万维网字万维网字符模型符模型符模型符模型)1.0)1.0开发中开发中开发中开发中 ,提供了不同,提供了不同,提供了不同,提供了不同UnicodeUnicode版本字符的规版本字符的规版本字符

74、的规版本字符的规范化。范化。范化。范化。XML1.1XML1.1还还还还增加了行结束字符列表增加了行结束字符列表增加了行结束字符列表增加了行结束字符列表,新增加的,新增加的,新增加的,新增加的NELNEL用于在用于在用于在用于在IBMIBM大型机系统中表示行结束大型机系统中表示行结束大型机系统中表示行结束大型机系统中表示行结束(EOL)(EOL)。4110.3 XML基础标准XML技术XMLCatalogsXMLCatalogsXMLCatalogsOASISXMLCatalogsOASIS委员会规范委员会规范委员会规范委员会规范 定义了一种格式,指导定义了一种格式,指导定义了一种格式,指导定

75、义了一种格式,指导 XMLXML处理程序把处理程序把处理程序把处理程序把 XMLXML实体标识符解析成实际的文档。实体标识符解析成实际的文档。实体标识符解析成实际的文档。实体标识符解析成实际的文档。XMLNamespacesXMLNamespacesNamespacesinXML1.0W3CNamespacesinXML1.0W3C推荐标准推荐标准推荐标准推荐标准 提供了一种统一提供了一种统一提供了一种统一提供了一种统一命名命名命名命名 XMLXML文档中的元素和属性的机制。文档中的元素和属性的机制。文档中的元素和属性的机制。文档中的元素和属性的机制。XMLBaseXMLBaseXMLBase

76、W3CXMLBaseW3C推荐标准推荐标准推荐标准推荐标准 提供了一种联系提供了一种联系提供了一种联系提供了一种联系 XMLXML元素和元素和元素和元素和 URIURI方法,以便更精确地规定在相关的方法,以便更精确地规定在相关的方法,以便更精确地规定在相关的方法,以便更精确地规定在相关的XMLXML处理活动中如何解析处理活动中如何解析处理活动中如何解析处理活动中如何解析相对相对相对相对 URIURI。 XIncludeXInclude XMLInclusions(XMLInclusions(XIncludeXInclude)1.0)1.0开发中开发中开发中开发中 提供了一种合并提供了一种合并提

77、供了一种合并提供了一种合并 XMLXML文档的系统。文档的系统。文档的系统。文档的系统。XIncludeXInclude 通常用于希望将通常用于希望将通常用于希望将通常用于希望将XMLXML文档分成多个文档分成多个文档分成多个文档分成多个可管理的段的情况。可以根据需要分割文档,然后再使用可管理的段的情况。可以根据需要分割文档,然后再使用可管理的段的情况。可以根据需要分割文档,然后再使用可管理的段的情况。可以根据需要分割文档,然后再使用 XIncludeXInclude把文档合并回去。把文档合并回去。把文档合并回去。把文档合并回去。4210.3 XML基础标准XML技术XMLXMLInfoset

78、Infoset XMLInformationSetW3CXMLInformationSetW3C推荐标准推荐标准推荐标准推荐标准 也称为也称为也称为也称为 XMLXMLInfosetInfoset,定义了一种抽象的方式把,定义了一种抽象的方式把,定义了一种抽象的方式把,定义了一种抽象的方式把 XMLXML文档描述为一系列带有特定属性文档描述为一系列带有特定属性文档描述为一系列带有特定属性文档描述为一系列带有特定属性的对象,即信息项。的对象,即信息项。的对象,即信息项。的对象,即信息项。CanonicalXML(c14n)CanonicalXML(c14n)CanonicalXMLVersion

79、1.0W3CCanonicalXMLVersion1.0W3C推荐规范推荐规范推荐规范推荐规范 是一种生成是一种生成是一种生成是一种生成XMLXML文档物理表示的标准方法,称为规范化形式,用于统一文档物理表示的标准方法,称为规范化形式,用于统一文档物理表示的标准方法,称为规范化形式,用于统一文档物理表示的标准方法,称为规范化形式,用于统一XMLXML语法中不影响语义的几种变体。语法中不影响语义的几种变体。语法中不影响语义的几种变体。语法中不影响语义的几种变体。XPathXPath XMLPathLanguage(XMLPathLanguage(XPathXPath)1.0W3C)1.0W3C推

80、荐标准推荐标准推荐标准推荐标准 是处理是处理是处理是处理XMLXML文档部分的一种语法和处理模型。它包括一些通用表达式语文档部分的一种语法和处理模型。它包括一些通用表达式语文档部分的一种语法和处理模型。它包括一些通用表达式语文档部分的一种语法和处理模型。它包括一些通用表达式语言的特性,被设计成一种小型的语言,以便在言的特性,被设计成一种小型的语言,以便在言的特性,被设计成一种小型的语言,以便在言的特性,被设计成一种小型的语言,以便在XMLXML系统中进行应系统中进行应系统中进行应系统中进行应用程序中立的处理。用程序中立的处理。用程序中立的处理。用程序中立的处理。XPointerXPointer

81、 XPointerXPointerFrameworkW3CFrameworkW3C推荐标准推荐标准推荐标准推荐标准 定义了一种语言,可定义了一种语言,可定义了一种语言,可定义了一种语言,可用于于语音用用于于语音用用于于语音用用于于语音用 XMLXML文档中的片段。文档中的片段。文档中的片段。文档中的片段。4310.3 XML基础标准XML技术XLinkXLink XMLLinkingLanguage(XMLLinkingLanguage(XLinkXLink)1.0W3C)1.0W3C推荐标准推荐标准推荐标准推荐标准 提供提供提供提供了一种在了一种在了一种在了一种在 XMLXML文档中表示链接

82、的通用框架。文档中表示链接的通用框架。文档中表示链接的通用框架。文档中表示链接的通用框架。 RELAXNGRELAXNGRELAXNGOASISRELAXNGOASIS委员会规范和委员会规范和委员会规范和委员会规范和 ISOISO草案标准草案标准草案标准草案标准 是一种是一种是一种是一种XMLXML模式语言,即一种可用于定义和限制模式语言,即一种可用于定义和限制模式语言,即一种可用于定义和限制模式语言,即一种可用于定义和限制XMLXML词汇表的语言。词汇表的语言。词汇表的语言。词汇表的语言。W3CXMLSchemaW3CXMLSchemaXMLSchemaPart1XMLSchemaPart1

83、:StructuresStructures和和和和 XMLSchemaPartXMLSchemaPart2 2:DatatypesDatatypesW3CW3C推荐标准推荐标准推荐标准推荐标准 定义了另一种定义了另一种定义了另一种定义了另一种 XMLXML模式语言。模式语言。模式语言。模式语言。 第一部分用于约束文档的结构,第二部分则用于约束简单元素和第一部分用于约束文档的结构,第二部分则用于约束简单元素和第一部分用于约束文档的结构,第二部分则用于约束简单元素和第一部分用于约束文档的结构,第二部分则用于约束简单元素和属性的内容。属性的内容。属性的内容。属性的内容。 SchematronSche

84、matron SchematronSchematronAssertionLanguage1.5AssertionLanguage1.5社区标准和草案社区标准和草案社区标准和草案社区标准和草案 ISOISO标准标准标准标准 是一种模式语言,使用了不同于是一种模式语言,使用了不同于是一种模式语言,使用了不同于是一种模式语言,使用了不同于 DTDDTD、RELAXNGRELAXNG和和和和 WXSWXS的方法。的方法。的方法。的方法。4410.3.2 DTDDTD(DocumnetDTD(DocumnetTypeDefinitionTypeDefinition,即文件类型定义,即文件类型定义,即文件

85、类型定义,即文件类型定义) )是是是是XML1.0XML1.0版规格的一部分版规格的一部分版规格的一部分版规格的一部分, ,它是它是它是它是XMLXML文件的验证机制文件的验证机制文件的验证机制文件的验证机制, ,属于属于属于属于XMLXML文件组成的一部分文件组成的一部分文件组成的一部分文件组成的一部分。DTDDTD在在在在XMLXML文件所扮演的角色文件所扮演的角色文件所扮演的角色文件所扮演的角色就是就是就是就是定义定义定义定义XMLXML文件的元素架构、元素标记和属性文件的元素架构、元素标记和属性文件的元素架构、元素标记和属性文件的元素架构、元素标记和属性。DTDDTD是一种保证是一种保

86、证是一种保证是一种保证XMLXML文档格式正确的有效方法,可以通文档格式正确的有效方法,可以通文档格式正确的有效方法,可以通文档格式正确的有效方法,可以通过比较过比较过比较过比较XMLXML文档和文档和文档和文档和DTDDTD文件来看文档是否符合规范,元文件来看文档是否符合规范,元文件来看文档是否符合规范,元文件来看文档是否符合规范,元素和标签使用是否正确。一个素和标签使用是否正确。一个素和标签使用是否正确。一个素和标签使用是否正确。一个DTDDTD文档包含:文档包含:文档包含:文档包含:元素的定元素的定元素的定元素的定义规则,元素间关系的定义规则,元素可使用的属性,义规则,元素间关系的定义规

87、则,元素可使用的属性,义规则,元素间关系的定义规则,元素可使用的属性,义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则可使用的实体或符号规则可使用的实体或符号规则可使用的实体或符号规则。4510.3.2 DTD调用调用调用调用DTDDTD文件的方法有两种:文件的方法有两种:文件的方法有两种:文件的方法有两种: 直接包含在直接包含在直接包含在直接包含在XMLXML文档内的文档内的文档内的文档内的DTDDTD这种方法只需要在这种方法只需要在这种方法只需要在这种方法只需要在DOCTYPEDOCTYPE声明中插入一些特别的说明就可声明中插入一些特别的说明就可声明中插入一些特别的说

88、明就可声明中插入一些特别的说明就可以了。以了。以了。以了。 调用独立的调用独立的调用独立的调用独立的DTDDTD文件文件文件文件这种方法将这种方法将这种方法将这种方法将DTDDTD文档存为后缀文档存为后缀文档存为后缀文档存为后缀为为为为.dtd.dtd的文件,然后在的文件,然后在的文件,然后在的文件,然后在DOCTYPEDOCTYPE声明行中调用。声明行中调用。声明行中调用。声明行中调用。!DOCTYPE!DOCTYPEmyfile XMLXML轻松学习手册轻松学习手册轻松学习手册轻松学习手册ajieajie!ELEMENT(title,author)?xmlversion=1.0encodi

89、ng=GB2312?XMLXML轻松学习手册轻松学习手册轻松学习手册轻松学习手册ajieajie4610.3.2 DTDDTDDTD的常用的术语如下:的常用的术语如下:的常用的术语如下:的常用的术语如下: Schema(Schema(规划规划规划规划) )schemaschema是数据规则的描述,主要完成两件事:是数据规则的描述,主要完成两件事:是数据规则的描述,主要完成两件事:是数据规则的描述,主要完成两件事:a.a.它定义元素数据它定义元素数据它定义元素数据它定义元素数据类型和元素之间的关系;类型和元素之间的关系;类型和元素之间的关系;类型和元素之间的关系;b.b.它定义元素所能包含的内容

90、类型。它定义元素所能包含的内容类型。它定义元素所能包含的内容类型。它定义元素所能包含的内容类型。 DocumentTreeDocumentTree(文档树)(文档树)(文档树)(文档树)文档树是文档元素分级结构的形象表示。一个文档结构树包含根元文档树是文档元素分级结构的形象表示。一个文档结构树包含根元文档树是文档元素分级结构的形象表示。一个文档结构树包含根元文档树是文档元素分级结构的形象表示。一个文档结构树包含根元素,根元素是最顶级的元素。素,根元素是最顶级的元素。素,根元素是最顶级的元素。素,根元素是最顶级的元素。 ParentElement/ChildElementParentElemen

91、t/ChildElement父元素是指包含有其它元素的元素,被包含的元素称为它的子元素。父元素是指包含有其它元素的元素,被包含的元素称为它的子元素。父元素是指包含有其它元素的元素,被包含的元素称为它的子元素。父元素是指包含有其它元素的元素,被包含的元素称为它的子元素。 Parser(Parser(解析器解析器解析器解析器) )ParserParser是一种检查是一种检查是一种检查是一种检查XMLXML文档是否遵循文档是否遵循文档是否遵循文档是否遵循DTDDTD规范的工具软件。规范的工具软件。规范的工具软件。规范的工具软件。XMLXML的的的的parserparser发展为两类:一种是发展为两类

92、:一种是发展为两类:一种是发展为两类:一种是 非确认类非确认类非确认类非确认类parserparser,只检测文档是否,只检测文档是否,只检测文档是否,只检测文档是否遵守遵守遵守遵守XMLXML语法规则,是否用元素标识建立了文档树;另一种是语法规则,是否用元素标识建立了文档树;另一种是语法规则,是否用元素标识建立了文档树;另一种是语法规则,是否用元素标识建立了文档树;另一种是 确认确认确认确认类类类类parserparser,它不但检测文档语法,结构树,而且比较解析用户使用,它不但检测文档语法,结构树,而且比较解析用户使用,它不但检测文档语法,结构树,而且比较解析用户使用,它不但检测文档语法,

93、结构树,而且比较解析用户使用的元素标识是否遵守了相应的元素标识是否遵守了相应的元素标识是否遵守了相应的元素标识是否遵守了相应DTDDTD文件的规范。文件的规范。文件的规范。文件的规范。4710.3.3 XML SchemaXMLSchemaXMLSchema与与与与DTDDTD一样是一样是一样是一样是负责定义和描述负责定义和描述负责定义和描述负责定义和描述XMLXML文档的文档的文档的文档的结构和内容模式的结构和内容模式的结构和内容模式的结构和内容模式的。它可以定义。它可以定义。它可以定义。它可以定义XMLXML文档中存在哪些元文档中存在哪些元文档中存在哪些元文档中存在哪些元素和元素之间的关系

94、,并且可以定义元素和属性的数据素和元素之间的关系,并且可以定义元素和属性的数据素和元素之间的关系,并且可以定义元素和属性的数据素和元素之间的关系,并且可以定义元素和属性的数据类型。类型。类型。类型。XMLSchemaXMLSchema本身是一个本身是一个本身是一个本身是一个XMLXML文档,它符合文档,它符合文档,它符合文档,它符合XMLXML语法结构,可以用通用的语法结构,可以用通用的语法结构,可以用通用的语法结构,可以用通用的XMLXML解析器解析它。解析器解析它。解析器解析它。解析器解析它。DTDDTD的缺陷:的缺陷:的缺陷:的缺陷: 描述能力有限描述能力有限描述能力有限描述能力有限 没

95、有数据类型的支持没有数据类型的支持没有数据类型的支持没有数据类型的支持 约束定义能力不足约束定义能力不足约束定义能力不足约束定义能力不足 不够结构化不够结构化不够结构化不够结构化 未使用未使用未使用未使用XMLXML作为描述手段,作为描述手段,作为描述手段,作为描述手段,DTDDTD没有标准的编程接口没有标准的编程接口没有标准的编程接口没有标准的编程接口4810.3.3 XML SchemaXMLSchemaXMLSchema的优点有的优点有的优点有的优点有: : XMLSchemaXMLSchema基于基于基于基于XML,XML,没有专门的语法没有专门的语法没有专门的语法没有专门的语法 XM

96、LXML可以象其它可以象其它可以象其它可以象其它XMLXML文件一样解析和处理文件一样解析和处理文件一样解析和处理文件一样解析和处理 XMLSchemaXMLSchema支持一系列的数据类型支持一系列的数据类型支持一系列的数据类型支持一系列的数据类型( (intint、floatfloat、BooleanBoolean、datedate等等等等) ) XMLSchemaXMLSchema提供可扩充的数据模型提供可扩充的数据模型提供可扩充的数据模型提供可扩充的数据模型 XMLSchemaXMLSchema支持综合命名空间支持综合命名空间支持综合命名空间支持综合命名空间 XMLSchemaXMLS

97、chema支持属性组支持属性组支持属性组支持属性组XMLSchemaXMLSchema文档后缀名是文档后缀名是文档后缀名是文档后缀名是. .xsdxsd,完全符合,完全符合,完全符合,完全符合XMLXML语法,语法,语法,语法,根元素是根元素是根元素是根元素是,命名空间是,命名空间是,命名空间是,命名空间是xmlns:xsdxmlns:xsd=http:/www.w3.org/2001/XMLSchema=http:/www.w3.org/2001/XMLSchema,用元素用元素用元素用元素定义实例文档中的元素。定义实例文档中的元素。定义实例文档中的元素。定义实例文档中的元素。4910.3.

98、3 XML Schema例例例例1 1:XMLXMLSchema(greeting.xsdSchema(greeting.xsd) ):note HelloWorld!HelloWorld! =http:/www.w3.org/2001/XMLSchema / 5010.3.3 XML Schema例例例例2 2:note.dtdnote.dtd: XMLSchemaXMLSchema(note.xsdnote.xsd): : =qualified name=note / / / /5110.3.3 XML Schema对对对对DTDDTD引用:引用:引用:引用:对对对对XMLSchemaXM

99、LSchema引用:引用:引用:引用:!DOCTYPEnoteSYSTEMGeorgeGeorgeJohnJohnReminderReminderDontforgetthemeeting!Dontforgetthemeeting!noteGeorgeGeorgeJohnJohnReminderReminderDontforgetthemeeting!Dontforgetthemeeting!52第10章 Web Service开发10.1Web服务概述服务概述10.2WEBService基础基础10.3XML基础基础10.4用于用于XML的的javaAPI(JAXP)10.5使用使用JAX-W

100、S构建简单的构建简单的WebService10.6使用使用JAXB绑定绑定XMLSchema10.7SAAJ10.8JAXR5310.4 用于XML的Java API(JAXP)1010.4.1SAX10.4.2文文档对象模型档对象模型DOM10.4.3可可扩展样式表语言转化扩展样式表语言转化(XSLT)5410.4.1 SAXSAX(SimpleAPIforXMLSAX(SimpleAPIforXML,即,即,即,即XMLXML简单应用程序接口简单应用程序接口简单应用程序接口简单应用程序接口) )是一个是一个是一个是一个为访问为访问为访问为访问XMLXML文档提供的事件驱动的机制文档提供的事

101、件驱动的机制文档提供的事件驱动的机制文档提供的事件驱动的机制,是第一,是第一,是第一,是第一个被广泛采用的用个被广泛采用的用个被广泛采用的用个被广泛采用的用JavaJava编写的编写的编写的编写的XMLAPIXMLAPI,是一个事实上,是一个事实上,是一个事实上,是一个事实上的标准。的标准。的标准。的标准。SAXSAX是一个用于处理是一个用于处理是一个用于处理是一个用于处理XMLXML的事件驱动的的事件驱动的的事件驱动的的事件驱动的“ “推推推推” ”模型。它模型。它模型。它模型。它不是不是不是不是W3CW3C标准,但它是一个得到了广泛认可的标准,但它是一个得到了广泛认可的标准,但它是一个得到

102、了广泛认可的标准,但它是一个得到了广泛认可的APIAPI。大。大。大。大多数多数多数多数SAXSAX解析器在实现的时候都遵循标准。解析器在实现的时候都遵循标准。解析器在实现的时候都遵循标准。解析器在实现的时候都遵循标准。SAXSAX解析器解析器解析器解析器不象不象不象不象DOMDOM那样建立一个整个文档的树型表示,而是在读那样建立一个整个文档的树型表示,而是在读那样建立一个整个文档的树型表示,而是在读那样建立一个整个文档的树型表示,而是在读取文档时激活一系列的事件。这些事件被推给事件处理取文档时激活一系列的事件。这些事件被推给事件处理取文档时激活一系列的事件。这些事件被推给事件处理取文档时激活

103、一系列的事件。这些事件被推给事件处理器,而事件处理器则提供对文档内容的访问。器,而事件处理器则提供对文档内容的访问。器,而事件处理器则提供对文档内容的访问。器,而事件处理器则提供对文档内容的访问。5510.4.1 SAX事件处理器有三种基本类型:事件处理器有三种基本类型:事件处理器有三种基本类型:事件处理器有三种基本类型: 用于访问用于访问用于访问用于访问XMLDTDXMLDTD内容的内容的内容的内容的DTDHandlerDTDHandler 用于低级访问解析错误的用于低级访问解析错误的用于低级访问解析错误的用于低级访问解析错误的ErrorHandlerErrorHandler 用于访问文档内

104、容的最普遍类型用于访问文档内容的最普遍类型用于访问文档内容的最普遍类型用于访问文档内容的最普遍类型ContentHandlerContentHandler5610.4.1 SAXXMLinaNutshellXMLinaNutshellElliotteRustyHarold,W.ScottMeansElliotteRustyHarold,W.ScottMeans39.9539.95WhoMovedMyCheeseWhoMovedMyCheeseSpencer,M.D.Johnson,KennethH.BlanchardSpencer,M.D.Johnson,KennethH.Blanchard1

105、9.9519.955710.4.1 SAX首先,首先,首先,首先,编写一个编写一个编写一个编写一个ContentHandlerContentHandler实现类实现类实现类实现类publicclassMyContentHandlerextendsDefaultHandlerpublicclassMyContentHandlerextendsDefaultHandlerbooleanisTitle;booleanisTitle;publicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesatts)publicvoi

106、dstartElement(Stringuri,StringlocalName,StringqName,Attributesatts) if(localName.equals(title)if(localName.equals(title)isTitle=true;isTitle=true;publicvoidendElement(Stringuri,StringlocalName,StringqName)publicvoidendElement(Stringuri,StringlocalName,StringqName)if(localName.equals(title)if(localNa

107、me.equals(title)isTitle=false;isTitle=false; publicvoidcharacters(charchars,intstart,intlength)publicvoidcharacters(charchars,intstart,intlength)if(isTitle)if(isTitle)System.out.println(newString(chars,start,length);System.out.println(newString(chars,start,length); 5810.4.1 SAX其次,为其次,为其次,为其次,为SAXSAX

108、解析器配置用户定制的解析器配置用户定制的解析器配置用户定制的解析器配置用户定制的ContentHandlerContentHandler,然后该解析器开始处理然后该解析器开始处理然后该解析器开始处理然后该解析器开始处理XMLXML文档。该解析器产生相应的文档。该解析器产生相应的文档。该解析器产生相应的文档。该解析器产生相应的一些事件并在从头至尾读取文档时将这些事件推给一些事件并在从头至尾读取文档时将这些事件推给一些事件并在从头至尾读取文档时将这些事件推给一些事件并在从头至尾读取文档时将这些事件推给ContentHandlerContentHandler。SAXParsersaxParser=n

109、ewSAXParser();SAXParsersaxParser=newSAXParser();MyContentHandlermyHandler=newMyContentHandler();MyContentHandlermyHandler=newMyContentHandler();saxParser.setContentHandler(myHandler);saxParser.setContentHandler(myHandler); saxParser.parse(newFile(books.xml);saxParser.parse(newFile(books.xml);5910.4.

110、1 SAX与与与与DOMDOM相比,相比,相比,相比,SAXSAX解析器提供更佳的解析器提供更佳的解析器提供更佳的解析器提供更佳的性能优势性能优势性能优势性能优势。它提供。它提供。它提供。它提供对对对对XMLXML文档内容的有效低级访问。文档内容的有效低级访问。文档内容的有效低级访问。文档内容的有效低级访问。SAXSAX模型最大的优点是内存消耗小,因为整个文档无需模型最大的优点是内存消耗小,因为整个文档无需模型最大的优点是内存消耗小,因为整个文档无需模型最大的优点是内存消耗小,因为整个文档无需一次加载到内存中,这使一次加载到内存中,这使一次加载到内存中,这使一次加载到内存中,这使SAXSAX解

111、析器可以解析大于系统解析器可以解析大于系统解析器可以解析大于系统解析器可以解析大于系统内存的文档。内存的文档。内存的文档。内存的文档。另外,用户无需象在另外,用户无需象在另外,用户无需象在另外,用户无需象在DOMDOM中那样为所有节点创建对象。中那样为所有节点创建对象。中那样为所有节点创建对象。中那样为所有节点创建对象。最后,最后,最后,最后,SAX“SAX“推推推推” ”模型可用于广播环境,在这里可以注册模型可用于广播环境,在这里可以注册模型可用于广播环境,在这里可以注册模型可用于广播环境,在这里可以注册多个多个多个多个ContentHandlerContentHandler,并行接收事件,

112、而不是在一个管,并行接收事件,而不是在一个管,并行接收事件,而不是在一个管,并行接收事件,而不是在一个管道中只能一个接一个地处理。道中只能一个接一个地处理。道中只能一个接一个地处理。道中只能一个接一个地处理。6010.4.1 SAXSAXSAX的缺点是用户的缺点是用户的缺点是用户的缺点是用户必须实现处理所有到来的事件的事件必须实现处理所有到来的事件的事件必须实现处理所有到来的事件的事件必须实现处理所有到来的事件的事件处理程序处理程序处理程序处理程序。用户必须在用户的应用程序代码中维护这个。用户必须在用户的应用程序代码中维护这个。用户必须在用户的应用程序代码中维护这个。用户必须在用户的应用程序代

113、码中维护这个事件状态。因为事件状态。因为事件状态。因为事件状态。因为SAXSAX解析器不能交流元信息,如解析器不能交流元信息,如解析器不能交流元信息,如解析器不能交流元信息,如DOMDOM的的的的父父父父/ /子支持,所以用户必须跟踪解析器处在文档层次的哪子支持,所以用户必须跟踪解析器处在文档层次的哪子支持,所以用户必须跟踪解析器处在文档层次的哪子支持,所以用户必须跟踪解析器处在文档层次的哪个位置。这样,用户的文档越复杂,用户的应用逻辑就个位置。这样,用户的文档越复杂,用户的应用逻辑就个位置。这样,用户的文档越复杂,用户的应用逻辑就个位置。这样,用户的文档越复杂,用户的应用逻辑就越复杂。虽然没

114、有必要一次将整个文档加载到内存中,越复杂。虽然没有必要一次将整个文档加载到内存中,越复杂。虽然没有必要一次将整个文档加载到内存中,越复杂。虽然没有必要一次将整个文档加载到内存中,但但但但SAXSAX解析器仍然需要解析整个文档,这点和解析器仍然需要解析整个文档,这点和解析器仍然需要解析整个文档,这点和解析器仍然需要解析整个文档,这点和DOMDOM一样。一样。一样。一样。6110.4.2 文档对象模型DOMDOMDOM(DocumentObjectModelDocumentObjectModel,即文档对象模型)是,即文档对象模型)是,即文档对象模型)是,即文档对象模型)是一个来自一个来自一个来自

115、一个来自W3CW3C的成熟标准。它是一个基于树型的解析技的成熟标准。它是一个基于树型的解析技的成熟标准。它是一个基于树型的解析技的成熟标准。它是一个基于树型的解析技术,它在内存中构建起一棵完整的解析树。它可以实现术,它在内存中构建起一棵完整的解析树。它可以实现术,它在内存中构建起一棵完整的解析树。它可以实现术,它在内存中构建起一棵完整的解析树。它可以实现对整个对整个对整个对整个XMLXML文档的全面、动态访问。文档的全面、动态访问。文档的全面、动态访问。文档的全面、动态访问。6210.4.2 文档对象模型DOM6310.4.2 文档对象模型DOM虽然内存树结构提供了很好的导航支持,但仍有一些解

116、析策略问题虽然内存树结构提供了很好的导航支持,但仍有一些解析策略问题虽然内存树结构提供了很好的导航支持,但仍有一些解析策略问题虽然内存树结构提供了很好的导航支持,但仍有一些解析策略问题需要考虑。需要考虑。需要考虑。需要考虑。整个整个整个整个XMLXML文档必须一次解析完成,不可能只做部分解析。文档必须一次解析完成,不可能只做部分解析。文档必须一次解析完成,不可能只做部分解析。文档必须一次解析完成,不可能只做部分解析。在内存中加载整个文档和构建完整树结构成本很高,尤其当文档非常大在内存中加载整个文档和构建完整树结构成本很高,尤其当文档非常大在内存中加载整个文档和构建完整树结构成本很高,尤其当文档

117、非常大在内存中加载整个文档和构建完整树结构成本很高,尤其当文档非常大的时候。典型地,的时候。典型地,的时候。典型地,的时候。典型地,DOMDOM树的容量比文档容量要大一个数量级,所以它要树的容量比文档容量要大一个数量级,所以它要树的容量比文档容量要大一个数量级,所以它要树的容量比文档容量要大一个数量级,所以它要消耗大量内存。消耗大量内存。消耗大量内存。消耗大量内存。一般的一般的一般的一般的DOMDOM节点类型在互操作性上有优势,但对于对象类型绑定也许不节点类型在互操作性上有优势,但对于对象类型绑定也许不节点类型在互操作性上有优势,但对于对象类型绑定也许不节点类型在互操作性上有优势,但对于对象类

118、型绑定也许不是最好的。是最好的。是最好的。是最好的。DOMParserparser=newDOMParser();parser.parse(books.xml);Documentdocument=parser.getDocument();NodeListNodeListnodes=nodes=document.getElementsByTagName(titledocument.getElementsByTagName(title););while(intwhile(inti=0;ii=0;inodes.lengthnodes.length();i+)();i+) ElementElement

119、titleElemtitleElem=(=(Element)nodes.item(iElement)nodes.item(i); );NodeNodechildNodechildNode=titleElem.getFirstChildtitleElem.getFirstChild();();if(if(childNodechildNode instanceofinstanceofText)Text)System.out.println(BookSystem.out.println(Booktitleis:+titleis:+childNode.getNodeValuechildNode.get

120、NodeValue();(); 6410.4.3 可扩展样式表语言转化(XSLT)XSLTXSLT(XSLTransformationsXSLTransformations)是由)是由)是由)是由XSLXSL( (eXtensibleeXtensibleStylesheetLanguageStylesheetLanguage,即可扩展样式表语言,即可扩展样式表语言,即可扩展样式表语言,即可扩展样式表语言) )发展而来发展而来发展而来发展而来的,即的,即的,即的,即XSLXSL转换。转换。转换。转换。XSLTXSLT是是是是W3CW3C标准,是一种基于标准,是一种基于标准,是一种基于标准,是一种

121、基于XMLXML的语言,用于将一类(的语言,用于将一类(的语言,用于将一类(的语言,用于将一类(classclass)XMLXML文档转换成另一种文档转换成另一种文档转换成另一种文档转换成另一种XMLXML文档,或者可被浏览器识别的其它类型的文档,比文档,或者可被浏览器识别的其它类型的文档,比文档,或者可被浏览器识别的其它类型的文档,比文档,或者可被浏览器识别的其它类型的文档,比如如如如HTMLHTML和和和和XHTMLXHTML。通常,。通常,。通常,。通常,XSLTXSLT是通过把每个是通过把每个是通过把每个是通过把每个XMLXML元素转换为元素转换为元素转换为元素转换为(X)HTML(X

122、)HTML元素来完成这项工作的。元素来完成这项工作的。元素来完成这项工作的。元素来完成这项工作的。6510.4.3 可扩展样式表语言转化(XSLT)描述转化过程的一种通常的说法是:描述转化过程的一种通常的说法是:描述转化过程的一种通常的说法是:描述转化过程的一种通常的说法是:XSLTXSLT把把把把 XMLXML源树源树源树源树转换为转换为转换为转换为 XMLXML结果树。在转换过程中,结果树。在转换过程中,结果树。在转换过程中,结果树。在转换过程中,XSLTXSLT使用使用使用使用 XPathXPath 来定义源文档中可匹配一个或多个预定义模板的部分。来定义源文档中可匹配一个或多个预定义模板

123、的部分。来定义源文档中可匹配一个或多个预定义模板的部分。来定义源文档中可匹配一个或多个预定义模板的部分。一旦匹配被找到,一旦匹配被找到,一旦匹配被找到,一旦匹配被找到,XSLTXSLT就会把源文档的匹配部分转换就会把源文档的匹配部分转换就会把源文档的匹配部分转换就会把源文档的匹配部分转换为结果文档。为结果文档。为结果文档。为结果文档。6610.4.3 可扩展样式表语言转化(XSLT)?xml-? EmpireBurlesqueEmpireBurlesqueBobDylanBobDylanUSAUSAColumbiaColumbia10.9010.9019851985/ 6710.4.3 可扩展

124、样式表语言转化(XSLT) MyCDCollectionMyCDCollection TitleTitleArtistArtist 68第10章 Web Service开发10.1Web服务概述服务概述10.2WEBService基础基础10.3XML基础基础10.4用于用于XML的的javaAPI(JAXP)10.5使用使用JAX-WS构建简单的构建简单的WebService10.6使用使用JAXB绑定绑定XMLSchema10.7SAAJ10.8JAXR6910.5 使用JAX-WS构建简单的Web Service1010.5.1所所需要的需要的Endpoint1010.5.2编编写实现的

125、类写实现的类10.5.3绑绑定、打包、发布定、打包、发布WebService10.5.4没没有客户端的情况下测试有客户端的情况下测试WebService10.5.5简简单的单的WebService客户端客户端7010.5 使用JAX-WS构建简单的Web ServiceWebWeb服务(服务(服务(服务(WebServicesWebServices)在)在)在)在J2EE1.4J2EE1.4平台上平台上平台上平台上的实现是的实现是的实现是的实现是JAX-RPCJAX-RPC,而到了,而到了,而到了,而到了JAVAEE5JAVAEE5上,上,上,上,SunSun采用了新的采用了新的采用了新的采用

126、了新的WebServiceWebService实现规范实现规范实现规范实现规范JAX-WSJAX-WS。JAX-RPCJAX-RPC与与与与JAX-WSJAX-WS最大的不同是编程模式的最大的不同是编程模式的最大的不同是编程模式的最大的不同是编程模式的差别。差别。差别。差别。JavaEE5JavaEE5由于是基于由于是基于由于是基于由于是基于JDK1.5JDK1.5的新的新的新的新JavaJava语语语语言特性,在言特性,在言特性,在言特性,在JAX-WSJAX-WS使用了大量的标注使用了大量的标注使用了大量的标注使用了大量的标注( (annotationannotation) ), 因而减少

127、了因而减少了因而减少了因而减少了WebServicesWebServices的代的代的代的代码量与部署工作,自然也简化了开发。码量与部署工作,自然也简化了开发。码量与部署工作,自然也简化了开发。码量与部署工作,自然也简化了开发。7110.5.1 所需要的EndpointEndpointEndpoint(WebWeb服务端点)从服务端点)从服务端点)从服务端点)从JAX-WS2.0JAX-WS2.0开开开开始,包层次结构为始,包层次结构为始,包层次结构为始,包层次结构为javax.xml.ws.Endpointjavax.xml.ws.Endpoint。可。可。可。可以使用在此类中定义的静态方法

128、创建端点。一个以使用在此类中定义的静态方法创建端点。一个以使用在此类中定义的静态方法创建端点。一个以使用在此类中定义的静态方法创建端点。一个端点总是绑定到一个端点总是绑定到一个端点总是绑定到一个端点总是绑定到一个 BindingBinding和一个实现者,和一个实现者,和一个实现者,和一个实现者,这两项都是在创建端点时设置的。这两项都是在创建端点时设置的。这两项都是在创建端点时设置的。这两项都是在创建端点时设置的。 端点要么处端点要么处端点要么处端点要么处于已发布状态,要么处于未发布状态。可以使用于已发布状态,要么处于未发布状态。可以使用于已发布状态,要么处于未发布状态。可以使用于已发布状态,

129、要么处于未发布状态。可以使用 publishpublish方法开始发布端点,此时端点开始接受方法开始发布端点,此时端点开始接受方法开始发布端点,此时端点开始接受方法开始发布端点,此时端点开始接受传入请求。相反,可以使用传入请求。相反,可以使用传入请求。相反,可以使用传入请求。相反,可以使用 stopstop方法停止接受方法停止接受方法停止接受方法停止接受传入请求并取消端点。一旦停止,就不能再次发传入请求并取消端点。一旦停止,就不能再次发传入请求并取消端点。一旦停止,就不能再次发传入请求并取消端点。一旦停止,就不能再次发布该端点。布该端点。布该端点。布该端点。端点可以使一个元数据文档(如端点可以

130、使一个元数据文档(如端点可以使一个元数据文档(如端点可以使一个元数据文档(如 WSDLWSDL和和和和 XMLXMLSchemaSchema文档)列表与之绑定。发布时,文档)列表与之绑定。发布时,文档)列表与之绑定。发布时,文档)列表与之绑定。发布时,JAX-JAX-WSWS实现将根据实现者上存在的注释,尽可能多实现将根据实现者上存在的注释,尽可能多实现将根据实现者上存在的注释,尽可能多实现将根据实现者上存在的注释,尽可能多地重用这些元数据,而不是生成新的元数据。地重用这些元数据,而不是生成新的元数据。地重用这些元数据,而不是生成新的元数据。地重用这些元数据,而不是生成新的元数据。7210.5

131、.1 所需要的EndpointJavaAPIforXMLWebServicesJavaAPIforXMLWebServices( (JAX-WSJAX-WS) )2.02.0是是是是JavaEE5JavaEE5平台的一个重要的部分。作为平台的一个重要的部分。作为平台的一个重要的部分。作为平台的一个重要的部分。作为JavaJavaAPIforXML-basedRPC1.1APIforXML-basedRPC1.1(JAX-RPCJAX-RPC)的)的)的)的后续版本,在后续版本,在后续版本,在后续版本,在JAX-RPC1.1JAX-RPC1.1中中中中, ,开发人员需要写开发人员需要写开发人员需

132、要写开发人员需要写一个接口类一个接口类一个接口类一个接口类ServiceEndpointInterface(SEI),ServiceEndpointInterface(SEI),在在在在JAX-WS2.0JAX-WS2.0中中中中, ,开发人员一上来就可以直接写自开发人员一上来就可以直接写自开发人员一上来就可以直接写自开发人员一上来就可以直接写自己的实现类。通过使用己的实现类。通过使用己的实现类。通过使用己的实现类。通过使用annotations,annotations,自动生成自动生成自动生成自动生成SEISEI和其它一些文件和其它一些文件和其它一些文件和其它一些文件. .这样有助于开发人员

133、专注于这样有助于开发人员专注于这样有助于开发人员专注于这样有助于开发人员专注于自己想开发的部分自己想开发的部分自己想开发的部分自己想开发的部分, ,而不必要地分散精力去维护而不必要地分散精力去维护而不必要地分散精力去维护而不必要地分散精力去维护其它的一些附属文件。其它的一些附属文件。其它的一些附属文件。其它的一些附属文件。7310.5.2 编写实现的类编写一个实现两个数相加的类编写一个实现两个数相加的类编写一个实现两个数相加的类编写一个实现两个数相加的类Caculator.javaCaculator.javapackageendpoint;packageendpoint;importimpor

134、tjavax.jws.WebServicejavax.jws.WebService; ;importimportjavax.jws.WebMethodjavax.jws.WebMethod; ;WebServiceWebService( (name=Calculator,name=Calculator,serviceNameserviceName=CalculatorServiceCalculatorService, ,targetNamespacetargetNamespace=http:/=http:/ ) )publicclassCalculatorpublicclassCalculat

135、orpublicCalculator()publicCalculator() WebMethod(operationNameWebMethod(operationName=add,actionadd,action=urn:Addurn:Add)PublicPublicintint add(intadd(int i,inti,intj)j)intintk=k=i+ji+j; ;System.out.println(i+jSystem.out.println(i+j=+k);=+k);returnk;returnk; 7410.5.2 编写实现的类一个正确的端点实现类必须包含有一个一个正确的端点实

136、现类必须包含有一个一个正确的端点实现类必须包含有一个一个正确的端点实现类必须包含有一个WebServiceWebService注释。这个注释标注这个类将作注释。这个注释标注这个类将作注释。这个注释标注这个类将作注释。这个注释标注这个类将作为一个为一个为一个为一个webweb服务对外开放。服务对外开放。服务对外开放。服务对外开放。WebServiceWebService的的的的namename属性表明了属性表明了属性表明了属性表明了webweb服务描述语言服务描述语言服务描述语言服务描述语言(WSDL)(WSDL)里的里的里的里的端口类型端口类型端口类型端口类型(portType)(portTy

137、pe)。WebMethodWebMethod,被它注释过的方法说明将它以,被它注释过的方法说明将它以,被它注释过的方法说明将它以,被它注释过的方法说明将它以一个一个一个一个webweb服务的方法暴露出来,被其它应用来调服务的方法暴露出来,被其它应用来调服务的方法暴露出来,被其它应用来调服务的方法暴露出来,被其它应用来调用。用。用。用。WebMethodWebMethod注释里的注释里的注释里的注释里的operationNameoperationName声声声声明了明了明了明了WSDLWSDL里的一个元素里的一个元素里的一个元素里的一个元素WSDLoperationWSDLoperation(在

138、(在(在(在这个例子里是这个例子里是这个例子里是这个例子里是” ”add”add”), ,另外一个属性另外一个属性另外一个属性另外一个属性actionaction=(=(urn:Addurn:Add),),它为它为它为它为WSDLWSDL还有一些从这个还有一些从这个还有一些从这个还有一些从这个webweb服务操作服务操作服务操作服务操作(webserviceoperation)(webserviceoperation)生成的元素声生成的元素声生成的元素声生成的元素声明了一个命名空间。这两个属性都是可选的。明了一个命名空间。这两个属性都是可选的。明了一个命名空间。这两个属性都是可选的。明了一个命

139、名空间。这两个属性都是可选的。7510.5.3 绑定、打包、发布Web ServiceWebWeb服务可以绑定成服务可以绑定成服务可以绑定成服务可以绑定成servletservlet的形式或者无状态的形式或者无状态的形式或者无状态的形式或者无状态的的的的sessionbeansessionbean形式打包成形式打包成形式打包成形式打包成WebArchiveWebArchive(WAR)(WAR)文件。文件。文件。文件。为了把这个服务打包成一个为了把这个服务打包成一个为了把这个服务打包成一个为了把这个服务打包成一个WARWAR文件,定位到文件,定位到文件,定位到文件,定位到jaxws-techt

140、ipjaxws-techtip文件夹,并且在文件夹,并且在文件夹,并且在文件夹,并且在DOSDOS窗口上运行窗口上运行窗口上运行窗口上运行下面的命令:下面的命令:下面的命令:下面的命令:antpkg-warantpkg-war7610.5.4 没有客户端的情况下测试Web Service如果开发这个如果开发这个如果开发这个如果开发这个WebServiceWebService的的的的IDEIDE采用采用采用采用NetBeansNetBeansIDE5.5IDE5.5, 应用服务器采用应用服务器采用应用服务器采用应用服务器采用SunJavaSunJavaSystemApplicationServe

141、r9.0SystemApplicationServer9.0,则可以方便,则可以方便,则可以方便,则可以方便地实现在没有客户端的情况下测试地实现在没有客户端的情况下测试地实现在没有客户端的情况下测试地实现在没有客户端的情况下测试WebServiceWebService。因为因为因为因为NetBeansNetBeansIDE5.5IDE5.5中集成了中集成了中集成了中集成了 SunJavaSunJavaSystemApplicationServerSystemApplicationServer提供的提供的提供的提供的 TesterTester应应应应用程序,而且它允许用户输入值并对其进行测试。用

142、程序,而且它允许用户输入值并对其进行测试。用程序,而且它允许用户输入值并对其进行测试。用程序,而且它允许用户输入值并对其进行测试。7710.5.4 没有客户端的情况下测试Web Service具体方法如下:具体方法如下:具体方法如下:具体方法如下:右键单击项目节点,选择右键单击项目节点,选择右键单击项目节点,选择右键单击项目节点,选择“ “属性属性属性属性” ”,然后单击,然后单击,然后单击,然后单击“ “运行运行运行运行” ”。如。如。如。如果使用的是果使用的是果使用的是果使用的是 SunJavaSystemApplicationServerSunJavaSystemApplicationS

143、erver,在,在,在,在“ “相对相对相对相对 URL”URL”字段中键入:字段中键入:字段中键入:字段中键入:/ /CalculatorServiceCalculatorService?Tester?Tester右键单击项目节点,然后选择右键单击项目节点,然后选择右键单击项目节点,然后选择右键单击项目节点,然后选择“ “运行项目运行项目运行项目运行项目” ”。 IDEIDE将启将启将启将启动应用服务器、生成应用程序,并在浏览器中打开动应用服务器、生成应用程序,并在浏览器中打开动应用服务器、生成应用程序,并在浏览器中打开动应用服务器、生成应用程序,并在浏览器中打开 testertester页

144、(如果已将页(如果已将页(如果已将页(如果已将 WebWeb服务部署到服务部署到服务部署到服务部署到 SunJavaSunJavaSystemApplicationServerSystemApplicationServer)。此时页面上提示键入两)。此时页面上提示键入两)。此时页面上提示键入两)。此时页面上提示键入两个数字作为个数字作为个数字作为个数字作为addadd方法的两个参数,点击方法的两个参数,点击方法的两个参数,点击方法的两个参数,点击“ “add”add”按钮后页按钮后页按钮后页按钮后页面上就会显示输入两个参数的和。此时说明面上就会显示输入两个参数的和。此时说明面上就会显示输入两个参数的和。此时说明面上就会显示输入两个参数的和。此时说明WebWebServiceService已经创建、部署成功。已经创建、部署成功。已经创建、部署成功。已经创建、部署成功。7810.5.5 简单的Web Service客户端构建客户端的步骤如下:构建客户端的步骤如下:构建客户端的步骤如下:构建客户端的步骤如下:编写客户端编写客户端编写客户端编写客户端生成编绎这个客户端必须要有的可移植制品生成编绎这个客户端必须要有的可移植制品生成编绎这个客户端必须要有的可移植制品生成编绎这个客户端必须要有的可移植制品编译客户端编译客户端编译客户端编译客户端运行客户端运行客户端运行客户端运行客户端79

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号