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)

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.

Reply via email to