问题标签 [xop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10145 浏览

java - 使用 JAX-WS 构建大型 MTOM/XOP 消息

我有一个关于将 MTOM/XOP 与 JAX-WS 一起使用的问题。我正在编写一个发送大量二进制数据的 Web 服务。客户端请求多个文件,服务器在响应中返回这些文件。

我能够让它正确构建响应,以便它正确实现 XOP,但我遇到了与内存相关的问题,因为它在发送之前将整个响应存储在内存中。此 Web 服务发送的文件可能会变得非常大(例如千兆字节),因此不能将响应存储在内存中。

这个 Oracle 网站(以及这个网站)似乎解决了这个问题,但我就是不明白。我认为他们使用一个DataHandler对象来流式传输请求/响应,但我无法弄清楚他们如何实例化它。

我正在使用wsimport. 我将 JAX-WS RI 2.1.6 与 Java 6 一起使用。

如何在构建响应时发送响应,而不必先将其全部存储在内存中?

在此先感谢您的帮助。


更新 12/17:我在保存二进制数据的 WSDL 中的模式元素中添加了以下属性。这会导致wsimportDataHandler对象添加到 JAXB 类。FileDataHandler然后可以将A添加到响应中,而不是添加文件的全部内容,从而允许服务器流式传输每个文件的内容,而不是将它们全部保存在内存中:

因此,服务器现在正确构建响应,客户端在收到请求时正确地将每个文件保存到磁盘。但是,出于某种原因,客户端仍将整个响应读入内存。


服务器代码(SIB):

客户端代码:

0 投票
3 回答
3132 浏览

wcf - WCF: (MTOM) 有没有办法改变 xop:Content 中使用的方案 WCF 生成的引用 uris?

在处理流式传输的 MTOM 请求时, WCFhttp://tempuri/1/number用于 Content-ID uri 引用。

有什么方法可以强制 WCF 为 xop:Include 使用不同的 Content-ID 引用?

问题背景:

我正在为支持 MTOM 的 jax ws java Web 服务构建一个 .NET 客户端,该服务处理流式大数据上传。我手工制作了服务和数据联系人(WSDL 生成的合同不正确并且不允许流式传输)。

问题是 Web 服务 (jax ws) 没有收到包含数据的请求正文。

它接收在标头中传输的数据。

我们已经为 ws 构建了一个 java 客户端——这个可以工作。

从 java 和 wcf 发出请求时,我已经捕获并比较了 HTTP 流量,唯一的区别是在发布多部分数据时如何生成 Content-ID 引用:

  • WCF 使用http://tempuri/1/...产生编码值的 Content-ID 引用,例如href="cid:http%3A%2F%2Ftempuri.org%2F1%2F634019957020047928"

  • Java 客户端使用“电子邮件风格”的 uri,例如href="cid:3f3ec388-8cd9-47aa-a603-fb1bc17935b8@example.jaxws.sun.com"

这些在以下 xop-includes 中产生(数据是肥皂体中的唯一元素)(XOP 包括规范


稍后,在多部分数据中,内容由未编码的 Content-ID 引用:

我想jax Web 服务框架中可能存在错误,它无法识别 WCF 生成的+urlencoded Content-ID uri 引用。

有什么方法可以强制 WCF 为 xop:Include 使用不同的 Content-ID 引用?


编辑:我找到了具有 GenerateUriForMimePart 方法的 XmlMtomWriter,它用于生成 Content-ID。

似乎 ID 生成以任何方式都不可覆盖。

这里描述了一个类似的问题,提供的答案没有帮助:http ://social.msdn.microsoft.com/Forums/en/wcf/thread/f90affbd-f431-4602-a81d-cc66c049e351

0 投票
2 回答
1856 浏览

java - rest + xop / 嵌入在 xml 响应中的二进制数据

我的任务是将二进制数据(如图片、音乐、缩略图等)嵌入到 xml 元数据容器中,以便通过 REST 接口发布整个包。目前我们在项目中使用 Jersey 和 spring。我真的不想回到soap/wsdl(这似乎是每个基于ws的问题的默认答案)或任何容器格式(如zip)只是为了通过网络获取数据,所以我搜索了一段时间适当的解决方案。

我发现推荐使用XOP格式将内容嵌入到 xml 中,这是 SOAP 中使用的 MTOM 协议的一部分,但我没有看到直接通过 REST 提供 XML+XOP 响应的解决方案。

我的问题:有人可以给我一个提示如何使用 Jersey/spring 实现 XOP + REST 吗?我看到帖子暗示有人以前做过...

最好的问候,
蒂姆

0 投票
0 回答
617 浏览

wcf - BizTalk 2006 R2 中的 MTOM/XOP 支持?

我们目前正在开发 BizTalk 解决方案,该解决方案应通过 Web 服务请求将二进制数据作为 XOP 附件返回。BizTalk 通过 WCF 适配器支持 MTOM,但我不知道 BizTalk 是否也支持 XOP?

(我发现了一篇关于BizTalk 附件模式的博文,但这并没有给我首选的解决方案)

我们正在使用 BizTalk 2006 R2、Visual Studio 2005

0 投票
1 回答
297 浏览

web-services - 从 Silverlight 3 中的 WS 响应中删除 XOP gunk

我有一个 Silverlight 客户端,我需要调用一个 Web 服务。Web 服务是用 Java 构建的,并使用 XOP 编码将二进制消息附加到它的某些调用中。但是,Silverlight 服务仅使用不包含任何二进制编码的调用。但是,由于我无法控制 Web 服务,我仍然必须处理 XOP 多部分消息 - (下面是一个示例)。

来自 Web 服务的示例响应(数据剥离)

我们当前的实现使用字符串替换手动构造了一个肥皂消息,并使用 WebClient 类来发布请求并将响应下载为字符串。然后,我们不得不手动将数据解析为 XML。这没关系,但有点困难,无论如何我们都有可用的 REST 服务;我真的很希望服务代理能够响应对象。

我真正想做的是实现一个自定义行为,该行为将在 WS 堆栈尝试反序列化 SOAP 并删除 XOP gunk 之前拦截消息,但到目前为止,我还没有发现任何东西可以让我做这样的事情。

在我看来,我有几个选择:

  1. 在服务器(由我控制)上创建一个代理服务,该服务将向 Java 服务重新提交请求并实际处理 XOP。此选项具有我想避免的性能影响。

  2. 实现将处理 XOP 的自定义 MessageEncodingBindingElement、MessageEncoderFactory 和 MessageEncoder。这个选项一开始似乎是最好的,但由于我无法扩展 TextMessageEncoderFactory 或 TextMessageEncoder(它们是内部类),我基本上需要从头开始重写整个消息编码(非常感谢 Microsoft!)。

  3. 让事情保持原样。

有没有我没有看到的选项?

0 投票
1 回答
1174 浏览

web-services - 什么标准指定在 WSDL 中应如何指示 MTOM/XOP 支持?

我正在将 MTOM 附件支持添加到 Home Grown 应用服务器中的现有 Web 服务支持中。Web 服务框架遵循与 JavaEE5 类似的模式,带注释的服务和对象被自动公开为具有自动 WSDL 生成的 WebService。

我已经进行了实际的解析和生成,但我无法确定是否需要更新 WSDL 生成以向客户表明支持和首选 MTOM。我一直在为如何指示 MTOM 支持找到多个相互冲突的标准,而我对现实世界中使用的标准感到茫然。

到目前为止,我发现:

据我所见,W3c 似乎是 XMLSoap 的更高版本,但是它们似乎在不同的命名空间中使用了不同的元素来进行断言:

我还喜欢随机论坛帖子,它似乎表明 Glassfish 正在使用 XML Soap 之一。W3C 标准是一个草案,但似乎是 2007 年的草案。

有谁知道这些规格中的哪些通常在使用?或者在 MTOM 中忽略 WSDL 是否很常见?

0 投票
1 回答
485 浏览

c# - 在 .NET 4.0 中替换 XopDocument 类

随着迁移到 .NET 4.0,我们摆脱了很多 WSE 库,包括XopDocument类。替换 XopDocument 类的推荐类是什么,它表示一个 XOP 包,它是 MTOM 编码的 SOAP 消息的一部分

0 投票
1 回答
2620 浏览

attachment - 如何使用 Spring WS 和 Axiom 从带有大型 XOP 附件的 SOAP 消息中读取数据

我正在尝试构建一个 Web 服务,它将接收大文件并使用 SOAP 消息中指定的名称保存它们。这是一个示例请求消息

我已经构建了一些东西:我可以在没有 OutOfMemoryError 的情况下接收大型 XOP 文件。问题是我无法访问请求的 ProjectName 节点,因为任何尝试获取它都会导致将附件内联到请求中。而这本身就会导致 OutOfMemoryError

这是我目前用于此目的的代码

谁能帮助我使用 Spring WS 和 Axiom 提取大型 XOP 附件和 ProjectName 节点内容?

提前致谢

0 投票
1 回答
4186 浏览

python - 带有 MIME 附件多部分/相关和 xop 的 HTTP POST 请求和标头?

我正在尝试使用他们的 FileTransfer API 将批量数据交换调用上传到 eBay。为了做到这一点,我必须向 eBay 服务器发布一个 xml 请求字符串,但 xml 请求包含一个<Data>必须包含您正在传输的数据的部分(在这种情况下,它是一个包含另一个 xml 文档的 base64 编码的 zip 文件) . eBay 在 C# 中给出了如何构建这样一个文档的示例:https ://ebay.custhelp.com/app/answers/detail/a_id/1561

我一直在尝试使用 httplib 在 python 中重新创建此示例,以发布我以与示例大致相同的方式构造的字符串(3 个 UUID 是唯一的):

使用如下所示的标题:

然后是我的帖子:

当我发布没有 MIME 附件信息的 xml 请求时,它会毫无问题地接受该文件。但是,当我尝试像上面的代码那样使用 MIME 多部分/相关附件和<xop>指出数据在附件中的位置的标签时,POST 不成功,我收到“错误 302:临时移动”响应. 这让我相信我如何构建 MIME 多部分/相关 xml 请求,或者我如何构建“Content-type”标头声明,或者我对 xop 的使用,或者很可能是这三者的组合,有些事情是不对的事物。

我想我的问题是:如何创建一个包含 MIME 多部分/相关部分并使用 xop 的 xml 请求?

谢谢您的帮助!

韦斯

0 投票
1 回答
2650 浏览

php - PHP 中的 SOAP MTOM/XOP 支持

我想用 PHP 创建一个 Web 服务,它可以支持MTOM/XOP. 我的 Web 服务处理功能应该能够提取附件。当我用谷歌搜索时,我只能找到WSF(Web Service Framework)答案。

有其他选择吗?我是这个 MTOM/XOP 的新手。目前我使用NuSoap但它不支持 MTOM/XOP。