首页 / 软件开发 / JAVA / Java Web服务进阶
Java Web服务进阶2011-02-15 IBM James McCarthy随着最近 Sun Microsystems 的 Java Web Services Developers Pack(Java WSDP)版本 1.0 的发布,Java 开发人员现在可以拥有一个方便的、集所有功能于一身的下载包,用来帮助在 Java 平台上开发 Web 服务。Java WSDP 包含 Java XML Pack 中的所有用于 XML 的 Java API(Java APIs for XML(JAX)),还包含有 Apache Tomcat 服务器以及为开发与测试 Web 服务提供一个功能完备的环境所需的其他组件。Java XML Pack 中所有技术,一年前也在 Java WSDP 中公布,并且通过了 Java Community Process(JCP)的所有设计审查要求。Java WSDP 并不是一个产品,而更倾向于是 Web 服务标准的参考实现,它是一个方便的、易于安装的包。这个包由一些可以投入生产的实现和几个应该仅仅用于测试目的的组件组成。所以,Java WSDP 不应是一个用来部署生产应用程序的环境,而更倾向于是一个用来开发和测试 Web 服务的环境;它主要用来帮助 Java 开发人员开始学习使用 Web 服务。Java WSDP 是一个优秀的用于理解、开发与测试 Web 服务的工具;并且,由于它是基于开放标准的,因此当您转到新的生产环境时并不需要重新开始。Java WSDP 中有哪些组件?当安装 Java WSDP 分发包时,您将创建一个目录,所有组件都位于这个目录。缺省情况下,这个目录包含了一个功能完备的、可以用来开发与测试 Web 服务的服务器环境。Java XML Pack 中包含目前提供的所有用于 XML 的 Java API,并且包含了支持 Web 服务的主要组件。下面是 Java XML Pack 组件的列表以及对这些组件的功能的简要描述:用于 XML 处理的 Java API(Java API for XML Processing(JAXP)):JAXP 是一个可插的 API,它对于 W3C 所推荐的 XML API(即 SAX、DOM 和 XSLT)的任意供应商实现都是开放的。JAXP 为获得 XML 解析器提供了标准接口;最新发布的 Java 平台(Java 2 平台,标准版 SDK v1.4(Java 2 Platform, Standard Edition SDK v1.4),请参阅 参考资料以获取更多的信息)将 JAXP 作为一个标准接口包括在内。同其他 Java 接口一样,正在开发的 JAXP 参考实现已被指派给其他团体 ― 在这个例子中,是 Apache Software Foundation。Xerces 2 是 Apache 最新的 XML 解析器,它包括在 Java 2 平台,标准版 SDK v1.4 中。用于 XML 消息传递的 Java API(Java API for XML Messaging(JAXM)):JAXM 旨在使用纯 Java API 使应用程序能够发送与接收面向文档的 XML 消息。JAXM 的目的是为更高级别的、基于标准的并且基于 SOAP 消息传递协议的消息传递协议(如 ebXML)提供一个基础。SAAJ 规范最近从 JAXM 被分离了出来,它包含一个同步的 SOAP 连接,因此 JAXM 现在主要用于异步消息。(我将在下面对 SAAJ 作更加详尽的讨论)。当以异步方式使用 JAXM 时,它使用消息传递提供程序来促进消息的路由选择。JAXM 包括一个消息传递提供程序,这个提供程序是 ebXML 传输、路由和打包(ebXML Transport, Routing, and Packaging)规范版本 1.0 的参考实现。用于 Java 的带有附件的 SOAP API(SOAP with Attachments API for Java(SAAJ)):SAAJ 是一个包,它使开发人员能够生产并消费那些遵循 SOAP 1.1 规范的消息及其所包含的 SOAP 附件。SAAJ 原先是作为 JAXM 1.0 规范的一部分进行定义的;但随着最近 JAXM 1.1 的发布,SAAJ 已被分离出来,自成一个规范,这样其他规范就能够依靠 SAAJ 包而无需依靠 JAXM。用于基于 XML 的 RPC 的 Java API(Java API for XML-based RPC(JAX-RPC)):JAX-RPC 是用于支持 SOAP 1.1 基于 XML 的 RPC 调用的实现包。核心 JAX-RPC 包包含一个用于调用 Web 服务的功能完备的 JAX-RPC 客户机以及 JAX-RPC 服务器的一个参考实现。除了核心包以外,Java WSDP 分发包还包含有许多命令行工具,这些命令行工具用于从 Web 服务定义语言(Web Services Definition Language(WSDL))文件构建客户机存根,也用于部署服务器组件。用于 XML 注册的 Java API(Java API for XML Registries(JAXR)):XML 注册中心通常用来存储有关已发布的 Web 服务的信息,而 JAXR API 则提供了访问这种信息的统一的方法。现在,Web 服务最常用的 XML 注册中心是统一描述、发现和集成(Universal Description, Discovery, and Integration(UDDI))注册中心;JAXR 包含一个用于访问 UDDI 的提供程序。除了 Java XML Pack 中的包之外,Java WSDP 还包含有一些其他组件,这些组件使其成为用于测试 Web 服务的功能完备的服务器环境。以下便是这些额外组件的清单,这些组件使得 Java WSDP 更加完善:Tomcat(Java Servlet 和 JavaServer Page 容器):Apache Software Foundation 被委派完成为 Java Servlet 容器(包括 JSP 和 JSTL)创建与维护参考实现的任务。Apache 已经以它惯有的方式制定出了一个优秀的、能与许多商业产品相媲美的开放源代码解决方案。Java WSDP 与 Apache Tomcat 4.1.2 一起被分发,虽然后者现在只是一个测试发行版,但它是针对 Java Servlet 2.3 和 Java Server Page 1.2 的参考实现版本。在写本文的时候,来自 Apache 的最新版本是 Tomcat 4.0.4,它也是 Java Servlet 2.3 和 JSP 1.2 的参考实现。JavaServer Page 标准标记库(JavaServer Pages Standard Tag Library(JSTL)):JSTL 是一个标记库,它包含 JavaServer Page(JSP)中常见的许多通用功能。由于 JSTL 使用的只是 JSP 1.2 规范中的功能,所以您将需要一个 JSP 1.2 容器来使用该标记库。幸运的是,上面描述的 Apache Tomcat Server 恰恰是这样一个容器,因此您将能够使用 Java WSDP 来对 JSTL 进行测试或者开发您自己的标记库。JSTL 的功能太多了,我们无法在此详细地描述,但是如果您的 JSP 需要访问数据库、操作 XML 或执行标准的格式化,那么您应当考虑使用 JSTL。注册中心服务器:注册中心服务器与 Java WSDP 一起被分发,它是统一描述、发现和集成(UDDI)版本 2 的一个功能完备的实现,可用于测试 Web 服务的注册与发现。注册中心服务器与许多其他 WSDP 组件不同,它应只用于测试目的,并因此在包的发布说明中将它列了出来,以免被与任何其他产品一起重新分发。除了这个局限性,注册中心服务器是学习和测试 UDDI 版本 2 的优秀工具,并且是 Java WSDP 必不可少的部分。Java WSDP 还提供了许多其他工具,这些工具在 Web 服务存根代码的构建和 Web 服务服务器端组件的部署与管理中起了帮助作用。下面提到的 Java WSDP 教程向您说明了如何使用这些其他工具。