禁用非 MTOM SOAP 消息或在 CXF 中限制其大小



我在CXF(或一般的SOAP)中遇到了这个问题。 当我在服务器和客户端两端启用 MTOM 请求时,我的应用程序运行良好,Java 堆大小不会呈指数级增长。但是,如果某些客户端决定不使用 MTOM 发送大型(我的意思是 500MB+ 附件作为 B64 编码格式)消息,则会出现问题,这会导致 Java 堆大小呈指数级增长,当然也会发生内存异常。

那么我怎样才能完全禁用非 MTOM 消息并强制客户端使用它。是否有任何使用 CXF 或其他解决方案...我的意思是检测非 MTOM 消息并立即抛出故障(不处理整个 XML 消息)。或者是否有任何解决方案可以限制非 MTOM 消息大小,例如如果消息为 ~30MB 允许它,否则抛出错误。

这是我思考了很长时间的问题,不幸的是,搜索了很多,没有找到任何解决方案。

我不想因为合同而放弃 SOAP 并坚持使用 REST。但我认为,如果我找不到任何解决方案,那将是我唯一的机会。

任何建议不胜感激。

我找到的最佳解决方案是用 http://cxf.apache.org/docs/securing-cxf-services.html

控制大型请求有效负载

我必须启用org.apache.cxf.stax.maxXMLCharacters属性并将其值设置为元素的敏感数字... 它有一个模棱两可的描述,你必须使用不安全的解析器来做到这一点,但这是不正确的。

相关内容

  • 没有找到相关文章

最新更新