MTOM是什么,它是如何工作的?附带示例代码。

9
我正在尝试创建一个非常简单的Web服务,其功能如下:
1.客户端请求文件时,向Web服务发送请求。
2.Web服务的服务类查询哈希表,哈希表的键(搜索查询)和值为文件的base64编码值(例如pdf)。
3.现在,我需要使用MTOM将存储在哈希表中的base64编码值返回给客户端。
客户端需要进行解码并将其转换为pdf。
所以,这是我的问题:
1.我了解我们将文件编码为base64以通过Web服务进行传输,但MTOM在这里起什么作用?在哪里以及如何使用?
2.有人可以提供一个使用MTOM并发送数据的简单方法。我们是否需要在WSDL中指定某些内容?还是简单的字符串返回类型就足够了?为什么/为什么不?
谢谢
我看到了这个code。它使用了很多注释,我只需要一个简单的Java代码,使用MTOM。我是J2EE新手 :)

更新1

这里有一个足够好的解释在这里,现在我需要从实现层面理解它。 这里有一些很好的信息在这里,但是针对的是.Net。

更新2

方法“createMTOM(int id)”应该返回什么类型?

3个回答

8
您似乎混淆了实现和协议。
MTOM的规范在这里这个页面有示例消息。
如果您使用JAX-WS环境,您肯定会使用注释来启用它。如果您手动滚动SOAP消息,则编写任何所需的Java代码以生成它。本质上,MTOM意味着数据内容移动到附件中,该附件是消息的单独MIME部分,并通过xop:Include元素引用,其中href指向MIME部分。
模式必须将base64Binary作为元素类型,但其他属性可以提示字节的解释:xmime:contentType和xmime:expectedContentType。根据我的经验,JAX-B参考实现在使用这些方面存在一些限制。例如,您无法使其自动地在文本和字节之间进行转换。在像CXF或Glassfish这样的典型工具包中,您将数据放入DataHandler中,然后工具包将其转换为附件。

1

1

这里有一篇有用的文章(点击这里),介绍了MTOM以及如何在CXF中启用它。该文章还包括一个可工作示例的源代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接