I can't see any difference between the two message you append here. You mentioned one works but another one failed but they're exactly same to me.
I assume the message you post here is the one doesn't work, right?
My gut feeling is that camel-cxf strip off soapenv:Envelope when use PAYLOAD mode so that the xsi prefix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" declared in
soapenv:Envelope is missing. This might be addressed by configuration, I believe our camel-cxf expert will jump in to show how to do it.
The best practice for prefix declare is that it should be as near as possible to the element which use it, and this is the way that some modern soap stack(like cxf) follow.
My apologies. Below are the requests that show the problem. The difference is that in the request that works, I needed to add the "xsi" and "xsd" namespaces to the asd element.
REQUEST FAILS WITH PAYLOAD
I just wrote a simple unit test in camel-cxf and find current camel-cxf can deal with the namespace which is used in the element, but it can't handle the namespace that used as the attribute like this
I created a JIRA in Fuse MR for it, and committed a patch into the apache camel trunk.
Thanks Willem! Is there any chance of getting this in Came 2.6? I am using apache-servicemix-4.3.1-fuse-02-05, which I believe has Camel 2.6. Also, do you know how long it would take for this patch to make it into a FuseSource distro?
If you are a Fusesource subscriber then I suggest to use that channel to request the fix for the branch of the product you use.