2013-06-21 4 views
3

Я посылаю большую привязанность к WebService CXF, и я получаю следующее исключение:com.ctc.wstx.exc.WstxParsingException: Текст предельного размера

причиненное: 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) в org.apache.cxf.jaxb.JAXBEncoderDecoder $ 1.Run (JAXBEncoderDecoder.java:797) в java.security.AccessController.doPrivileged (Native Method) в org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall (JAXBEncoderDecoder.java:795) ... 25 более

вопрос, кажется, исходит из библиотеки Woodstox, что говорит

Текст предельного размера (134217728) превысила

Кто-то знает, если это возможно, чтобы увеличить этот лимит? если да, как это сделать?

ответ

4

Если это происходит из древесного дерева, то вы не отправляете его как приложение MTOM. Моим первым предложением было бы перевернуть его на MTOM, чтобы его можно было обрабатывать вне XML-синтаксиса. Намного более эффективны, поскольку мы можем сохранить его как входной поток или похожий и не иметь его в памяти.

Если вы хотите сохранить его в XML, вы можете установить свойство: «org.apache.cxf.stax.maxTextLength» на некоторое большее значение. Имейте в виду, что материал, поступающий из анализатора stax, как это, хранится в памяти как String или byte [] и, таким образом, потребляет память.

+0

Отлично! Большое спасибо. Только последнее, если я хочу установить свойство «org.apache.cxf.stax.maxTextLength» на заданное значение, как мне это сделать? используя системное свойство -Dorg.apache.cxf.stax.maxTextLength = X будет работать? – Laurent

+2

Использовать стандартный механизм свойств Stax: 'XMLInputFactory.setProperty()'. Эта функция была добавлена ​​в Woodstox 4.2 для предотвращения атак типа «отказ в обслуживании»: значения по умолчанию зависят от структуры, использующей Woodstox (CXF в этом случае) – StaxMan