Web services com.ctc.wstx.exc.WstxParsingException:文本大小限制

Web services com.ctc.wstx.exc.WstxParsingException:文本大小限制,web-services,configuration,cxf,woodstox,Web Services,Configuration,Cxf,Woodstox,我正在向CXF Web服务发送一个大附件,出现以下异常: 原因:javax.xml.bind.UnmarshalException -除此之外: [com.ctc.wstx.exc.WstxParsingException:超出文本大小限制(134217728) 在[row,col{unknown source}]:[1134855131]] 位于com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamExcep

我正在向CXF Web服务发送一个大附件,出现以下异常:

原因:javax.xml.bind.UnmarshalException -除此之外: [com.ctc.wstx.exc.WstxParsingException:超出文本大小限制(134217728) 在[row,col{unknown source}]:[1134855131]] 位于com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426) 位于com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362) 位于com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339) 位于org.apache.cxf.jaxb.jaxbencoder.doUnmarshal(jaxbencoder.java:769) 位于org.apache.cxf.jaxb.jaxbencoder.access$100(jaxbencoder.java:94) 位于org.apache.cxf.jaxb.jaxbencoder$1.run(jaxbencoder.java:797) 位于java.security.AccessController.doPrivileged(本机方法) 位于org.apache.cxf.jaxb.jaxbencoder.unmarshall(jaxbencoder.java:795) ... 25多

这个问题似乎来自Woodstox图书馆

超出文本大小限制(134217728)


有人知道是否有可能提高这个限制吗?如果是,怎么办?

如果它是来自woodstox这样的公司,那么您就不能将其作为MTOM附件发送。我的第一个建议是将它转换为MTOM,这样就可以在XML解析之外处理它。效率更高,因为我们可以将其作为inputstream或类似文件保存,而不将其存储在内存中


如果希望将其保存在XML中,可以将属性“org.apache.cxf.stax.maxTextLength”设置为更大的值。请记住,像这样从stax解析器传入的内容作为字符串或字节[]保存在内存中,因此会消耗内存。

太好了!谢谢。最后一件事,如果我想将属性“org.apache.cxf.stax.maxtLength”设置为给定的值,我应该怎么做?使用系统属性-Dorg.apache.cxf.stax.maxtLength=X可以工作吗?使用标准的stax属性机制:
XMLInputFactory.setProperty()
。Woodstox 4.2中添加了此功能,以帮助防止拒绝服务攻击:默认值取决于使用Woodstox的框架(本例中为CXF)