9.3. 启用 MTOM


默认情况下,Apache CXF 运行时不支持 MTOM。它将所有二进制数据作为普通 SOAP 消息的一部分或作为未优化的附件发送。您可以以编程方式激活 MTOM 支持或使用配置。

9.3.1. 使用 JAX-WS API

概述

服务提供商和消费者都必须启用 MTOM 优化。JAX-WS API 为每种端点提供不同的机制。

服务供应商

如果您使用 JAX-WS API 发布您的服务提供商,您可以启用运行时的 MTOM 支持,如下所示:

  1. 访问您发布服务的 Endpoint 对象。

    访问 Endpoint 对象的最简单方法是发布端点。如需更多信息,请参阅 第 31 章 发布服务

  2. 使用其 getBinding () 方法从 Endpoint 获取 SOAP 绑定,如 例 9.4 “从端点获取 SOAP 绑定” 所示。

    例 9.4. 从端点获取 SOAP 绑定

    // Endpoint ep is declared previously
    SOAPBinding binding = (SOAPBinding)ep.getBinding();

    您必须将返回的绑定对象转换为 SOAPBinding 对象来访问 MTOM 属性。

  3. 使用绑定的 setMTOMEnabled () 方法将绑定的 MTOM enabled 属性设置为 true,如 例 9.5 “设置服务提供商的 MTOM Enabled Property” 所示。

    例 9.5. 设置服务提供商的 MTOM Enabled Property

    binding.setMTOMEnabled(true);

消费者

要 MTOM 启用 JAX-WS 使用者,您必须执行以下操作:

  1. 将消费者的代理转换为 BindingProvider 对象。

    有关获取消费者代理的详情,请参考 第 25 章 开发没有 WSDL 合同的消费者第 28 章 从 WSDL 合同开发一个消费者

  2. 使用其 getBinding () 方法从 BindingProvider 获取 SOAP 绑定,如 例 9.6 “从 BindingProvider获取 SOAP 绑定” 所示。

    例 9.6. 从 BindingProvider获取 SOAP 绑定

    // BindingProvider bp declared previously
    SOAPBinding binding = (SOAPBinding)bp.getBinding();
  3. 使用绑定的 setMTOMEnabled () 方法将 bindings MTOM enabled 属性设置为 true,如 例 9.7 “设置 Consumer 的 MTOM Enabled Property” 所示。

    例 9.7. 设置 Consumer 的 MTOM Enabled Property

    binding.setMTOMEnabled(true);

9.3.2. 使用配置

概述

如果您使用 XML 发布服务,如部署到容器时,您可以在端点的 配置文件中启用端点的 MTOM 支持。有关配置端点的更多信息,请参阅 第 IV 部分 “配置 Web 服务端点”

流程

MTOM 属性在端点的 jaxws:endpoint 元素内设置。要启用 MTOM,请执行以下操作:

  1. jaxws:property 子元素添加到端点的 jaxws:endpoint 元素。
  2. jaxws:property 元素中 添加一个条目 子元素。
  3. entry 元素的 key 属性设置为 mtom-enabled
  4. entry 元素的 value 属性设置为 true

Example

例 9.8 “启用 MTOM 的配置” 显示启用 MTOM 的端点。

例 9.8. 启用 MTOM 的配置

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                           http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">

  <jaxws:endpoint id="xRayStorage"
                  implementor="demo.spring.xRayStorImpl"
                  address="http://localhost/xRayStorage">
    <jaxws:properties>
      <entry key="mtom-enabled" value="true"/>
    </jaxws:properties>
  </jaxws:endpoint>
</beans>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.