Web Service 性能最佳实践
了解 Web Service 应用程序性能的最佳实践。
Web Service 是根据 Web Services for Java™ Platform, Enterprise Edition (Java EE) 规范、Java API for XML-Based Web Services (JAX-WS) 编程模型以及“Java XML 绑定体系结构”(JAXB) 编程模型随附的标准进行开发和部署,并且是用来访问 Web Service 的机制。解释了此规范所支持 Web Service 的性能注意事项。
开发或部署 Web Service 时,需要数个工件,包括 Web 服务描述语言 (WSDL) 文件。WSDL 文件描述 Web Service 输入和输出 SOAP 消息的格式与语法。如果 Web Service 是在 WebSphere® Application Server 运行时中实现,那么会根据 Java EE 请求来转换 SOAP 消息。然后,基于 Java EE 的响应会转换回 SOAP 消息。
最关键的性能注意事项是基于 XML 的 SOAP 消息与 Java 对象之间的转换。性能对于 WebSphere Application Server 中的 Web Service 实现来说非常高,然而,应用程序设计、部署和调整可以改善。请参阅“监视 Web Service 应用程序的性能”信息,以了解有关分析和调整 Web Service 的更多信息。
如果正在使用针对低于 V6 的 WebSphere Application Server 版本开发的 Web Service 应用程序,那么可以通过运行 wsdeploy 命令来获得更好的性能。wsdeploy 命令会重新生成 Web Service 工件类以提高序列化和反序列化性能。
Java API for XML-based RPC (JAX-RPC) 应用程序支持 wsdeploy 命令。由应用程序服务器实现的 Java API for XML-Based Web Services (JAX-WS) 编程模型不支持 wsdeploy 命令。如果 Web Service 应用程序仅包含 JAX-WS 端点,那么您不需要运行 wsdeploy 命令,这是因为此命令仅用来处理 JAX-RPC 端点。
高性能 Web Service 应用程序的基本注意事项
- 通过使用几个高功能 API(而不是若干个简单 API)来减少 Web Service 请求。
- 设计 WSDL 文件接口以限制 SOAP 消息的大小和复杂性。
- 当生成 WSDL 文件时,使用 document/literal 样式参数。
- 利用为 WebSphere Application Server 提供的高速缓存功能。
- 测试 Web Service 的性能。
优化 WebSphere Application Server 的 JAX-WS Web Service 性能
根据您的 Web Service 使用方案,您可以使用以下 JVM 定制属性来优化 JAX-WS Web Service 性能。更改这些 JVM 定制属性的值之后,必须重新启动 WebSphere Application Server 才能使更改生效。
- 在 WebSphere Application Server
8.5.5.2 或更高版本中,请使用以下定制属性进行 JAXB 性能优化:
- com.ibm.websphere.webservices.jaxwsOptimizeLevelOne
- 将此定制属性配置成 true 可开启级别 1 的 JAX-WS 性能优化。
- 缺省值为 false。注: 启用此定制属性之后,某些非特定 JAXB 行为可能会发生更改。如果您的应用程序与此类非特定行为具有依赖关系并且您发现它会导致应用程序无法成功运行,请禁用此属性。注: 您可能会发现 SOAP 消息中 XML 标记的顺序与旧版本不同。
- 在 WebSphere Application Server
8.5.5.0 或更高版本中,请使用以下定制属性进行 JAX-WS 引擎全局处理程序性能优化。请谨慎启用以下定制属性。否则,相应的 Web Service 功能将不工作。此外,以下 JVM 属性将不影响用户定义的 JAX-WS 处理程序。
- com.ibm.ws.websvcs.disableWSDMHandler
- 使用此属性可控制是否对 WSDM(Web Service 分布式管理)功能禁用 Web Service JAX-WS 引擎处理程序。缺省值为 false。
- com.ibm.ws.websvcs.disableWSSecurityHandler
- 使用此属性可控制是否对 WS-Security 功能禁用 Web Service JAX-WS 引擎处理程序。缺省值为 false。
- com.ibm.ws.websvcs.disableWSTXHandler
- 使用此属性可控制是否对 WS-Transaction 功能禁用 Web Service JAX-WS 引擎处理程序。缺省值为 false。
- com.ibm.ws.websvcs.disableWSRMHandler
- 使用此属性可控制是否对 WS-RM 功能禁用 Web Service JAX-WS 引擎处理程序。缺省值为 false。
- com.ibm.ws.websvcs.disablePMIHandler
- 使用此属性可控制是否对 Web Service PMI 数据收集功能禁用 Web Service JAX-WS 引擎处理程序。缺省值为 false。
- com.ibm.ws.websvcs.disablePMIRMHandler
- 使用此属性可控制是否对适用于 WS-RM 的 Web Service PMI 数据收集功能禁用 Web Service JAX-WS 引擎处理程序。缺省值为 false。
- com.ibm.ws.websvcs.disableAddressingHandler
- 使用此属性可控制是否对 WS-Addressing 功能禁用 Web Service JAX-WS 引擎处理程序。缺省值为 false。
- com.ibm.ws.websvcs.disableDefaultGlobalHandlers
- 使用此属性可控制是否禁用所有缺省 Web Service JAX-WS 引擎处理程序。如果将此属性配置为 true,那么它会覆盖下列定制属性的值并将它们的值设置为 true。
- com.ibm.ws.websvcs.disableWSDMHandler
- com.ibm.ws.websvcs.disableWSSecurityHandler
- com.ibm.ws.websvcs.disableWSTXHandler
- com.ibm.ws.websvcs.disableWSRMHandler
- com.ibm.ws.websvcs.disablePMIHandler
- com.ibm.ws.websvcs.disablePMIRMHandler
- com.ibm.ws.websvcs.disableAddressingHandler
- 此定制属性的缺省值为 false。
您可以利用的其他 Web Service 性能功能
- Web Service 的进程间优化,用来在同一个应用程序服务器进程中的 Web Service 客户机应用程序与 Web 容器之间优化通信路径。有关启用此功能的详细信息,请参阅 Web Service 客户机到 Web 容器的优化通信信息。
- 通过多个传输协议来访问 Web Service,扩展了现有的 Java API for XML-based remote procedure call (JAX-RPC) 功能以支持非 SOAP 绑定(例如 RMI/IIOP 和 JMS)。这些备用传输可以提高 Web Service 的性能和服务质量方面。有关更详细的信息,请参阅“使用 JAX-RPC 的 RMI-IIOP”信息。
- 带附件的 SOAP Java API (SAAJ) V1.2 为相对于 JAX-RPC 的 Web Service 提供了编程模型。SAAJ API 提供了使用 XML API 来创建和处理 SOAP 请求的功能部件。SAAJ 支持准时制解析和其他内部算法。有关 SAAJ 或 Web Service 编程的信息,请参阅带附件的 SOAP Java API 信息。
SAAJ 1.3 为根据“针对 XML Web Service 的 Java API”(JAX-WS) 编程模型开发和实现的 Web Service 提供支持。
- Web Service 工具为所有 JAX-RPC Bean 生成更高性能的定制反序列化器。将 V5.x 应用程序重新部署到 V6 运行时中可以减少处理大型消息的时间。
- 增强了序列化和反序列化运行时,以高速缓存常用的序列化器和反序列化器。这可以处理大型消息的时间。
IBM® 为详述这些项目及其他更多事项的 Web Service 应用程序和开发提供了相当多的文稿和最佳实践。