Spring 启动,带有 MTOM 的 Apache CXF 3.2.5 发送空附件

Spring Boot, Apache CXF 3.2.5 with MTOM sends empty attachment

我在使用 Apache CXF 时遇到一个奇怪的问题,大型 (375MB) MTOM 附件是空的。 运行 它在 Eclipse 中本地生成所需的结果,但将其部署到我们的服务器时只会给出一个空附件。

服务器是用 .NET 编写的,不支持分块。启用 Chunking 后,客户端可以正常工作,但是当我禁用 cunking 时,它会失败。

遗憾的是我无法在服务器上进行调试,所以我只能跟踪日志记录。

我已经尝试了我能做到的所有技巧 google。

似乎没有什么不同。 每次 运行 我都会得到类似下面的内容

</soap:Body></soap:Envelope>
--uuid:40ef745b-ac3c-4013-bbe7-a9cc28880423
Content-Type: application/xml
Content-Transfer-Encoding: binary
Content-ID: <7611ca0a-22f8-4637-b4f7-a5dfe7f20b81-3@www.somewhere.dk>
Content-Disposition: attachment;name="32_2018-03-28_output.xml"
--uuid:40ef745b-ac3c-4013-bbe7-a9cc28880423

在服务器上尝试使用较小的 (2KB) 文件效果很好。正确附加了一个 75MB 的文件,但从接收方返回了 HTTP 400(我怀疑这是因为文件未完全传输)

有人知道是什么原因造成的吗?

经过反复试验,我终于"solve"做到了。我启用了模式验证,现在数据出现了。这正是我原来问题中的两个错误都声称要修复的问题。

    Client client = ClientProxy.getClient(port);
    BindingProvider bp = ((BindingProvider) port);
    bp.getRequestContext().put("schema-validation-enabled", "true");

我无法添加评论,所以我将其作为答案发布。

Jimmy,您能否对最新的 CXF issue 发表评论并提供更多详细信息?哪个版本的 CXF,您使用的是哪种客户端,最好是真实的代码示例,客户端日志?