9

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

  1. 客户端点击请求文件的 Web 服务。
  2. Web 服务的服务类查询具有键(搜索查询)和值作为文件的 base64 编码值(例如 pdf)的哈希表
  3. 现在,我需要使用 MTOM 将存储在哈希表中的 base64 编码值返回给客户端。

由客户端对其进行解码并将其转换为pdf。

所以,这是我的问题:

  1. 我知道我们将文件编码为 base64 以通过 Web 服务传输,但是 MTOM 是在哪里以及如何出现的呢?

  2. 有人可以为我提供一种使用 MTOM 并将数据发回的简单方法。我们是否也需要在 WSDL 中指定某些内容?还是一个简单的 String 返回类型就足够了?为什么/为什么不?

谢谢

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

更新 1

这里的解释已经足够体面了,现在我需要从实现层面来理解它。这里有很好的信息,但对于.Net

更新 2

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

4

3 回答 3

8

您似乎混淆了实现和协议。

MTOM 的规范在这里页面包含示例消息。

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

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

于 2010-04-12T02:19:19.540 回答
1

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

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

于 2012-12-30T01:09:06.297 回答
1

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

于 2017-06-21T06:07:13.990 回答