Hi,
You get your soap response from external service, and then in
JbiInWsdl1Interceptor the getBodyElement(message) always return null, right?
Can you dump the onwire soap message returned from your external service
and also append your wsdl used by cxf bc provider?
I suspect the soap version mismatch cause this problem.
Also if you can attach a testcase, that's would be great.
Freeman
angeloNZ wrote:
Hi,
Here's my use case:
http:soap-consumer -> camel > cxf-provider-bc > external service
I'm using smx 3.3. I am getting my expected soap response however I am not
getting the xmlns:xsd definition and the xsi namespace comes up as
"xmlns:xsi=xsi".
I've looked at JbiOutWsdl1Interceptor and saw the fix that saves the
namespaces. I was also looking at JbiInWsdl1Interceptor and there was a
code portion that adds the xsi and xsd namespaces to the root element as
well. However, this particular method call below always returns null for me
which forces the handleMessage() to exit and not have any of the namespace
changes applied.
Element body = getBodyElement(message);
if (body == null) {
return;
}
Since I'm getting a soap response I'm assuming that some other interceptors
were invoked afterwards but I'm not sure which. If I use a
http:soap-provider instead, the xsd and xsi namespaces appear ok in the
operation element in the response. Any idea how to fix this cxf problem?
Freeman Fang wrote:
Hi,
I think we already fix this issue in smx 3.2.3 SNAPSHOT. [1] tracked
this issue
[1]https://issues.apache.org/activemq/browse/SM-1556
Freeman
servicer-mixer wrote:
I'm currently using smx 3.2.2 with the following endpoints
cxf-consumer-bc=>cxf-provider-bc=>external service
The reply Envelope element from the external service looks like this:
<soap:Envelope xmlns:xop="http://www.w3.org/2004/08/xop/include"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
However, the reply returned from cxf-consumer-bc is:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
I'm failing to parse the reply because one of the elements in the reply
looks like this:
<DeclineReason xsi:nil="true" />
I think this is similar to SM-1172, but the original namespace is
declared
on the external reply and not the jbi message.
Is there any way to force the consumer to add namespace declarations to
the
reply?
Thanks