5

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

原因:javax.xml.bind.UnmarshalException - 带有链接异常:[com.ctc.wstx.exc.WstxParsingException:文本大小限制 (134217728) 在 [row,col {unknown-source}] 超出:[1,134855131] ] 在 com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362) 的 com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426) ) 在 org.apache.cxf.jaxb.JAXBEncoderDecoder.doUnmarshal(JAXBEncoderDecoder.java:769) 在 org.apache.com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339)。 cxf.jaxb.JAXBEncoderDecoder.access$100(JAXBEncoderDecoder.java:94) 在 org.apache.cxf.jaxb.JAXBEncoderDecoder$1.run(JAXBEncoderDecoder.java:797) 在 java.security.AccessController。doPrivileged(Native Method) at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:795) ... 25 更多

这个问题似乎来自伍德斯托克斯图书馆,它说

超出文本大小限制 (134217728)

有人知道是否可以增加此限制?如果是,怎么办?

4

1 回答 1

6

如果它像这样来自woodstox,那么您不会将其作为MTOM 附件发送。我的第一个建议是将其翻转为 MTOM,以便可以在 XML 解析之外进行处理。效率更高,因为我们可以将其保存为输入流或类似内容,而不是将其保存在内存中。

如果要将其保留在 XML 中,可以将属性:“org.apache.cxf.stax.maxTextLength”设置为更大的值。请记住,像这样从 stax 解析器进来的东西会以 String 或 byte[] 的形式保存在内存中,因此会消耗内存。

于 2013-06-21T14:47:27.530 回答