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&amp;bindingStyle=SimpleConsumer&amp;propagateContexts=true&amp;continuationTimeout=120000"
/>
  <to
uri="cxfrs:bean:restClientEndpoint?propagateContexts=true&amp;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]

Reply via email to