OOME from infinite loop in CXF WebFaultOutInterceptor
Issue
- We reach an OOME and a heap dump shows a large
com.sun.org.apache.xerces.internal.dom.DocumentImpl
being generated from growing SOAP exception data being marshalled in calls fromorg.apache.cxf.jaxws.interceptors.WebFaultOutInterceptor.handleMessage
like below:
at com.sun.org.apache.xerces.internal.dom.NodeImpl.getUserData(Ljava/lang/String;)Ljava/lang/Object; (NodeImpl.java:1792)^M
at com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl.find(Lorg/w3c/dom/Node;Z)Ljavax/xml/soap/Node; (SOAPDocumentImpl.java:616)^M
at com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl.findIfPresent(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node; (SOAPDocumentImpl.java:631)^M
at com.sun.xml.messaging.saaj.soap.impl.ElementImpl.getFirstChild()Lorg/w3c/dom/Node; (ElementImpl.java:1718)^M
at org.apache.xml.serializer.TreeWalker.traverse(Lorg/w3c/dom/Node;)V (TreeWalker.java:147)^M
at org.apache.xalan.transformer.TransformerIdentityImpl.transform(Ljavax/xml/transform/Source;Ljavax/xml/transform/Result;)V (TransformerIdentityImpl.java:390)^M
at com.sun.xml.bind.v2.runtime.XMLSerializer.writeDom(Ljava/lang/Object;Ljavax/xml/bind/annotation/DomHandler;Ljava/lang/Object;Ljava/lang/String;)V (XMLSerializer.java:775)^M
at com.sun.xml.bind.v2.runtime.AnyTypeBeanInfo.serializeBody(Ljava/lang/Object;Lcom/sun/xml/bind/v2/runtime/XMLSerializer;)V (AnyTypeBeanInfo.java:87)^M
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(Ljava/lang/Object;Ljava/lang/String;Lcom/sun/xml/bind/v2/runtime/JaxBeanInfo;Z)V (XMLSerializer.java:666)^M
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(Ljavax/xml/bind/JAXBElement;Lcom/sun/xml/bind/v2/runtime/XMLSerializer;Ljava/lang/Object;)V (ElementBeanInfoImpl.java:125)^M
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(Ljava/lang/Object;Lcom/sun/xml/bind/v2/runtime/XMLSerializer;Ljava/lang/Object;)V (ElementBeanInfoImpl.java:100)^M
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(Ljavax/xml/bind/JAXBElement;Lcom/sun/xml/bind/v2/runtime/XMLSerializer;)V (ElementBeanInfoImpl.java:302)^M
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(Ljavax/xml/bind/JAXBElement;Lcom/sun/xml/bind/v2/runtime/XMLSerializer;)V (ElementBeanInfoImpl.java:309)^M
at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(Ljava/lang/Object;Lcom/sun/xml/bind/v2/runtime/XMLSerializer;)V (ElementBeanInfoImpl.java:45)^M
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(Ljava/lang/Object;)V (XMLSerializer.java:464)^M
at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(Ljava/lang/Object;Lcom/sun/xml/bind/v2/runtime/output/XmlOutput;Ljava/lang/Runnable;)V (MarshallerImpl.java:298)^M
at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(Ljava/lang/Object;Ljavax/xml/stream/XMLStreamWriter;)V (MarshallerImpl.java:153)^M
at org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(Ljavax/xml/bind/Marshaller;Ljava/lang/Object;Ljava/lang/Object;)V (JAXBEncoderDecoder.java:641)^M
at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshallException(Ljavax/xml/bind/Marshaller;Ljava/lang/Exception;Lorg/apache/cxf/service/model/MessagePartInfo;Ljava/lang/Object;)V (JAXBEncoderDecoder.java:466)^M
at org.apache.cxf.jaxb.io.DataWriterImpl.write(Ljava/lang/Object;Lorg/apache/cxf/service/model/MessagePartInfo;Ljava/lang/Object;)V (DataWriterImpl.java:229)^M
at org.apache.cxf.interceptor.FaultOutInterceptor.handleMessage(Lorg/apache/cxf/message/Message;)V (FaultOutInterceptor.java:90)^M
at org.apache.cxf.jaxws.interceptors.WebFaultOutInterceptor.handleMessage(Lorg/apache/cxf/message/Message;)V (WebFaultOutInterceptor.java:196)^M
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(Lorg/apache/cxf/message/Message;)Z (PhaseInterceptorChain.java:308)^M
at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(Lorg/apache/cxf/message/Message;)V (AbstractFaultChainInitiatorObserver.java:112)^M
at org.apache.cxf.phase.PhaseInterceptorChain.wrapExceptionAsFault(Lorg/apache/cxf/message/Message;Ljava/lang/RuntimeException;)V (PhaseInterceptorChain.java:374)^M
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(Lorg/apache/cxf/message/Message;)Z (PhaseInterceptorChain.java:332)^M
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(Lorg/apache/cxf/message/Message;)V (ChainInitiationObserver.java:121)^M
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(Ljavax/servlet/ServletConfig;Ljavax/servlet/ServletContext;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V (AbstractHTTPDestination.java:267)^M
at org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(Lorg/jboss/wsf/spi/deployment/Endpoint;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/ServletContext;)V (RequestHandlerImpl.java:110)^M
at org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/ServletContext;Lorg/apache/cxf/Bus;Lorg/jboss/wsf/spi/deployment/Endpoint;)V (ServletHelper.java:134)^M
at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V (CXFServletExt.java:88)^M
Environment
- JBoss Enterprise Application Platform (EAP) 7.x
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.