内容简介 Web服务正在使传统企业商务发生变革,它可以使各个单独的应用程序能够彼此通信、彼此交换商务数据。现在,J2EE应用遍布整个Web服务平台。但是,用户如何在这一蓬勃发展的领域中遨游呢?本书作者Richard Monson-Haefel为需要了解用于Web服务和Web服务标准的J2EE API的Java开发人员提供了权威的指导,全面介绍了如何使用J2EE技术开发和部署Web服务,并详细阐述了由Web服务互操作性组织(WS-I)发布的标准,以便最大可能地实现互操作性。作者还深入探讨了Web服务标准、J2EE 1.4 Web Services API及组件等高级主题。此外,本书附录还提供了大量实用参考信息,包括XML正则表达式、Base64编码、DTD、SwA、RPC/Encoded SOAP通信等,以便开发人员更深入地理解和掌握J2EE技术、API与企业应用程序,以及基于Web的应用程序集成。
序 言 本书介绍了由Web服务互操作性组织的Basic Profile 1.0认可的各种Web服务标准,因为这些标准在生产中已经得到了验证,而且J2EE Web服务平台需要这些服务。本书还介绍了Web服务特有的J2EE API与组件。实际上,主要Web服务标准(XML、SOAP、JAXP和UDDI)以及J2EE Web Services API(JAX-RPC、SAAJ、JAXR和JAXP)非常复杂,读者要想掌握这些内容需要花时间学习本书。本书通俗易懂,具有极高的参考价值。 Web服务的重要性 不断发展的技术使得传媒业发生了巨大的变化,并最终得以普及。World Wide Web、Java技术以及XML似乎无处不在,这些技术均快速得以应用,而且在当今已成为企业级计算的主要技术。 Web服务最早出现于2000年,也是不断发展的技术。Web服务是随着传媒业的巨大扩张出现的,但Web服务已经得到商务活动的认可,并开始被大量开发人员采纳。如果读者在2003年之前还没有涉及Web服务,请不要着急,因为还没有错过太多机会。Web服务发展的头两年应该是Web服务的试用期。当时,Web服务社团定义了丰富的规范,并且在实际使用这些规范时发现了大量实际问题。然而,2003年标志着Web服务开始快速成长。如果读者只是在Web服务的潮流旁观望的话,那么就会错失良机。读者应该使自己成为新技术的先行者、将自己投身到分布式计算历史的重大革新中。 学习本书需要的预备知识 本书适用于希望学习Web服务以及由J2EE定义的相关API的Java开发人员。本书更像是一本参考书,但书中的许多章节采用了使用指南编写风格。本书主要目的是介绍J2EE Web服务。 读者学习本书时应具有使用Java编程语言的经验。如果读者没有这方面的经验,那么学习本书第9章以后的内容时会有些困难。此外,读者还应该对J2EE平台有基本的了解。本书只介绍J2EE的Web服务功能,不涉及其他J2EE API以及其他技术。 学习本书时并不需要读者知道XML、SOAP、WSDL、UDDI或任何J2EE Web Services API(JAX-RPC、SAAJ、JAXR、JAXP)方面的内容。书中将对这些内容给予详细介绍,因此相信即使是初学者也能够理解这些内容。 本书内容 本书将只重点介绍Web服务标准以及J2EE 1.4 Web Services API与组件,其他方面的内容将在其他书中介绍。本书主要介绍以下的Web服务标准: ● XML 1.0 ● SOAP 1.1 ● 带附件的SOAP消息 ● WSDL 1.1 ● UDDI 2.0 ● WS-I Basic Profile 1.0 Web服务标准占本书内容的三分之一(第1章到第8章介绍Web服务标准)。本书其余部分将介绍以下J2EE Web Services API: ● JAX-RPC 1.1 ● SAAJ 1.2 ● JAXR 1.0 ● JAXP 1.2 本书介绍了J2EE 1.4中规定的Web Services API的使用,因为J2EE 1.4是第一个全面采用Web服务范例的Java平台。 本书结构 本书是J2EE Web服务的参考手册与指南。书中的各章相互关联。例如,当学习完第Ⅰ部分介绍的XML后,就可以学习第Ⅱ部分介绍的SOAP与WSDL。与此类似,在学习第Ⅳ部分介绍的JAX-RPC(Java API for XML-based RPC,用于基于XML的RPC的Java API)之前,应先学习XML、SOAP和WSDL。在读者学完本书并掌握J2EE Web服务之后,本书仍然可作为您一本非常有价值的参考手册。读者可以在日常工作中通过本书查找Web服务标准以及J2EE 1.4 Web Services API方面的信息。 本书分7大部分和一个绪论篇(即第1章),每一部分由两章或多章组成,分别介绍各个特定的Web服务标准或J2EE API。各部分均以引言开始,该引言介绍了如何学习本部分的各章节、读者应当学习哪些章节、哪些章节可以有选择地学习。 本书各章均采用了4级标题形式,而且这样的标题特别适用于参考手册,因为它可以使读者非常方便地与同事讨论某一主题。本书还提供了一些附录,这些附录涵盖了许多重要的内容,其中包括XML正则表达式、Base64编码、DTD、带附件的SOAP消息以及RPC/Encoded通信等。 下面将简要描述本书各章介绍的内容。 ● 第1章概述了本书要介绍的内容、简单描述了J2EE 1.4的体系结构,并简要介绍了XML、SOAP、WSDL、UDDI、WS-I、JAX-RPC、SAAJ、JAXR和JAXP。 第Ⅰ部分 XML 第2章和第3章详细介绍了由W3C(World Wide Web Consortium,万维网联盟)定义的XML 1.0以及XML模式标准。本部分假设读者对XML并不熟悉,从最基本的知识开始介绍。 ● 第2章介绍XML和XML命名空间。 ● 第3章介绍W3C的XML模式标准的基础知识以及高级功能。 第Ⅱ部分 SOAP与WSDL 第4章和第5章概要介绍了SOAP 1.1与WSDL 1.1。本部分假设读者已经掌握了第Ⅰ部分介绍的XML、XML命名空间以及XML模式。 ● 第4章介绍SOAP消息的结构、SOAP消息相关术语以及处理规则。 ● 第5章介绍WSDL 1.1。 第Ⅲ部分 UDDI 第6章到第8章介绍了UDDI 2.0数据类型以及查询方法与发布方法。本部分假设读者已经掌握本书第Ⅰ部分和第Ⅱ部分介绍的XML、XML模式、SOAP以及WSDL。 ● 第6章概要介绍了UDDI数据类型。 ● 第7章和第8章分别介绍UDDI查询API与发布API。 第Ⅳ部分 JAX-RPC 第9章到第15章详细介绍了完整的用于基于XML的RPC的Java API(JAX-RPC) 1.1版。本部分假设读者已经掌握了XML、XML模式、SOAP和WSDL。 ● 第9章介绍JAX-RPC的各种功能。 ● 第10章介绍JAX-RPC服务端点(JES)以及它们与servlet容器系统之间的关系。 ● 第11章介绍起Web服务作用的EJB端点和EJB无状态会话bean。 ● 第12章详细介绍JAX-RPC客户API,用户要用它与其他Web服务进行通信。 ● 第13章介绍SAAJ 1.2的使用。 ● 第14章介绍消息处理程序的使用与配置。消息处理程序用于预处理或后处理SOAP消息。 ● 第15章介绍了Java与WSDL以及Java与XML之间的映射,这些映射用于说明如何将WSDL类型和XML类型转换成Java类型。 第Ⅴ部分 JAXR 第16章到第19章详细介绍JAXR(Java API for XML Registries,用于XML注册表的Java API)1.0版。重点介绍了如何用JAXR发布、查询UDDI注册表中的信息。 ● 第16章概要介绍JAXR,并为后续章节的介绍做准备。 ● 第17章和第18章详细介绍了映射到UDDI数据类型的JAXR域对象。 ● 第19章介绍JAXR查询API与发布API,这两个API可用于查询、添加和更新UDDI注册表中的信息。 第Ⅵ部分 JAXP 第20章到第21章介绍JAXP(Java API for XML Processing,用于XML处理的Java API)1.2版的基础知识,重点介绍了SAX2和DOM2的使用。 ● 第20章介绍SAX2、事件驱动的XML解析器API。 ● 第21章介绍DOM 2 XML解析器API。 第Ⅶ部分 部署 第22章到第24章详细介绍J2EE Web服务中使用的XML部署描述器(deployment descriptor),并概述了JAR打包与部署。 ● 第22章介绍用于部署JSE和JEB端点的通用J2EE部署描述器。 ● 第23章介绍由用于J2EE规范的Web Services(WS-J2EE)定义的Web服务专用的部署描述器。 ● 第24章介绍JAX-RPC映射文件。映射文件用于确定如何将WSDL和XML类型映射到Java接口与Java bean。 本书没有涉及的内容 本书重点介绍了标准的Web服务技术以及J2EE 1.4 Web Services API核心。由于标准Web服务技术和J2EE 1.4 Web Services API涉及了很多内容,但本书没有介绍其他方面的Web服务,其中包括J2EE平台的非Web服务事宜以及供应商专用的配置与管理。 J2EE平台的非Web服务 虽然本书详细介绍了J2EE 1.4 Web Services API,并且概述了servlet和EJB,但J2EE涵盖的内容非常之多,因此不能全面加以介绍。本书假设读者已经掌握了一些J2EE知识,否则应通过其他参考资料学习与Web服务无关的J2EE平台和API。 笔者还编写了其他两本J2EE方面的书,即Enterprise JavaBeans(第4版,O Reilly 2004年出版)和Java Message Service(与David A. Chappell合著,O Reilly 2000年出版)。 供应商专用的配置与管理 有大量的J2EE平台可供用户选用,这些平台包括BEA的WebLogic、IBM的WebSphere、Sun Microsystems的Sun ONE、Oracle9i Application Server、IONA的Application Server Platform、Apple WebObjects、Borland Enterprise Server、Pramati的Pranati Server、Apache J2EE、jBoss和ObjectWeb开放资源项目等。虽然这些平台均遵循J2EE规范,但它们采用了完全不同的过程与接口来安装、配置以及部署应用程序。由于各J2EE平台的管理不同,所以本书除了介绍标准的J2EE需求外,没有涉及其他安装、配置以及部署等方面的内容。如果读者需要了解供应商专用的管理与配置要求,请参考由供应商提供的相应文档。 其他Web服务“标准” 各个机构(W3C、OASIS、ebXML和IBM/Microsoft)还推出了一些新的Web服务标准,如DISCO、WSCI、BTP、WS-Security、DIME等。其中的许多标准实际上相互冲突或在彼此竞争。目前还不清楚其中哪些标准能够成为Web服务的标准,哪些标准将会消亡,所以本书只介绍核心标准,即由WS-I(Web服务互换作性组织)批准的Web服务协议。 致谢 编写众本书会涉及许多人的辛勤劳动,本书也不例外。虽然本书署名了笔者的名字,但如果没有众多朋友的帮助,就不会有本书的出版。 首先要衷心感谢的是Addison-Wesley的Mary O Brien,他介绍笔者加入AW(计算机妇女协会)大家庭,并在笔者编写此书时提供了指导。由Mary领导的AW中的许多专业人员也为本书的编写提供了许多帮助,其中包括Amy Fleischer、Brenda Mulligan、Jim Markham、Debby VanDijk、Laurie McGuire、Jerry Votta、John Fuller、Julie Nahil、Kelli Brooks、Stephanie Hiebert以及Kathy Gliden。此外,还要感谢为本书精心排版的Vicki Hochstedler、为本书设计封面的Dick Hannus、为本书进行内部格式设计的Janis Qwens、免费提供XMLspy的Altova,感谢明尼阿波利斯艺术学院提供了精美的日本木板画,同时要感谢内容编辑Brian Christeson。 编写本书时有幸得到世界上从事J2EE和Web服务的许多专家的帮助。在此特别要感谢Don Box、Anne Thomas Manes、Roberto Chinnici、David Chappell、Elliotte Rusty Harold、Scott Seely、Mike Champion、Pete Hendry、James McCabe、Bruce Scharlau、Jean-Jacques Moreau、Duncan Donald Davidson、Farrukh Najmi、Kathy Walsh、Tom Marrs、Iyad Elayyan、Mike Hendrickson、Anthony Robie和Douglas Barry。他们帮助审阅了本书的部分内容或全部内容。没有他们的帮助,可能就不会有本书的出版。 在此还要感谢在笔者编写本书时为各种技术问题提供答案的许多人士,其中包括Jim Knutson、Bill Shannon、Rahul Sharma、Russell Butek、Simon Fell、Tim Ewald、Zdenek Svoboda、Bill Venners、John D. Mitchell、Kyle Brown、Scott Ziegler、Seth White、Mark Hapner、Ping Wang和Paul Garvie。 最后,还要感谢我的夫人Hollie。在笔者编写本书时,她给予了笔者爱与支持、并负责了笔者生活中的全部事宜。