2017-02-17 10 views
2

В моем веб-сервисе, когда я пытаюсь запустить XML с огромным содержимым, я становлюсь ниже ошибки.Stackoverflow для огромного xml

Ввод веб-службы на основе SOAP. эта ошибка возникает до начала любой обработки. сервер я запускаю мое приложение weblogic 12.1.3. Java версия 1.7.

Я не знаю, как разрешить эту ошибку, как мне нужно, чтобы включить мою службу принимать крупное XML содержания

java.lang.StackOverflowError 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl.scanEntityReference(XMLDocumentFragmentScannerImpl.java:1700) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2908) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2791) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2932) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2932) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2791) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2932) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2932) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2791) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2932) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2791) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2932) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2791) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2932) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2791) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2932) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2791) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2932) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2791) 
     at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2932) 
+0

Что в XML, который настолько огромен? Существуют ли повторяющиеся теги, которые можно удалить, чтобы создать меньший XML? Будет ли такой небольшой запуск XML? – anacron

+0

Да маленький xml работает. контент правильный. Требование состоит в обработке больших xml-данных через webservice. до определенного порогового сервера может выполнить запрос. за его пределами серверные журналы заполняются ошибкой stackoverflow – noone

+0

Вы пытались увеличить максимальный размер кучи вашего JVM и попытались запустить? Можете ли вы узнать точный порог, при котором xml станет достаточно большим, чтобы выбросить ошибку? – anacron

ответ

0

для ошибки stackoverflow: это было из-за старого webservice-rt.jar, добавленного в EAP lib. Я заглянул в трассировку стека по ошибке и обнаружил, что эти классы были от него. удалили банки и решили. для unkonwn JAXBcontent Я пробовал искать ответ в разных блогах, но не смог найти ответ. затем я декомпилировал банки и узнал ниже, что помогло в разрешении этой ошибки. Ошибка приходила из-за классов с разной версией в JDK и weblogic.

-Djavax.xml.bind.JAXBContext = com.sun.xml.bind.v2.ContextFactory

0

Есть на основе потокового XML парсеры. Вы можете использовать их, если сможете манипулировать синтаксическим анализом в своем веб-сервисе (каркасе).

Посмотрите на StAX.

 Смежные вопросы

  • Нет связанных вопросов^_^