部署 Java Web 服务
在多个容器上部署 Java Web 服务可能会给开发人员带来一些问题。通过阅读本文,您可以了解若干部署描述符实现,并了解 Java 社区如何开始处理这个问题。
在多个容器上部署 Java Web 服务可能会给开发人员带来一些问题。通过阅读本文,您可以了解若干部署描述符实现,并了解 Java 社区如何开始处理这个问题。
引言
在过去数年里,随着万维网联盟(World Wide Web Consortium,W3C)更新了核心规范,并引入了弥补 Web 服务最初缺陷的新规范,Web 服务发生了大量的变化。W3C 的 Web Services Activity 小组所维护的规范以独立于供应商的方式将 Web 服务作为一组 XML 规范进行处理。
同时,Java™ Community Process (JCP) 也在维护自己的规范集,以将 W3C 的建议合并到 Java 语言中。Java APIs for XML(JAX-RPC、JAXB、JAXP、JAXR 和 SAAJ)是一组使用 Java 语言实现 Web 服务规范的接口。
W3C 所维护的当前 Web 服务规范和 JCP 维护的 Java Web 服务 API 处理“网络上”的 Web 服务,以确保平台独立性和语言独立性。遵循 XML 规范或使用 Java API 的开发人员将确保应用程序能够通过任何通信协议在任何平台上与采用任何语言编写的 Web 服务进行通信。Web 服务可扩展任何应用程序的访问范围,是经过验证的对目前基于 Web 的应用程序有价值的集成技术。
但当基于 Web 的应用程序需要跨多个 Web 应用程序容器(如 IBM® WebSphere® Application Server、BEA WebLogic 和 Tomcat 等,这里仅指出三个)部署时,跨网络兼容性不够。对于 Java Web 服务,没有跨多个 Web 应用程序容器实现的标准部署的“web.xml”可用。
如果您希望应用程序支持多个 Web 应用程序容器提供的 Web 服务实现,则 Java Web 服务应用程序的部署可能会成为一项挑战。可以在 Web 应用程序中使用单个 Web 服务实现,如来自 Apache Web 服务项目的 Axis。对于 Web 服务客户机,这个策略通常能跨多个 Web 容器工作,因为客户机代码并不依赖于任何 Web 服务部署描述符。对于 Web 服务提供者(服务器),如果将 Web 服务实现嵌入 Web 应用程序存档(Web Application Archive,war)文件中,可能会导致意外加载器冲突,因此使用供应商的 Web 服务实现是最理想的部署选择。
本文剩下的部分将讨论 Java Web 服务的部署问题,向您展示各种部署描述符实现,并讨论 Java 社区如何开始处理这个问题。
开发跨多个容器部署的单个 Web 服务
对于 Web 应用程序部署,我们希望进行开放性的选择。如果您的客户在 WebSphere 或 WebLogic 等商业 J2EE 实现进行了投资,他们将希望利用其投资的平台。另一方面,如果您的客户希望降低初期投入成本,则可能希望采用 JBoss 或 Apache Tomcat 等开放源代码解决方案。在这两种情况下,如果您希望尽可能提高开发工作的可重用性,则可能无法依赖于可用的供应商特定 IDE。使用 J2EE 应用程序供应商提供的 IDE 进行开发工作可能会限制处理 Java Web 服务时的灵活性,隐藏部署 Web 服务的很多细节。
本文中的示例使用开放源代码社区提供的免费标准的开发工具集来为每个目标 Web 应用程序容器构建 Web 服务部署描述符。所有这些工具均在开发人员中得到了广泛应用,且支持各种开放标准技术。
我们的目标是,获得能够生成可使用 Axis 跨目标 Web 应用程序容器(WebSphere、WebLogic、JBoss 和 Tomcat)部署的 Web 服务的单个项目。相应的 war 文件应该能够在只需很少修改而绝对不需要重新编译源代码的情况下部署到我们的目标 Web 应用程序容器上。
本文并不打算作为有关 Web 服务或 Web 服务部署的教程,而旨在说明 Java Web 服务的一个问题,并阐述将来可以如何处理这个问题。如果您仅使用一个 Web 应用程序容器,而没有打算更改 Web 应用程序容器,则可以跳过有关 Web Services Metadata (JSR-181) 的部分(此 JSR 可能会影响您将来的开发工作)。
- 本文关键词:

