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

问题描述 投票:0回答:1

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

我尝试了什么

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

调试时

[PhaseInterceptorChain#doIntercept使用AttachmentInInterceptor(在currentInterceptor.handleMessage(message);处,该附件将LazyAttachmentCollection加载到附件并将其添加到邮件中。

  1. 高兴的情况:文档已加载到CachedOutputStream中,并且在for循环之后可用。
  2. 错误情况(文件太大?):调用currentInterceptor.handleMessage后可直接使用文档,但是在循环完成后消失]

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

我正在使用jax-ws cxf从SOAP接口加载文档。我可以通过SoapUI(xop / multipart)获得正确的文档。不幸的是,当我尝试通过代码加载附件时,...

java apache cxf jax-ws xop
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.