Thanks, Willem.  I thought I had tried setting the operation on the endpoint 
but still had a problem...I'll try it again to see if I can get it working.

I looked at the test code you submitted, and see how to set the operation there 
(via a header).  All of the examples at [1] set the header value within a 
custom Processor...is that the only way to do it, or is there a way to do it 
within the camel-context.xml, inside the cxf:cxfEndpoint?  When I tried it 
before, I set the defaultOperationName and defaultOperationNamespace on the 
URI, but as I mentioned, that didn't work for me...

[1] http://camel.apache.org/cxf.html#CXF-HowtogetandsetSOAPheadersinPAYLOADmode

Thanks.

--Scott

-----Original Message-----
From: Willem Jiang [mailto:willem.ji...@gmail.com] 
Sent: Sunday, March 06, 2011 8:44 PM
To: users@camel.apache.org
Subject: Re: Generic file -> CXF Payload type converter issues

Hi Scott,

I just create a simple test to reproduce the error and found you need to 
specify a right operation in you cxf endpoint to make sure the elements of the 
PayLoad Message can be set rightly into the CXF request message.

So I create a JIRA[1] and commit a quick fix[2] for it.
[1]https://issues.apache.org/jira/browse/CAMEL-3761
[2]http://svn.apache.org/viewvc?rev=1078684&view=rev


Willem

On 3/5/11 9:41 AM, Scott Came wrote:
> Per Willem's advice [1] I have attempted to bring in the CxfPayloadConverter 
> from 2.7-SNAPSHOT [2] so that I can make the following Camel route work:
>
> <osgi:camelContext xmlns="http://camel.apache.org/schema/spring";>
>      <route>
>        <from uri="file:/tmp/tsc-input"/>
>        <to uri="cxf:bean:outEndpoint?dataFormat=PAYLOAD"/>
>      </route>
>    </osgi:camelContext>
>
> I am able to build and deploy the converter just fine within my osgi bundle.  
> However, I've run into a problem whereby the body on the converted message is 
> empty.  I know this because I am routing the outbound message through tcpmon, 
> and it just has a<soap:Body/>  element where the body should be:
>
> Content-Type: text/xml; charset=UTF-8
> SOAPAction: "http://it.ojp.gov/GlobalJRA/TSCEI/0.9.4/ws/SendEncounter";
> Accept: */*
> User-Agent: Apache CXF 2.3.2-fuse-00-00
> Cache-Control: no-cache
> Pragma: no-cache
> Host: 127.0.0.1:18081
> Connection: keep-alive
> Content-Length: 98
>
> <soap:Envelope 
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";><soap:Body/></s
> oap:Envelope>
>
> To try to identify the problem, I have reduced the converter down to a single 
> method (see attached, method genericFileToCxfPayload(...)).  The code is 
> running, and when I set the log level to debug, I see the full body in the 
> debug messages.  So I am confident the payload object being returned has a 
> proper body...it's just getting lost somewhere before the message hits the 
> wire.  How could that happen?
>
> Oddly enough, I discovered that not only was the GenericFile ->  CxfPayload 
> converter called, but it is also wanting to convert from CxfPayload ->  
> String.  I can't imagine why this is the case.  I do have another OSGi 
> bundle, with a camel route, deployed in this same instance of servicemix, and 
> that bundle's route does go from CxfPayload ->  String.  But it is in a 
> separate bundle, so my assumption would be that the type converter class 
> would not be accessible.  Is that assumption incorrect?  In any case, the 
> debug message in the CxfPayloadToString method in the attached does get 
> called, and the payload.getBody() call there returns null.
>
> Thanks for any advice.
> --Scott
>
> [1] http://www.mail-archive.com/users@camel.apache.org/msg13115.html
> [2] 
> https://svn.apache.org/repos/asf/camel/trunk/components/camel-cxf/src/
> main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter
> .java
>


--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
          http://jnn.javaeye.com (Chinese)
Twitter: willemjiang

Reply via email to