camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Beryozkin <sberyoz...@gmail.com>
Subject Re: URL overwriting - SOAP vs restful
Date Wed, 13 Feb 2013 16:15:04 GMT
Hi,
On 13/02/13 15:45, jdev.hari wrote:
> Hi,
>
> I define my end point in camel context xml and during runtime I override
> them as I get it from a Service catalogue service.
>
> For SOAP webservice invocations, I am able to do the following in a
> processor just before the cxf bean invocation.
>
> Map<String, Object>  requestContext = new HashMap<String, Object>();
> requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,endPointURL);
> exchange.getOut().setHeader(Client.REQUEST_CONTEXT, requestContext);
>
> And this works as well. However if I try to do the same with restful
> services. I get the following error (note, without overriding the call goes
> through fine with restful services)
>
BindingProvider.ENDPOINT_ADDRESS_PROPERTY is not recognized by the 
client RS runtime, can you try

final String REQUEST_URI = "org.apache.cxf.request.uri";
exchange.getOut().setHeader(REQUEST_URI, endPointURL);

Not sure if it will work in Camel right now, though I'm pretty sure we 
have a CXF test for changing the original address, let me know please

Cheers, Sergey

> Caused by: org.apache.camel.component.cxf.CxfOperationException: JAXRS
> operation failed invoking direct://matching with statusCode: 404
> 	at
> org.apache.camel.component.cxf.jaxrs.CxfRsProducer.populateCxfRsProducerException(CxfRsProducer.java:317)
> 	at
> org.apache.camel.component.cxf.jaxrs.CxfRsProducer.invokeHttpClient(CxfRsProducer.java:177)
> 	at
> org.apache.camel.component.cxf.jaxrs.CxfRsProducer.process(CxfRsProducer.java:87)
> 	at
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
>
> I turned on the outgoing Webservice logging interceptor and I see the
> following
>
>   INFO  : Outbound Message
> ---------------------------
> ID: 4
> Address: http://localhost:9084/yyy/services/ABC
> Content-Type: */*
> Headers:
> {RequestContext=[{javax.xml.ws.service.endpoint.address=http://xxx:9080/yyy/services/ABC}],
> Content-Type=[*/*], Connection=[Keep-Alive], Accept=[*/*]}
> --------------------------------------
>
>
> The URL http://locahost:9084/yyy/services/ABC is present in camel endpoint
> xml, whereas http://xxx:9080/yyy/services/ABC is the URL that needs to be
> overridden.
>
> The same service if I model as SOAP based, the url overwriting works well.
> The outgoing request was
>
>
> INFO  : Outbound Message
> ---------------------------
> ID: 2
> Address: http://XXX:9080/yyy/services/ABC
> Encoding: UTF-8
> Content-Type: text/xml
> Headers: {Accept=[*/*], Connection=[Keep-Alive], SOAPAction=[""]}
> Payload:<soap:Envelope
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body>......content
> removed for brevity.......</soap:Envelope>
> --------------------------------------
>
> Any inputs on this.
>
> Regards,
> Hari
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/URL-overwriting-SOAP-vs-restful-tp5727526.html
> Sent from the Camel - Users mailing list archive at Nabble.com.

Mime
View raw message