apache - Spring Boot,带有 MTOM 的 Apache CXF 3.2.5 发送空附件
问题描述
我在使用 Apache CXF 时遇到了一个奇怪的问题,并且大型 (375MB) MTOM 附件是空的。在 Eclipse 中本地运行它会产生所需的结果,但将它部署到我们的服务器只会得到一个空附件。
服务器是用 .NET 编写的,不支持分块。启用分块后,客户端可以工作,但是当我禁用分块时,它会失败。
遗憾的是我无法在服务器上调试,所以我只能跟踪日志记录。
我已经尝试了所有可以使用谷歌搜索的技巧。
似乎没有什么不同。每次运行我都会得到类似下面的东西
</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(我怀疑这是因为文件未完全传输)
有没有人对可能导致这种情况的原因有任何想法?
解决方案
经过反复试验,我终于设法“解决”了这个问题。我启用了模式验证,数据现在出现了。这是我原始问题中的两个错误都声称要修复的确切问题。
Client client = ClientProxy.getClient(port);
BindingProvider bp = ((BindingProvider) port);
bp.getRequestContext().put("schema-validation-enabled", "true");
推荐阅读
- windows - 我的程序如何监听 OutputDebugString 输出并允许启动多个实例?
- git - 我可以使用什么命令来预览合并,同时排除没有更改的提交
- amp-html - 如何为 amp-wistia-player 设置视频启动时播放的音频
- apache-spark - Spark Join 最佳匹配效率问题
- c - 为 Linux 命令创建多级管道
- android - 如何避免持久化资源整数的不良做法(R.drawable.resource)
- python - 以管理员身份运行时如何打开第二个 spyder 控制台?
- sql - Ordering an alias column in union query
- jenkins - Jenkins Confluence plublisher 插件使用
- ios13 - 推送到新的 UIViewController 时,iOS 13 上的 UIAppearance 修饰符被忽略