Try it with 2.0 if it is possible. Just set the Header.list in the Camel out headers. If the headers that you are trying to set are defined in WSDL, you may not be able to set them with as the Header.list header since (I think) out parameters (Java objects) could be marshaled into SOAP headers. If you are dealing with SOAP headers, another option is PAYLOAD mode. It is a bit easier to work with SOAP headers. (see the section "How to deal with the message for a camel-cxf endpoint in PAYLOAD data format" in http://cwiki.apache.org/confluence/display/CAMEL/CXF). In 2.0, the body of camel message is a CxfPayload<SoapHeader> object. You can call CxfPayload.getHeaders() to get a List<Element> of SOAP headers. To set you response, you just set your CxfPayload object in out body of the exchange.
On Thu, Aug 27, 2009 at 12:06 AM, William Tam<[email protected]> wrote: > What version of Camel are you running? I remember that we had some > issue with SOAP headers getting dropped in older release. > https://issues.apache.org/activemq/browse/CAMEL-1474. Also, are the > headers that you are setting defined in your WSDL? > > > > > On Wed, Aug 26, 2009 at 5:02 PM, trivedi kumar > b<[email protected]> wrote: >> >> Hi, >> >> Sorry for the late response on this from my side, we could able to get the >> headers from the exchange but the problem that we are facing was how to set >> the headers on out message? Any sample code? >> >> Thanks, >> Trivedi >> >> >> William Tam wrote: >>> >>> Just took a peek at the doc. The PAYLOAD mode doc in that area needs >>> improvement, too. I will look into it. >>> >>> On Tue, Aug 25, 2009 at 11:01 AM, William Tam<[email protected]> wrote: >>>> Will do, Claus. :-) Getting SOAP headers and body have been >>>> documented for PAYLOAD mode (both 1.x and 2.x). For MESSAGE mode, it >>>> is not applicable as there is no SOAP processing (but we will mention >>>> it). We just have to add doc for POJO mode. >>>> >>>> On Tue, Aug 25, 2009 at 10:49 AM, Claus Ibsen<[email protected]> >>>> wrote: >>>>> On Tue, Aug 25, 2009 at 4:38 PM, William Tam<[email protected]> >>>>> wrote: >>>>>> In 1.x, we don't copy the Headers.list to Camel headers. You can get >>>>>> the Headers.list by first getting the CXF Message from Camel Message. >>>>>> And then, you can get the header list from CXF message. >>>>>> >>>>>> org.apache.camel.Message in = exchange.getIn(); >>>>>> org.apache.camel.component.cxf.CxfMessage body = >>>>>> (org.apache.camel.component.cxf.CxfMessage)in.getBody(); >>>>>> org.apache.cxf.message.Message cxfMessage = body.getMessage(); >>>>>> List<org.apache.cxf.headers.Header.Header> soapHeaders = >>>>>> cxfMessage.get(org.apache.cxf.headers.Header.Header.HEADER_LIST); >>>>>> >>>>> >>>>> No wonder CXF is hard, when you need all the "ugly" code above. >>>>> >>>>> As a lot of people are asking how to get SOAP headers from the 3 >>>>> dataFormats. >>>>> And as well how to get the body as type X. Or what the default type >>>>> the body is returned as etc. >>>>> >>>>> It would be cool and nice if we added such description and sample on >>>>> the CXF wiki page. >>>>> >>>>> Start with Camel 2.0 and then later if time we can do it for 1.x as >>>>> well. >>>>> >>>>> Camel 2.0 >>>>> ======== >>>>> About body and headers using dataFormat=POJO >>>>> bla bla >>>>> >>>>> About body and headers using dataFormat=MESSAGE >>>>> bla bla >>>>> >>>>> About body and headers using dataFormat=RAW >>>>> bla bla >>>>> >>>>> >>>>>> >>>>>> On Tue, Aug 25, 2009 at 10:18 AM, William Tam<[email protected]> >>>>>> wrote: >>>>>>> Are you using 2.x? (My reply was assuming you were using 2.x). >>>>>>> >>>>>>> On Tue, Aug 25, 2009 at 10:16 AM, William Tam<[email protected]> >>>>>>> wrote: >>>>>>>> In POJO mode, the SOAP headers are copied to Camel IN headers as >>>>>>>> "org.apache.cxf.headers.Headers.list." The header value is a List of >>>>>>>> CXF Header objects >>>>>>>> (http://svn.apache.org/repos/asf/cxf/trunk/api/src/main/java/org/apache/cxf/headers/Header.java). >>>>>>>> That's how you can read request SOAP headers. You can add/edit the >>>>>>>> Headers.list header of Camel OUT headers to modify the response SOAP >>>>>>>> headers. >>>>>>>> >>>>>>>> Hope this help. >>>>>>>> >>>>>>>> - William >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Aug 25, 2009 at 1:42 AM, Claus Ibsen<[email protected]> >>>>>>>> wrote: >>>>>>>>> On Thu, Aug 20, 2009 at 9:14 PM, trivedi kumar >>>>>>>>> b<[email protected]> wrote: >>>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> I have exposed webservice using cxf and dataformat is "POJO". With >>>>>>>>>> in the >>>>>>>>>> router, I want to get and set the soap headers in message exchange, >>>>>>>>>> can >>>>>>>>>> someone help me on this? >>>>>>>>>> >>>>>>>>> >>>>>>>>> Get the attention of Willem Jiang as he works on CXF. >>>>>>>>> >>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Trivedi >>>>>>>>>> -- >>>>>>>>>> View this message in context: >>>>>>>>>> http://www.nabble.com/setting-soap-headers-in-camel-cxf-router-tp25068148p25068148.html >>>>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Claus Ibsen >>>>>>>>> Apache Camel Committer >>>>>>>>> >>>>>>>>> Open Source Integration: http://fusesource.com >>>>>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>>>>> Twitter: http://twitter.com/davsclaus >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Claus Ibsen >>>>> Apache Camel Committer >>>>> >>>>> Open Source Integration: http://fusesource.com >>>>> Blog: http://davsclaus.blogspot.com/ >>>>> Twitter: http://twitter.com/davsclaus >>>>> >>>> >>> >>> >> >> -- >> View this message in context: >> http://www.nabble.com/setting-soap-headers-in-camel-cxf-router-tp25068148p25157965.html >> Sent from the Camel - Users mailing list archive at Nabble.com. >> >> >
