【问题标题】:Disable non-MTOM SOAP messages or restrict their size in CXF在 CXF 中禁用非 MTOM SOAP 消息或限制它们的大小
【发布时间】: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


    【解决方案1】:

    我发现的最佳解决方案写在http://cxf.apache.org/docs/securing-cxf-services.html

    控制大型请求负载

    我必须启用 org.apache.cxf.stax.maxXMLCharacters 属性并将其值设置为元素的合理数字... 它有一个模棱两可的描述,您必须使用不安全的解析器来执行此操作,但这是不正确的。

    【讨论】:

      猜你喜欢
      • 2013-10-01
      • 1970-01-01
      • 2011-03-08
      • 2011-10-22
      • 1970-01-01
      • 2012-08-10
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多