I remove the xmlbeans usage to use an interface using String as input and output parameter types.
package com.bsb.incubator.esb.fuse4; import javax.jws.WebParam; import javax.jws.WebService; @WebService(targetNamespace = "http://www.bsb.com/incubator/esb") public interface IWS { String GetPerson(@WebParam(name="socialId") String socialId) ; } Using the debugger it seems that the exchange variable does not contains the request payload. Here is content: Header: [] Body: [[esb:GetPerson: null]] http://old.nabble.com/file/p28241790/%255BPAYLOAD%255DCxfPayload.png I provided the sample of my project. Olivier Roger wrote: > > 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. > > http://old.nabble.com/file/p28241790/CXFPayload.zip CXFPayload.zip > > 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-tp28240799p28241790.html Sent from the Camel - Users mailing list archive at Nabble.com.
