cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Hagen" <dha...@gmx.net>
Subject Exceptions in cxf on HTTP HEAD requests to wsdls
Date Tue, 19 Jun 2012 13:11:18 GMT
Hi,

we've been using CXF (currently 2.1.3, soon 2.5.4) on the server side for some time now (in
Tomcat 6.0 with Spring 3.0 if that is of any interest).

We have one client that - for whatever reason - performs HTTP HEAD-Requests to the WSDL-Urls
(http://.../services/Endpoint?wsdl) before performing it's calls.

We only recently noticed that those calls fail under certain circumstances with cxf 2.1.3
due to an exception "org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader."
in the class ReadHeadersInterceptor (See below for full stacktrace). From what we've been
able to discern so far, the problem seems to be reproducable only when the server has been
just started and no HTTP GET requests have been made to the WSDL URL yet. Once the first HTTP
GET to that URL has been sent, subsequent HTTP HEAD Requests succeed.

With CXF 2.5.4 those Exceptions are easier to reproduce - they are thrown every time an HTTP
HEAD request is sent to one of the WSDLs, regardless whether a HTTP GET has previously been
sent.

After stepping through the CXF 2.5.4 code I would guess that the problem is in WSDLGetInterceptor
- for GET requests the interceptor performs it's work and finishes with a call to "message.getInterceptorChain().abort();",
for HEAD requests it returns immediatedly without that call to abort() which causes the ReadHeadersInterceptor
to be called, which then promptly fails.

Is this a bug in CXF or a configuration issue? If it is a bug is there a way to work around
this? (Other than changing the clients so they don't send HTTP Head requests)

Best Regards

Daniel


This is the stacktrace logged by CXF:

org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:183)
	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:56)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:78)
	at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92)
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:285)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:168)
	at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:175)
	at org.apache.cxf.transport.servlet.AbstractCXFServlet.doGet(AbstractCXFServlet.java:157)
	at javax.servlet.http.HttpServlet.doHead(HttpServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
	at de.konsens.gda.server.ServiceUrlRewriteFilter.forwardToBasePath(ServiceUrlRewriteFilter.java:51)
	at de.konsens.gda.server.ServiceUrlRewriteFilter.doFilter(ServiceUrlRewriteFilter.java:29)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:662)
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
 at [row,col {unknown-source}]: [1,0]
	at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:686)
	at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2134)
	at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2040)
	at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
	at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095)
	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:85)
	... 31 more
-- 
Daniel Hagen
E-Mail: dhagen@gmx.net
Tel: 0179/6953843


Mime
View raw message