Java 大型xml的Stackoverflow

Java 大型xml的Stackoverflow,java,xml,web-services,Java,Xml,Web Services,在我的web服务中,当我试图使用大量内容运行XML时,我发现了以下错误 输入是基于SOAP的web服务。此错误出现在任何处理开始之前。我运行应用程序的服务器是weblogic 12.1.3.Java 1.7版 我不确定如何解决此错误,因为我需要使我的服务能够接受大型XML内容 java.lang.StackOverflowError at com.sun.xml.stream.XMLDocumentFragmentScannerImpl.scanEntityReference(X

在我的web服务中,当我试图使用大量内容运行
XML
时,我发现了以下错误

输入是基于SOAP的web服务。此错误出现在任何处理开始之前。我运行应用程序的服务器是
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)

有一些基于流的XML解析器。如果可以在web服务(框架)中操纵解析,那么可以利用它们


看看。

的stackoverflow错误:这是因为EAP库中添加了旧的webservice-rt.jar。我查看了出错的堆栈跟踪,发现这些类都来自它。拆下罐子,它解决了问题。 对于未知JAXBcontent,我尝试在各种博客上寻找答案,但找不到答案。然后我反编译了JAR,并发现下面的内容有助于解决此错误。由于JDK和weblogic中的类版本不同,所以出现了错误


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

xml中有什么如此巨大的内容?是否存在可以删除以创建较小XML的重复标记?这样小的XML会运行吗?是的,小的XML会运行。内容是正确的。需求是通过webservice处理大型xml数据。高达某个阈值时,服务器可以接受该请求。除此之外,服务器日志中还会充满stackoverflow错误。您是否尝试过增加JVM的最大堆大小并尝试运行?您能找出xml变大到足以抛出错误的确切阈值吗?我尝试将每个线程的堆栈大小增加到6M(-Xss)。它一直工作到消息内容大小达到300k(字符)。但是,消息内容可以超过300k,最高可达500k。所以进一步增加-Xss不是Me的选择,Java 7的哪个版本?我的jdk1.7.079没有在这些行(或任何地方)调用自己的
next()
,并且有一个固定的错误:。