我有一个奇特的问题,它突然出现在客户端上,该客户端使用Apache Axis 1.4向Web服务发起SOAP请求。一切都一直运行得很顺利,已经有一年了。响应大小随着时间的推移而逐渐增长,最近,我会在调用过程中随机地遇到
当我第一次看到这个问题时,自然会认为我的最大堆大小需要增加。我正在运行Tomcat 6,并将以前的
错误与应用程序运行的时间无关,它可以立即在Tomcat启动时发生。因此,它似乎与服务器的总体负载无关。
有人对此有什么想法吗?我是否正在处理Axis中已知的错误?我发现一些人在通过SOAP发送巨大附件时会出现
我正在使用包装/字面值的SOAP Web服务。
OutOfMemoryError: Java heap space
异常。跟踪的前面部分显示在底部。这可能发生在十分之一的呼叫中。如果发生了并且我捕捉到了异常,只要再尝试一次呼叫,99次中就能成功一次。当我第一次看到这个问题时,自然会认为我的最大堆大小需要增加。我正在运行Tomcat 6,并将以前的
-Xmx1024M
设置更改为-Xmx2048M
(机器上有足够的RAM)。然而,这并没有改变任何东西。查看Tomcat的状态,堆似乎有足够的空间来容纳SOAP响应。问题似乎也与PermGen空间无关。错误与应用程序运行的时间无关,它可以立即在Tomcat启动时发生。因此,它似乎与服务器的总体负载无关。
有人对此有什么想法吗?我是否正在处理Axis中已知的错误?我发现一些人在通过SOAP发送巨大附件时会出现
OutOfMemoryError
异常,但这不是我的情况。我正在使用包装/字面值的SOAP Web服务。
Exception in thread "Thread-6" java.lang.OutOfMemoryError: Java heap space
at org.apache.axis.message.SAX2EventRecorder$objArrayVector.add(SAX2EventRecorder.java:254)
at org.apache.axis.message.SAX2EventRecorder.newElement(SAX2EventRecorder.java:136)
at org.apache.axis.encoding.DeserializationContext.pushNewElement(DeserializationContext.java:769)
at org.apache.axis.message.SOAPHandler.startElement(SOAPHandler.java:94)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:504)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2732)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625)