本主题介绍如何使用 Web Service。WebSphere® Application Server 支持根据各种 Java™ 编程模型开发和实现的 Web Service。在多种平台(包括 Java Platform,
Enterprise Edition (Java EE) 和非 Java EE 平台)上进行操作时,使用 Web Service。
开始之前
确定 Web Service 实现是否有利于您的业务流程。
关于此任务
最佳实践: IBM®
WebSphere Application Server 支持 Java API for XML-Based Web Services (JAX-WS) 编程模型以及 Java API
for XML-based RPC (JAX-RPC) 编程模型。JAX-WS 是下一代 Web Service 编程模型,用于扩展 JAX-RPC 编程模型所提供的基础。使用策略 JAX-WS 编程模型,借助基于标准的注释模型的支持,简化了 Web Service 和客户机的开发。虽然仍支持 JAX-RPC 编程模型和应用程序,但应该利用易于实现的 JAX-WS 编程模型来开发新的 Web Service 应用程序和客户机。
有关受支持的标准和规范的完整列表,请参阅 Web Service 规范和 API 文档。
实现 Web Service 应用程序是在您公司的基础结构内部或外部将应用程序系统集成起来的一种简便的方法,它作为独立系统运行。例如,您的客户信息数据库是独立应用程序,但您需要记帐应用程序访问客户数据。可以为客户数据库创建 Web Service,然后启用记帐应用程序作为 Web Service 客户机。现在,记帐应用程序可以访问客户信息。通过实现 Web Service,这两个应用程序可以按有效方式共享信息。
因为可以很容易地将 Web Service 应用于现有应用程序和信息技术资产,所以您可以快速开发、部署和重组新的解决方案以处理新机会。当 Web Service 变得更流行时,服务池将增长,这促进了开发及时 (just-in-time) 应用程序的更健全模型和因特网上的业务集成。
可以通过完成如下提供的步骤将 Web Service 应用程序与应用程序服务器配合使用:
过程
- 计划使用 Web Service。 查看 Web Service 的所有组件以了解如何使 Web Service 计划更强大。
- (可选)迁移现有的 Web Service。
由于 Java EE 环境强调兼容性,所以支持较新 JAX-WS 和 JAXB 规范的大多数应用程序服务器继续支持较早的 JAX-RPC 规范。这样的结果是现有的 Web Service 可能仍基于 JAX-RPC,而新的 Web Service 是使用 JAX-WS 和 JAXB 开发的。
但是,随着时间的流逝以及应用程序的修改和重写,有时可能最好的策略是将基于 JAX-RPC 的 Web Service 迁移到基于 JAX-WS 和 JAXB 的 Web Service。这可能是由于供应商选择提供仅在新的编程模型中可用的服务质量增强。例如,SOAP 1.2 和 SOAP 消息传输优化机制 (MTOM) 支持仅在 JAX-WS 2.x 和 JAXB 2.x 编程模型中可用,而在 JAX-RPC 中不可用。
阅读“Web Service 迁移最佳做法”的相关信息以了解将 JAX-RPC Web Service 迁移到 JAX-WS 和 JAXB Web Service 时的最佳做法和示例的更多信息。
注: 现有需要使用 JAX-WS 功能部件的 JAX-RPC 应用程序必须使用 JAX-WS 编程模型进行重写。
如果您已使用基于 Apache SOAP 的 Web Service,但现在要开发和实现用于 Java EE 规范的 Web Service,那么需要迁移用 V5.0.2 之前的 4.0 和 5.0 的所有版本开发的客户机应用程序。要了解更多信息,请参阅“基于 Java EE 标准将 Apache SOAP Web Service 迁移到 JAX-RPC Web Service”的信息。
- 开发 Web Service 应用程序。 您可以通过以下方式中的其中一种开发 Web Service:
- 使用 JAX-WS 根据现有的 WSDL 文件开发 Web Service。
可从描述 JavaBeans 或企业 Bean 应用程序的服务接口的现有 Web Service 描述语言 (WSDL) 文件开始创建 JAX-WS Web Service。
通常 WSDL 被定义为应用程序建模进程的一部分。使用现有服务定义或 WSDL 文件生成新应用程序称为开发 Web Service 的自顶向下方法。
- 使用 JAX-WS 开发 Web Service 应用程序。
可以使用 Java API for XML-Based Web Services (JAX-WS) 编程模型来开发 Web Service。JAX-WS 简化了应用程序开发,通过基于注释的标准模型来开发 Web Service 应用程序和客户机。用于 XML 和 Java 对象的一组常用绑定规则简化了在 Java 应用程序中组合 XML 数据和处理功能。一组更强大的增强功能帮助您使用 Web Service 请求,按最佳方式发送二进制附件,例如,图像或文件。
V9.0 包括将单独会话企业 Bean 用作 JAX-WS 端点的支持。单独会话 Bean 在需要 Web Service 端点实现 Bean 的单一实例来处理特定 Web Service 端点接收的所有请求时非常有用。可能该 Bean 的单一实例需要在请求之间共享状态信息。通常,会创建 Web Service 端点实现 Bean 的新实例以处理每一个请求。
从现有 JavaBeans、无状态会话企业 Bean 或单独会话企业 Bean 着手开发 JAX-WS Web Service 时,可以使用注释将 Bean 显示为 JAX-WS Web Service。对 Bean 添加 @WebService 或 @WebServiceProvider 注释会将 Bean 定义为 JAX-WS Web Service。显示为 JAX-WS Web Service 的企业 Bean 必须打包在 EJB 3.0 或更高版本的模块中。
将现有应用程序变换为 Web Service 称为开发 Web Service 的自底向上方法。此过程称为自底向上是因为您从实现开始而不是从现有服务或 Web Service 描述语言 (WSDL) 文件开始。
- 开发并部署 JAX-WS Web Service 客户机。 可同时访问和调用 JAX-WS Web Service 的 Web Service 客户机根据 Web Services for Java Platform Enterprise Edition (Java
EE) 规范进行开发。应用程序服务器支持 Enterprise JavaBeans™
(EJB) 客户机、Java EE 应用程序客户机、JavaServer Pages (JSP) 文件和基于 JAX-WS 编程模型的 Servlet。
- 使用 JAX-RPC 根据现有的 WSDL 文件开发 Web Service 应用程序。
通过使用自顶向下方法开发 Web Service,可从描述企业 Bean 实现的服务接口的现有 WSDL 文件着手创建 JAX-RPC Web Service。
- 使用 JAX-RPC 开发 Web Service 应用程序。
您可以使用 Java API for XML-based RPC (JAX-RPC) 编程模型来开发 Web Service。从现有的 JavaBeans 或企业 Bean 着手开发 JAX-RPC Web Service 时,需要开发 WSDL 文件。可以使用现有的 JavaBeans 或企业 Bean,然后支持 Web Service 的实现。
- 开发并部署 JAX-RPC Web Service 客户机 可以根据 Web Services for Java Platform Enterprise Edition (Java EE) 规范和 Java API for XML-based
remote procedure call (JAX-RPC) 规范开发 Web Service 客户机。应用程序服务器支持 Enterprise JavaBeans™ (EJB) 客户机、Java EE 应用程序客户机、JavaServer Pages (JSP) 文件和基于 JAX-RPC 编程模型的 Servlet。
- 通过服务集成技术启用 Web Service
可使用服务集成总线的 Web Service 启用来实现以下目标:
- 使在总线目标处提供的内部主管服务可用作 Web Service。
- 使用外部 Web Service 在总线目标内部可用。
- 使用 Web Service 网关将现有服务(可以是内部主管的服务,也可以是外部 Web Service)映射至由此网关提供的新 Web Service。
可以开发 Web Service 以利用 Web Service 寻址 (WS-Addressing)、Web Services 资源框架 (WSRF) 和 Web Service 事务 (WS-Transaction) 支持。
- 使用 WS-Addressing SPI:执行更高级的 Web Service 寻址任务。
可以开发 Web Service 以利用 Web Service 寻址 (WS-Addressing),通过标准方法确定 Web Service 的地址并在消息中提供寻址信息,从而帮助在 Web Service 之间进行互操作。
- 使用 Web Service 资源框架创建有状态的 Web Service。
借助应用程序服务器中的 Web Service 资源框架 (WSRF) 支持,您可以将有状态 Web Service 作为 WS-Resource 来实现,然后使用 WS-Addressing 端点引用对该服务进行引用。
- 使用 WS-Transaction 策略来协调 Web Service 的事务或业务活动。
WS-Transaction 是一种互操作性标准,包括 WS-AtomicTransaction、WS-BusinessActivity 和 WS-Coordination 规范。应用程序服务器中的 Web Service 原子事务 (WS-AT) 支持为 Web Service
环境提供事务服务质量。分布式 Web Service 应用程序以及他们使用的资源可以参与分布式全局事务。
借助应用程序服务器中的 Web Service 业务活动 (WS-BA) 支持,不同系统上的 Web Service 可以对耦合程度比原子事务松散的活动进行协调。这类活动可能很难或完全不可能以原子方式进行回滚,因此在发生错误时需要一个补偿过程。
- 使用 WS-Policy 来交换标准格式的策略。
WS-Policy 是一种互操作性标准,它用于描述并传递 Web Service 的策略,以便服务提供程序可以标准格式导出策略需求。客户机可将服务提供程序需求与它们自己的功能相结合,以建立特定交互所需的策略。
- 组装 Web Service。
阅读关于组装 Web Service 所需的内容以及对部件进行组装的顺序,例如企业归档 (EAR) 文件。
- 部署 Web Service。
阅读关于部署对 Web Service 配置和启用的 EAR 文件所必需的步骤。
- 管理已部署的 Web Service。
部署 Web Service 应用程序之后,可以配置安全性设置、查看部署描述符和 WSDL 文档、设置 Web Service 端口的范围并管理策略集和服务提供程序。可以使用管理控制台或命令行工具来完成这些任务。
- 保护 Web Service。
- 发布 WSDL 文件。
在安装
Web Service 应用程序并选择修改端点信息后,可能需要包含已更新端点信息的 Web Service 描述语言 (WSDL) 文件。阅读发布 WSDL 文件以使此信息可供使用所必需的步骤。
- 监视 Web Service 应用程序的性能。
阅读关于使用性能监视基础结构 (PMI) 来测量处理 Web Service 请求所需的时间方面的内容。
- 对 Web Service 进行故障诊断。
阅读对用于开发、实现和使用 Web Service 的不同进程进行故障诊断的相关信息,包括命令行工具、Java 编译错误、客户机运行时错误和异常、序列化和反序列化错误以及与 Web Service Security 相关的认证质询和授权失败。
示例
以下示例描述企业可以如何使用 Web Service。
花店老板要开始通过 Web 接收客户的订单。花店老板通过查找鲜花供应商、对产品进行定价和完成未来鲜花订单的合同开始流程。
使用 Web Service,花店老板可找到鲜花供应商。查找新的供应商的一种方法是使用统一描述、发现和集成 (UDDI) 注册中心来搜索潜在的供应商。选择供应商后,注册中心将送回有关如何与满足花店老板的条件的鲜花供应商进行联系的信息。
通过获取每个潜在供应商的
WSDL 文件,花店老板可请求每个供应商提供价格表。可通过供应商的 Web 页面下载、通过电子邮件接收或者通过供应商的 UDDI 注册中心入口检索此 WSDL。
WSDL 描述了过程调用。使用应用程序服务器时,过程调用是 JAX-RPC 或 JAX-WS 过程调用。以上任一过程调用类型都可以检索价格表。WSDL 文件还指定发送请求的统一资源定位符 (URL)。
现在,花店老板必须比较从每个供应商那里接收到的价格、确定要与哪个供应商进行交易,并安排将来要填写的订单。通过使用 Web Service 与提供最佳价格的供应商进行通信和完成订购过程,花店现在可以通过 Web 销售商品了。商品价格表需要发布到 Web 站点,并且需要为订购鲜花的客户提供一种机制。
鲜花供应商的 Web Service 客户机部署在花店服务器上。当客户通过 Web 购买鲜花时,订单将通过过程调用发送给供应商。供应商通过发送有关订单号码和发货日期的确认来进行响应。供应商维持库存,而花店老板处理开票和客户订单管理。
同样,花店目录可由每个供应商的目录自动组成。如果供应商直接向客户供货,那么订单跟踪查询可以直接传递至供应商的订单跟踪系统。供应商还可以使用 Web Service 来发送花店所下订单的发票。先前需要手动填写并传真或邮寄的过程现在可以自动完成,这样就节省了花店和供应商的人工成本。
使用 Web Service 可以得到很多好处,因为花店有更多的库存可供使用。没有商品维护开销,并且花店可为其客户提供他们可能根本就没有的产品。通过 Web 销售鲜花增加了花店的资本,而没有其他商店的开销或投入其他产品的资源。
有关更详细的方案,请参阅“Web Service 方案概述”的信息,它讲述一个 Plants by WebSphere 的虚构在线园艺供应零售商的故事,以及它们如何合并 Web Service 的概念。
请参阅信息中心的“样本”部分以了解用于说明 JAX-WS 和 JAX-RPC Web Service 的其他样本。