MTOM如何工作+示例代码

时间:2010-04-12 01:38:14

标签: java web-services mtom

我正在尝试制作一个非常简单的网络服务,它可以执行以下操作:

  1. 客户端点击请求文件的Web服务。
  2. Web服务的服务类查询具有密钥(搜索查询)的哈希表,并将值作为文件的base64encoded值(例如pdf)
  3. 现在,我需要使用MTOM将存储在哈希表中的base64encoded值返回给客户端。
  4. 由客户端解码并将其转换为pdf。

    所以,这是我的问题:

    1. 据我所知,我们将文件编码为base64,以便通过网络服务进行传输,但MTOM在哪里以及如何进入图片?

    2. 有人能为我提供一个使用MTOM并将数据发回的简单方法。我们还需要在WSDL中指定一些东西吗?或简单的String返回类型就足够了?为什么/为什么不呢?

    3. 由于

      我见过这个code。它使用了很多注释,我只需要一个使用MTOM的简单java代码。这里是J2EE新手:)

      更新1

      足够充分的解释here,现在我需要从实施层面了解它。 好消息here,但对于.Net

      更新2

      方法“createMTOM(int id)”??

      的返回类型应该是什么

3 个答案:

答案 0 :(得分:7)

您似乎在混淆实施和协议。

MTOM的规范是hereThis页面包含示例消息。

如果您使用的是JAX-WS环境,那么您肯定会使用Annotations将其打开。如果您手动滚动肥皂消息,则编写需要编写的任何Java代码来生成它。从本质上讲,MTOM意味着数据的内容移动到附件,该附件是消息的单独MIME部分,并通过xop:Include元素和MIME部分的href引用。

模式必须说base64Binary是元素类型,但是附加属性给出了字节解释的提示:xmime:contentType和xmime:expectedContentType。根据我的经验,JAX-B参考实现对这些的使用有一些限制。例如,您不能让它自动将文本来回转换为字节。在像CXF或Glassfish这样的典型工具包中,您将数据放入DataHandler,然后工具包将其转换为附件。

答案 1 :(得分:0)

IBM红皮书:开发Web服务应用程序中提供了一个很好的详细示例/讨论,请参阅第64-74页

http://www.redbooks.ibm.com/redpapers/pdfs/redp4884.pdf

答案 2 :(得分:0)

有一篇有用的文章here描述了MTOM以及如何使用CXF启用它。本文还包括工作示例的源代码。