[英]Disable non-MTOM SOAP messages or restrict their size in CXF
我在CXF(或SOAP)中遇到了这个问题。 当我同时在服务器和客户端上启用MTOM请求时,我的应用程序运行良好,Java堆大小不会呈指数增长。 但是,如果某些客户端决定不使用MTOM发送LARGE(我的意思是500MB +附件为B64编码格式)消息,就会出现问题,这将导致Java堆大小呈指数增长,并且当然会发生OutOfMemoryException。
因此,我如何才能完全禁用非MTOM消息并强制客户端使用它。 是否有使用CXF或其他工具的解决方案?我的意思是检测非MTOM消息并立即引发Fault(不处理整个XML消息)。 还是有任何解决方案来限制非MTOM消息的大小,例如,如果消息约为30MB,则抛出错误。
这是我已经思考了很长时间的问题,不幸的是,对此进行了很多搜索,未找到任何解决方案。
我不想因为合同而放弃SOAP并坚持使用REST。 但是我认为,如果找不到任何解决方案,那将是我获得的唯一机会。
任何建议表示赞赏。
我发现的最佳解决方案写在http://cxf.apache.org/docs/securing-cxf-services.html
我必须启用org.apache.cxf.stax.maxXMLCharacters属性并将其值设置为元素的sensisble数字...它的含义不明确,您必须使用不安全的解析器来执行此操作,但这是不正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.