我使用基于Axis2 1.4.1的Java SOAP Web服务来交换数据和附件多年;无论到目前为止,即使自从Web服务实现MTOM以来的大附件也是如此。 直到上周,当webservice WS客户端开始在SOAP主体中发送大量附件(大约1GB)作为base64内联文本时(没有MTOM没有SwA)。 我相信在这种情况下Axis2附件缓存功能也会解决,但事实并非如此,并且OutOfMemory会发生。 经过一些尝试后,我的理解是,只有当WS客户端将它们作为MIME部分发送时,附件才会缓存到磁盘(而不是保存在内存中)。如果在SOAP主体中将它们作为base64文本发送,它们将保存在内存中。
我还尝试用CXF替换Axis2(我准备改变我的WS框架,如果它是唯一的解决方案),但我尝试了完全相同的行为。
我想知道我是否遗漏了某些东西,或者有同样问题的人找到了解决方案。 我不相信我的网络服务只有在客户端实现MTOM时才能管理大附件。
提前感谢任何可能的建议。