camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Olivier Roger <olivier.ro...@bsb.com>
Subject Re: [CXF] Inbound endpoint with PAYLOAD dataformat
Date Wed, 14 Apr 2010 11:32:01 GMT

Thanks for you input willem,

I am using the lastest Fuse ESB distribution which includes Camel 2.2.
I will try to launch the example you indicated and what is different from my
implementation.

If I cannot figure it out I will provide a sample project.

Olivier


willem.jiang wrote:
> 
> I just ran a simple test by printing out the result of 
> exchange.getIn().getBody(String.class) in the 
> CxfConsumerPayloadTest.java on the trunk (Camel 2.3-SNAPSHOT), I can see 
> the message body was printed out rightly.
> 
> Which version of Camel are you using ?
> 
> Willem
> 
> Willem Jiang wrote:
>> Hi,
>> 
>> When you use exchange.getIn().getBody(String.class) to get the message,
>> camel will try to find a right converter to turn PayLoad (the actual 
>> object stored in the message body) into String.
>> It looks like there is not a converter to do this job, so you got null.
>> If I remember right, a StringConverter should be use in this case, I 
>> don't know why it doesn't work for you.
>> If you use exchange.getIn().getBody() , you should get the PayLoad 
>> object. You can find more detail example here[1]
>> 
>> [1]https://svn.apache.org/repos/asf/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadTest.java

>> 
>> 
>> Willem
>> 
>> Olivier Roger wrote:
>>> Hello Camel,
>>>
>>> I am experimenting a strange issue when using CXF inbound endpoint with
>>> PAYLOAD dataformat option (no problem in MESSAGE mode).
>>>
>>> First I declare a CXF endpoint:
>>>
>>>     <cxf:cxfEndpoint id="F1" address="http://localhost:10101/F1"
>>> serviceClass="CXFUseCase"> <!-- Interface with one method -->
>>>         <cxf:dataBinding>
>>>             <bean class="org.apache.cxf.xmlbeans.XmlBeansDataBinding" />
>>>         </cxf:dataBinding>
>>>         <cxf:properties>
>>>             <entry key="dataFormat" value="PAYLOAD"/>
>>>         </cxf:properties>
>>>     </cxf:cxfEndpoint>
>>>
>>> Then, in my route I use it:
>>>
>>>         <route>
>>>             <from uri="cxf:bean:F1" />
>>>             <bean ref="inspect" />
>>>
>>> When I debug in the inspect bean the Exchange object does not contain
>>> any
>>> value.
>>> However, setting a response value works correctly.
>>>
>>>     public void process(final Exchange exchange){
>>>         String msg = exchange.getIn().getBody(String.class);
>>>         System.out.println(msg); // is null
>>>         exchange.getOut().setBody(createResponse(), 
>>> PersonDocument.class); //
>>> is ok
>>>     }
>>>
>>> I read the documentation on the website but found it quite not clear. 
>>> Am I
>>> doing something wrong?
>>>
>>> Thanks in advance,
>>>
>>> Olivier
>> 
>> 
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/-CXF--Inbound-endpoint-with-PAYLOAD-dataformat-tp28240799p28241427.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Mime
View raw message