我在使用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(我怀疑这是因为文件未完全传输)
有人对导致这种情况的原因有任何想法吗?
答案 0 :(得分:0)
经过反复尝试,我终于设法解决了这个问题。我启用了模式验证,现在显示数据。这是我原来问题中的两个错误都声称要修复的确切问题。
Client client = ClientProxy.getClient(port);
BindingProvider bp = ((BindingProvider) port);
bp.getRequestContext().put("schema-validation-enabled", "true");
答案 1 :(得分:0)
我无法添加评论,因此我将其发布为答案。
Jimmy也许您可以评论最新的CXF issue并提供更多详细信息?哪个版本的CXF,您使用的是哪种客户端,理想的实际代码示例是客户端日志?