9.3. 启用 MTOM
默认情况下,Apache CXF 运行时不支持 MTOM。它将所有二进制数据作为普通 SOAP 消息的一部分或作为未优化的附件发送。您可以以编程方式激活 MTOM 支持或使用配置。
9.3.1. 使用 JAX-WS API 复制链接链接已复制到粘贴板!
概述 复制链接链接已复制到粘贴板!
服务提供商和消费者都必须启用 MTOM 优化。JAX-WS API 为每种端点提供不同的机制。
服务供应商 复制链接链接已复制到粘贴板!
如果您使用 JAX-WS API 发布您的服务提供商,您可以启用运行时的 MTOM 支持,如下所示:
访问您发布服务的
Endpoint对象。访问
Endpoint对象的最简单方法是发布端点。如需更多信息,请参阅 第 31 章 发布服务。使用其
getBinding ()方法从Endpoint获取 SOAP 绑定,如 例 9.4 “从端点获取 SOAP 绑定” 所示。例 9.4. 从端点获取 SOAP 绑定
// Endpoint ep is declared previously SOAPBinding binding = (SOAPBinding)ep.getBinding();
// Endpoint ep is declared previously SOAPBinding binding = (SOAPBinding)ep.getBinding();Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须将返回的绑定对象转换为
SOAPBinding对象来访问 MTOM 属性。使用绑定的
setMTOMEnabled ()方法将绑定的 MTOM enabled 属性设置为true,如 例 9.5 “设置服务提供商的 MTOM Enabled Property” 所示。例 9.5. 设置服务提供商的 MTOM Enabled Property
binding.setMTOMEnabled(true);
binding.setMTOMEnabled(true);Copy to Clipboard Copied! Toggle word wrap Toggle overflow
消费者 复制链接链接已复制到粘贴板!
要 MTOM 启用 JAX-WS 使用者,您必须执行以下操作:
将消费者的代理转换为
BindingProvider对象。有关获取消费者代理的详情,请参考 第 25 章 开发没有 WSDL 合同的消费者 或 第 28 章 从 WSDL 合同开发一个消费者。
使用其
getBinding ()方法从BindingProvider获取 SOAP 绑定,如 例 9.6 “从BindingProvider获取 SOAP 绑定” 所示。例 9.6. 从
BindingProvider获取 SOAP 绑定// BindingProvider bp declared previously SOAPBinding binding = (SOAPBinding)bp.getBinding();
// BindingProvider bp declared previously SOAPBinding binding = (SOAPBinding)bp.getBinding();Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用绑定的
setMTOMEnabled ()方法将 bindings MTOM enabled 属性设置为true,如 例 9.7 “设置 Consumer 的 MTOM Enabled Property” 所示。例 9.7. 设置 Consumer 的 MTOM Enabled Property
binding.setMTOMEnabled(true);
binding.setMTOMEnabled(true);Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3.2. 使用配置 复制链接链接已复制到粘贴板!
概述 复制链接链接已复制到粘贴板!
如果您使用 XML 发布服务,如部署到容器时,您可以在端点的 配置文件中启用端点的 MTOM 支持。有关配置端点的更多信息,请参阅 第 IV 部分 “配置 Web 服务端点”。
流程 复制链接链接已复制到粘贴板!
MTOM 属性在端点的 jaxws:endpoint 元素内设置。要启用 MTOM,请执行以下操作:
-
将
jaxws:property子元素添加到端点的jaxws:endpoint元素。 -
向
jaxws:property元素中添加一个条目子元素。 -
将
entry元素的key属性设置为mtom-enabled。 -
将
entry元素的value属性设置为true。
Example 复制链接链接已复制到粘贴板!
例 9.8 “启用 MTOM 的配置” 显示启用 MTOM 的端点。
例 9.8. 启用 MTOM 的配置