JAX-WS CXF空XOP多部分附件,文件大小> 〜210KB

时间:2018-01-29 16:48:19

标签: java apache cxf jax-ws xop

我正在使用jax-ws cxf从SOAP接口加载文档。我可以通过SoapUI(xop / multipart)获取正确的文档。不幸的是,当我尝试通过代码加载附件时,对于大于~210kb的文件,CachedOutputStream为空。

我尝试了什么

  • 为我的WebServiceClient激活MTOMFeature
  • 使用JVM参数CachedOutputStream.ThresholdCachedOutputStream.MaxSize
  • 使用不同版本的apache-cxf(3.2.13.1.14

调试时

PhaseInterceptorChain#doIntercept使用AttachmentInInterceptorcurrentInterceptor.handleMessage(message);)加载LazyAttachmentCollection的附件,并将其添加到邮件中。

  1. 快乐案例:文档被加载到CachedOutputStream中,并在for循环之后可用。
  2. 错误情况(文件太大?):文件在调用currentInterceptor.handleMessage后直接可用,但在循环完成后消失

    但是,在上述两种情况下,都会将正确的tmp文件保存到我的磁盘中(完全是我文档的内容)。此外,即使循环结束,我也可以在这两种情况下加载该文件:((org.apache.cxf.attachment.LazyAttachmentCollection)(message.getAttachments())).loadAll();

1 个答案:

答案 0 :(得分:0)

我对apache-cxf 3.1.6有类似的问题。问题是高于102kB的文件为空。经过一番挖掘后,结果发现它是“ attachment-memory-threshold”,您可以在requestContext中设置它,出于某种原因,文件缓存似乎无法正常工作。