Hello, we are facing an issue with Camel CXF-RS component after migrating from version 2.17.6 to 2.20.1.
Use case: Simple Proxy service with CXFRS server and client. Service class uses Response object. Simple binding style is used. Target endpoint produces XML response of Content-Type application/xml. Expected: XML response from the backend. Result: Exception No message body reader has been found for class javax.ws.rs.core.Response, ContentType: application/xml... (expection below) endpoints: <cxfcamel:rsServer id="restProxyEndpoint" address="${server.endpoint.rest}" serviceClass="RestServiceImpl"> </cxfcamel:rsServer> <cxfcamel:rsClient id="restClientEndpoint" address="${client.endpoint.rest}" serviceClass="RestServiceImpl"> </cxfcamel:rsClient> Camel route: <route id="AtomService-route"> <from uri="cxfrs:bean:restProxyEndpoint?synchronous=true&bindingStyle=SimpleConsumer&propagateContexts=true&continuationTimeout=120000" /> <to uri="cxfrs:bean:restClientEndpoint?propagateContexts=true&throwExceptionOnFailure=false" /> </route> Service class RestServiceImpl: (as suggested in camel docs https://camel.apache.org/cxfrs.html) @Produces(value="application/xml") @Consumes(value="application/xml") @Path("/") public class AtomRestServiceImpl { @POST @Path("/{path: .*}") public Response proxyRequestPOST(String request) { return null; } } Exception: 2019-04-30 15:27:01,537 | ERROR | qtp387297163-324 | tractFaultChainInitiatorObserver | 38 - org.apache.cxf.cxf-core - 3.2.4 | An unexpected error occurred during error handling. No further error processing will occur. org.apache.cxf.interceptor.Fault: No message body reader has been found for class javax.ws.rs.core.Response, ContentType: application/xml while invoking public abstract javax.ws.rs.core.Response RestServiceApi.proxyRequestPOST(java.lang.String) with params [<body>text</body>]. at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166) [38:org.apache.cxf.cxf-core:3.2.4] at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:140) [38:org.apache.cxf.cxf-core:3.2.4] at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:192) [49:org.apache.cxf.cxf-rt-frontend-jaxrs:3.2.4] at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:103) [49:org.apache.cxf.cxf-rt-frontend-jaxrs:3.2.4] at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) [38:org.apache.cxf.cxf-core:3.2.4] at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96) [38:org.apache.cxf.cxf-core:3.2.4] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) [38:org.apache.cxf.cxf-core:3.2.4] at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [38:org.apache.cxf.cxf-core:3.2.4] at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267) [62:org.apache.cxf.cxf-rt-transports-http:3.2.4] at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) [62:org.apache.cxf.cxf-rt-transports-http:3.2.4] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) [62:org.apache.cxf.cxf-rt-transports-http:3.2.4] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) [62:org.apache.cxf.cxf-rt-transports-http:3.2.4] at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:216) [62:org.apache.cxf.cxf-rt-transports-http:3.2.4] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301) [62:org.apache.cxf.cxf-rt-transports-http:3.2.4] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:220) [62:org.apache.cxf.cxf-rt-transports-http:3.2.4] at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [16:javax.servlet-api:3.1.0] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:276) [62:org.apache.cxf.cxf-rt-transports-http:3.2.4] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848) [169:org.eclipse.jetty.servlet:9.3.21.v20170918] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1772) [169:org.eclipse.jetty.servlet:9.3.21.v20170918] at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:205) [179:org.eclipse.jetty.websocket.server:9.3.21.v20170918] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) [169:org.eclipse.jetty.servlet:9.3.21.v20170918] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582) [169:org.eclipse.jetty.servlet:9.3.21.v20170918] at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [187:org.ops4j.pax.web.pax-web-jetty:6.0.9] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [168:org.eclipse.jetty.server:9.3.21.v20170918] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [166:org.eclipse.jetty.security:9.3.21.v20170918] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [168:org.eclipse.jetty.server:9.3.21.v20170918] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [168:org.eclipse.jetty.server:9.3.21.v20170918] at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284) [187:org.ops4j.pax.web.pax-web-jetty:6.0.9] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) [169:org.eclipse.jetty.servlet:9.3.21.v20170918] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [168:org.eclipse.jetty.server:9.3.21.v20170918] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [168:org.eclipse.jetty.server:9.3.21.v20170918] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [168:org.eclipse.jetty.server:9.3.21.v20170918] at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [187:org.ops4j.pax.web.pax-web-jetty:6.0.9] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [168:org.eclipse.jetty.server:9.3.21.v20170918] at org.eclipse.jetty.server.Server.handle(Server.java:534) [168:org.eclipse.jetty.server:9.3.21.v20170918] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333) [168:org.eclipse.jetty.server:9.3.21.v20170918] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) [168:org.eclipse.jetty.server:9.3.21.v20170918] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283) [160:org.eclipse.jetty.io:9.3.21.v20170918] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108) [160:org.eclipse.jetty.io:9.3.21.v20170918] at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:251) [160:org.eclipse.jetty.io:9.3.21.v20170918] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283) [160:org.eclipse.jetty.io:9.3.21.v20170918] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108) [160:org.eclipse.jetty.io:9.3.21.v20170918] at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [160:org.eclipse.jetty.io:9.3.21.v20170918] at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [171:org.eclipse.jetty.util:9.3.21.v20170918] at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [171:org.eclipse.jetty.util:9.3.21.v20170918] at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [171:org.eclipse.jetty.util:9.3.21.v20170918] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [171:org.eclipse.jetty.util:9.3.21.v20170918] at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [171:org.eclipse.jetty.util:9.3.21.v20170918] at java.lang.Thread.run(Thread.java:748) [?:?] Caused by: javax.ws.rs.client.ResponseProcessingException: No message body reader has been found for class javax.ws.rs.core.Response, ContentType: application/xml at org.apache.cxf.jaxrs.impl.ResponseImpl.reportMessageHandlerProblem(ResponseImpl.java:434) ~[49:org.apache.cxf.cxf-rt-frontend-jaxrs:3.2.4] at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:387) ~[49:org.apache.cxf.cxf-rt-frontend-jaxrs:3.2.4] at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:317) ~[49:org.apache.cxf.cxf-rt-frontend-jaxrs:3.2.4] at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:305) ~[49:org.apache.cxf.cxf-rt-frontend-jaxrs:3.2.4] at org.apache.camel.component.cxf.jaxrs.CxfRsProducer$CxfInvocationCallback.completed(CxfRsProducer.java:675) ~[?:?] at org.apache.camel.component.cxf.jaxrs.CxfRsProducer$CxfInvocationCallback.completed(CxfRsProducer.java:636) ~[?:?] at org.apache.cxf.jaxrs.client.JaxrsClientCallback.handleResponse(JaxrsClientCallback.java:76) ~[55:org.apache.cxf.cxf-rt-rs-client:3.2.4] at org.apache.cxf.jaxrs.client.WebClient$ClientAsyncResponseInterceptor.doHandleAsyncResponse(WebClient.java:998) ~[55:org.apache.cxf.cxf-rt-rs-client:3.2.4] at org.apache.cxf.jaxrs.client.AbstractClient$AbstractClientAsyncResponseInterceptor.handleAsyncResponse(AbstractClient.java:1317) ~[55:org.apache.cxf.cxf-rt-rs-client:3.2.4] at org.apache.cxf.jaxrs.client.AbstractClient$AbstractClientAsyncResponseInterceptor.handleMessage(AbstractClient.java:1286) ~[55:org.apache.cxf.cxf-rt-rs-client:3.2.4] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) ~[38:org.apache.cxf.cxf-core:3.2.4] at org.apache.cxf.jaxrs.client.ClientMessageObserver.onMessage(ClientMessageObserver.java:56) ~[55:org.apache.cxf.cxf-rt-rs-client:3.2.4] at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1695) ~[62:org.apache.cxf.cxf-rt-transports-http:3.2.4] at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1194) ~[62:org.apache.cxf.cxf-rt-transports-http:3.2.4] at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:421) ~[38:org.apache.cxf.cxf-core:3.2.4] 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:346) ~[38:org.apache.cxf.cxf-core:3.2.4]