Details
-
Bug
-
Resolution: Done
-
Major
-
fuse-7.8-GA, fuse-7.9-GA
-
None
-
False
-
False
-
%
-
+
-
Automated
Description
Starting from fuse 7.8, the CXF producer cannot process payloads more than 16 KB and gives different errors such as:
2021-12-07 22:14:33,960 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (default-workqueue-4) Interceptor for {http://example.com}ExampleService#{http://example.com}ExamplePort has thrown exception, unwinding now: org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader: Undeclared namespace prefix "resp" at [row,col {unknown-source}]: [1,33] at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:304) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:70) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:808) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1696) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1192) at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:412) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:345) at java.lang.Thread.run(Thread.java:748) Caused by: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "resp" at [row,col {unknown-source}]: [1,33] at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:634) at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:504) at com.ctc.wstx.sr.InputElementStack.resolveAndValidateElement(InputElementStack.java:503) at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:3048) at com.ctc.wstx.sr.BasicStreamReader.handleRootElem(BasicStreamReader.java:2176) at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2156) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1179) at com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1202) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:173) ... 10 more 2021-12-07 22:14:33,961 ERROR [org.apache.camel.processor.DefaultErrorHandler] (default-workqueue-1) Failed delivery for (MessageId: ID-localhost-1638895360776-0-8 on ExchangeId: ID-localhost-1638895360776-0-7). Exhausted after delivery attempt: 1 caught: org.apache.cxf.interceptor.Fault Message History --------------------------------------------------------------------------------------------------------------------------------------- RouteId ProcessorId Processor Elapsed (ms) [soapInputRoute ] [consumer ] [cxf://bean:cxfConsumerEndpoint?allowStreaming=true&dataFormat=PAYLOAD ] [ 222] [soapInputRoute ] [process1 ] [Processor@0x1963ff06 ] [ 0] [soapInputRoute ] [producer ] [ ] [ 220] Stacktrace ---------------------------------------------------------------------------------------------------------------------------------------: org.apache.cxf.interceptor.Fault at org.apache.cxf.ext.logging.WireTapIn.handleMessage(WireTapIn.java:70) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:808) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1696) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1192) at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:412) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:345) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException at org.apache.cxf.transport.http.asyncclient.SharedInputBuffer.read(SharedInputBuffer.java:263) at org.apache.cxf.transport.http.asyncclient.AsyncHTTPConduit$AsyncWrappedOutputStream$6.read(AsyncHTTPConduit.java:698) at org.apache.cxf.helpers.IOUtils.copyAtLeast(IOUtils.java:224) at org.apache.cxf.ext.logging.WireTapIn.handleInputStream(WireTapIn.java:92) at org.apache.cxf.ext.logging.WireTapIn.handleMessage(WireTapIn.java:62) ... 9 more
If we exclude the cxf-rt-transports-http-hc library, it works fine. It also works fine if we increase the chunk length to fix the entire payload.
It was working fine with Fuse 7.7 but it doesn't work with 7.8 or 7.9
This can be managed on spring-boot by removing the cxf-rt-transports-http-hc library but it is a major issue on EAP where all the cxf related libraries are provided by the server.