【发布时间】:2017-02-17 06:04:03
【问题描述】:
在我的网络服务中,当我尝试运行具有大量内容的 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)
【问题讨论】:
-
如此庞大的 XML 中有什么?是否有可以删除的重复标签以创建更小的 XML?这么小的 XML 会运行吗?
-
是的,小 xml 运行。内容正确。要求是通过 web 服务处理大型 xml 数据。达到一定阈值的服务器能够接受请求。除此之外,服务器日志充满了 stackoverflow 错误
-
您是否尝试过增加 JVM 的最大堆大小并尝试运行?你能找出 xml 变大到足以引发错误的确切阈值吗?
-
我尝试将每个线程的堆栈大小增加到 6M (-Xss)。它一直工作到消息内容的大小为 300k (characters) 。但是消息内容可以超过 300k 和高达 500k 。所以进一步增加 -Xss 对我来说不是一个选择
-
什么版本的 Java 7?我的 jdk1.7.0_79 没有
next()在这些行(或任何地方)调用自己,并且有一个固定的错误:JDK-2204370。
标签: java xml web-services