2017-02-17 16 views
2

私のWebサービスで私はエラーの下になっている巨大な内容のXMLを実行しようとしているとき。巨大なxmlのためのStackoverflow

入力はSOAPベースのWebサービスです。このエラーは処理が開始される前に発生します。サーバー私は私のアプリケーションを実行しているweblogic 12.1.3. Javaバージョン1.7です。

私はストリーミングベースのXMLパーサーがあり、大きな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

はいsmall xmlが実行されます。内容は正しいです。要件は、webserviceを介して大きなxmlデータを処理することです。特定の閾値サーバまで要求を受け入れることができます。それを超えて、サーバログはstackoverflowエラーでいっぱいになる – noone

+0

JVMの最大ヒープサイズを増やしてみましたが、実行しようとしましたか? xmlがエラーをスローするのに十分な大きさになる正確なしきい値を見つけることができますか? – anacron

答えて

0

のstackoverflowエラー:古いwebservice-rt.jarがEAP libに追加されたためです。私は間違ってスタックトレースを見て、それらのクラスがそれからであることを発見した。瓶を取り出し、それを解決しました。 unkonwn JAXBcontent私は様々なブログで答えを探してみましたが、答えを見つけることができませんでした。次に私はjarファイルを逆コンパイルして、このエラーを解決するのに役立ちました。 JDKとweblogicで異なるバージョンのクラスが原因でエラーが発生しました。

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

0

を受け入れるように私のサービスを有効にする必要があるとして、このエラーを解決する方法がわからないです。 Webサービス(フレームワーク)の解析を操作できる場合は、それらを利用できます。

StAXをご覧ください。

関連する問題