【问题标题】:Does MTOM needed to be specified for both the client and server code是否需要为客户端和服务器代码指定 MTOM
【发布时间】:2018-07-10 17:44:53
【问题描述】:
我刚刚开始使用 SOAP Web 服务,偶然发现了 MTOM。
根据以下用例,我需要了解两件事:
用户将通过传递图像来调用 SOAP Web 服务。作为响应,他们将获得相同图像的格式化版本。
- 我知道我需要在客户端设置MTOMEnabled(true),但我也必须在服务中提及它。另外,当生成 WSDL 时,我如何知道该服务使用了 MTOM?
- 当客户端发送二进制数据时,必须在客户端代码中提及 MTOM,但如果客户端发送文本数据而服务器发送二进制数据,那么客户端是否也必须使用 MTOM?
【问题讨论】:
标签:
java
web-services
jax-ws
mtom
【解决方案1】:
当我收集更多信息并更新此答案时,我将进一步详细说明,但关于问题一“JAX-WS 应用程序需要单独配置客户端和服务器工件以启用 MTOM 支持”和“WSDL 文件包含 xsd :base64Binary 或 xsd:hexBinary 二进制数据的元素定义。”它还可能包含“xmime:expectedContentTypes”
第二,我相信这回答了您的问题“JAX-WS 应用程序需要单独配置客户端和服务器工件以启用 MTOM 支持”
但同样,仍在为您检查。
更多您将在 WSDL 中看到的示例
<xs:complexType name="ImageDepot">
<xs:sequence>
<xs:element name="imageData" type="xs:base64Binary" xmime:expectedContentTypes="image/jpeg"/>
</xs:sequence>
</xs:complexType>
........
</types
MIME 类型和Java 类型的映射。描述 MIME 类型和 Java 类型之间的映射。
MIME 类型 Java 类型
图像/gif - java.awt.Image
图像/jpeg - java.awt.Image
文本/纯文本 - java.lang.String
文本/xml - javax.xml.transform.Source
应用程序/xml javax.xml.transform.Source
/ javax.activation.DataHandler
所以关于你的第二个问题,我认为文本仍将被视为附件,但具有 text/plain 的类型