我正在向CXF网络服务发送一个大附件,我得到以下例外:
引起:javax.xml.bind.UnmarshalException - 链接异常: [com.ctc.wstx.exc.WstxParsingException:超出文本大小限制(134217728) 在[row,col {unknown-source}]:[1,134855131]] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339) at org.apache.cxf.jaxb.JAXBEncoderDecoder.doUnmarshal(JAXBEncoderDecoder.java:769) at org.apache.cxf.jaxb.JAXBEncoderDecoder.access $ 100(JAXBEncoderDecoder.java:94) at org.apache.cxf.jaxb.JAXBEncoderDecoder $ 1.run(JAXBEncoderDecoder.java:797) at java.security.AccessController.doPrivileged(Native Method) 在org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:795) ......还有25个
问题似乎来自Woodstox图书馆
超出文本大小限制(134217728)
有人知道是否可以增加此限制?如果有,该怎么办?
答案 0 :(得分:4)
如果它来自像这样的woodstox,那么你不会将它作为MTOM附件发送。我的第一个建议是将其翻转为MTOM,以便在XML解析之外进行处理。更有效率,因为我们可以将其保持为输入流或类似物,而不是在内存中。
如果要将其保留在XML中,可以将属性:“org.apache.cxf.stax.maxTextLength”设置为更大的值。请记住,像这样从stax解析器进入的东西在内存中保存为String或byte [],因此会消耗内存。