thanks for your answer but now I'm totally confused...
If I set CamelCxfRsUsingHttpAPI to true the getKodtarElemListByType
works properly.
But in this case I got exception for
@POST
public Response createKodtarElem(KodtarDto dto);
08:49:11,874 SEVERE [org.apache.cxf.jaxrs.utils.JAXRSUtils] (default
task-10) No message body writer has been found for class
hu.fornax.tua.kodtar.dto.KodtarDto, ContentType: application/xml
08:49:11,875 WARNING [org.apache.cxf.phase.PhaseInterceptorChain]
(default task-10) Interceptor for
{http://localhost:8080/tua-kodtar/rest}WebClient has thrown exception,
unwinding now: org.apache.cxf.interceptor.Fault: No message body
writer has been found for class hu.fornax.tua.kodtar.dto.KodtarDto,
ContentType: application/xml
The json provider is set (&providers=#jsonProvider), I have tried with
JacksonJaxbJsonProvider and with JacksonJsonProvider as well
If I set CamelCxfRsUsingHttpAPI to false the @Post works. Otherwise
getting NPE to the @GET as I wrote in my first mail.
I want only to proxy rest request to an other service where a cxfrs
rest endpoint consume, please help me how I can solve it?
Thanks again your support!
Freeman Fang <[email protected]> ezt írta (időpont: 2019. júl.
9., K, 19:33):
>
> Hi,
>
> The difference with camel-cxf proxy is that you have
> setHeader("CamelCxfRsUsingHttpAPI", constant("false”)) in the route, which
> means you will use proxy client to invoke the RS server, so the para types
> must match the one in resourceClasses, without camel-cxf proxy you actually
> use http client. If you have setHeader("CamelCxfRsUsingHttpAPI",
> constant(“true”)) in your router the behaviour should be same with or without
> proxy.
>
> So if you have setHeader("CamelCxfRsUsingHttpAPI", constant("false”)) ,
> ensure you have all parameters available in the payload.
>
> I think we probably can enhance here a bit, instead of throw NPE, throwing
> NoSuchMethodException if can’t find match method in the client proxy.
> -------------
> Freeman(Yue) Fang
>
> Red Hat, Inc.
>
>
>
>
>
> > On Jul 9, 2019, at 7:32 AM, Zoltán Balogh <[email protected]> wrote:
> >
> > Hi,
> >
> > why the cxfrs producer not accept null query params? Should I set an
> > additional parameter to pass null value?
> >
> > My route:
> > from("cxfrs:http://localhost:8080/tua"
> > + "?resourceClasses="
> > + "hu.fornax.tua.kodtar.protocol.rest.KodtarREST"
> > + "&loggingFeatureEnabled=true"
> > + "&providers=#jsonProvider")
> > .removeHeader("Content-Type")
> > .setHeader("CamelCxfRsUsingHttpAPI",
> > constant("false"))
> > .log(ESBLog.ESB + "REST request: ${headers}")
> > .to("cxfrs:http://localhost:8080/tua-kodtar/rest"
> > +
> > "?resourceClasses=hu.fornax.tua.kodtar.protocol.rest.KodtarREST&throwExceptionOnFailure=false&loggingFeatureEnabled=true&providers=#jsonProvider")
> > .otherwise()
> >
> > The rest interface:
> >
> > @Path("/{type}")
> > public List<KodtarDto> getKodtarElemListByType(@PathParam("type")
> > KodtarType type, @QueryParam("id") Long id);
> >
> > If I call the consumer (cxfrs://http://localhost:8080/tua) to proxy the
> > request:
> >
> > 13:23:34,882 ERROR [org.apache.camel.processor.DefaultErrorHandler]
> > (default task-2) Failed delivery for (MessageId:
> > ID-DESKTOP-A2U86J9-59663-1562671187095-11-1 on ExchangeId:
> > ID-DESKTOP-A2U86J9-59663-1562671187095-11-2). Exhausted after delivery
> > attempt: 1 caught: java.lang.NullPointerException
> >
> > Message History
> > ---------------------------------------------------------------------------------------------------------------------------------------
> > RouteId ProcessorId Processor
> > Elapsed (ms)
> > [route15 ] [route15 ]
> > [cxfrs://http://localhost:8080/tua?loggingFeatureEnabled=true&providers=%23json]
> > [ 65]
> > [route15 ] [removeHeader1 ] [removeHeader[Content-Type]
> > ] [ 1]
> > [route15 ] [setHeader3 ]
> > [setHeader[CamelCxfRsUsingHttpAPI]
> > ] [ 0]
> > [route15 ] [log31 ] [log
> > ] [ 3]
> > [route15 ] [log32 ] [log
> > ] [ 1]
> > [route15 ] [choice3 ]
> > [when[{header{header(CamelHttpUri)} contains
> > /tua/api/file}]choice[when[{header] [ 54]
> > [route15 ] [to8 ]
> > [cxfrs:http://localhost:8080/tua-kodtar/rest?resourceClasses=hu.fornax.tua.kodt]
> > [ 49]
> >
> > Stacktrace
> > ---------------------------------------------------------------------------------------------------------------------------------------:
> > java.lang.NullPointerException
> > at
> > org.apache.camel.component.cxf.jaxrs.CxfRsProducer.getParameterTypes(CxfRsProducer.java:524)
> > at
> > org.apache.camel.component.cxf.jaxrs.CxfRsProducer.invokeProxyClient(CxfRsProducer.java:430)
> > at
> > org.apache.camel.component.cxf.jaxrs.CxfRsProducer.process(CxfRsProducer.java:103)
> > at
> > org.apache.camel.impl.SynchronousDelegateProducer.process(SynchronousDelegateProducer.java:62)
> > at
> > org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
> > at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
> > at
> > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
> > at
> > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
> > at
> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
> > at
> > org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:117)
> > at
> > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
> > at
> > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
> > at
> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
> > at org.apache.camel.processor.Pipeline.process(Pipeline.java:120)
> > at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
> > at
> > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
> > at
> > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
> > at
> > org.apache.camel.component.cxf.jaxrs.CxfRsInvoker.syncInvoke(CxfRsInvoker.java:139)
> > at
> > org.apache.camel.component.cxf.jaxrs.CxfRsInvoker.performInvocation(CxfRsInvoker.java:72)
> >
> >
> > If the queryparam is set with value that is not null the route works
> > and calling the service consumer directly without adding "id" it works
> > as well (cxfrs:http://localhost:8080/tua-kodtar/rest)....
> > If I want to proxy the request getting NullPointerException.
> > env: WildFly-Camel 4.9.0
> >
> > Thanks for your help!
> > Topicfun
>