【发布时间】:2018-08-25 17:03:39
【问题描述】:
我在 CXF(或一般的 SOAP)中遇到过这个问题。 当我在服务器和客户端双方启用 MTOM 请求时,我的应用程序运行良好,Java 堆大小不会呈指数增长。但是,如果某些客户端决定不使用 MTOM 发送 LARGE(我的意思是 500MB+ 附件为 B64 编码格式)消息,就会出现问题,这会导致 Java 堆大小呈指数增长,当然会发生 OutOfMemoryException。
那么我怎样才能完全禁用非 MTOM 消息并强制客户端使用它。有没有使用 CXF 或其他东西的解决方案...我的意思是检测非 MTOM 消息并立即抛出故障(不处理整个 XML 消息)。或者是否有任何解决方案来限制非 MTOM 消息大小,例如如果消息约为 30MB,则允许它,否则抛出错误。
这是我想了很久的问题,也搜索了很多,可惜没有找到解决办法。
我不想因为合同而放弃 SOAP 而坚持使用 REST。但我认为,如果我找不到任何解决方案,那将是我唯一的机会。
欢迎提出任何建议。
【问题讨论】:
标签: apache soap cxf jax-ws mtom