You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Madesclair Vivian <vm...@sopragroup.com> on 2009/07/16 11:56:38 UTC

wrong operation on CXF-BC : namespace not updated

Hi,
 
I found several posts about that, but none satisfied me. Especially, the
probleme is often with EIP but I use none.
 
I am using smx 3.3, and my use case is the following :
external -> CXF-BC consumer (1) -> CXF-BC provider (2) -> external (3)
 
Planning on future developpement, wsdl for (1) is slightly different
from wsdl for (2) and (3). I use 2 different namespaces :
xmlns:routerRecherche="http://172.31.196.135:8192/jbi/RouterRecherche"
xmlns:rechercheCA1="http://172.31.196.135:8080/axis/services/Recherche"
 
Therefore, the operation name in (2) is using the namespace from (1),
which is causing my webservice call to fail with a nullPointerException.
Several ideas from the internet said I should set the operation name,
but (3) has several operations available so it has to be dynamic.
 
I guess this use case happens very often, so I would like to know how I
should do it.
- If I use a marshaler, what is the parent marshaler class for the
CXF-BC component? is the org.apache.smx.soap.marshallers.SoapMarshaler
ok? How can I retrieve the new value of the namespace (defined in the
wsdl for (3) and used in (2) xbean) ?
- Can I use interceptors? I know nothing about those. Is there somewhere
I can read about handlers, interceptors and marshalers?
- I saw things about WS-adressing and the <ws:action> tag. Can it solve
my problem? How should I use that?
 
If you have any documents that could help me get my ideas clearer about
all those notions, I would be glad that you share them with me.
 
Best regards,
Vivian

Re: wrong operation on CXF-BC : namespace not updated

Posted by Freeman Fang <fr...@gmail.com>.
Hi,

Your problem is that the wsdl used for cxf bc consumer and cxf bc  
provider is mismatch(the different namespace).
To resolve it, one typical solution is put a servicemix-saxon(or  
similar xslt endpoint from servicemix-camel) between your cxf bc  
consumer and cxf bc provider to do the xml transform.
As cxf component leverage apache cxf so its internal process heavily  
based on the servicemodel(which is generated from your wsdl), so it  
must expect the the incoming message match the wsdl, so that it can  
parse to extract method name,etc.

Freeman



My comment inline
On 2009-7-16, at 下午5:56, Madesclair Vivian wrote:

> Hi,
>
> I found several posts about that, but none satisfied me. Especially,  
> the
> probleme is often with EIP but I use none.
>
> I am using smx 3.3, and my use case is the following :
> external -> CXF-BC consumer (1) -> CXF-BC provider (2) -> external (3)
>
> Planning on future developpement, wsdl for (1) is slightly different
> from wsdl for (2) and (3). I use 2 different namespaces :
> xmlns:routerRecherche="http://172.31.196.135:8192/jbi/RouterRecherche"
> xmlns:rechercheCA1="http://172.31.196.135:8080/axis/services/ 
> Recherche"
>
> Therefore, the operation name in (2) is using the namespace from (1),
> which is causing my webservice call to fail with a  
> nullPointerException.
> Several ideas from the internet said I should set the operation name,
> but (3) has several operations available so it has to be dynamic.
>
> I guess this use case happens very often, so I would like to know  
> how I
> should do it.
> - If I use a marshaler, what is the parent marshaler class for the
> CXF-BC component? is the org.apache.smx.soap.marshallers.SoapMarshaler
> ok? How can I retrieve the new value of the namespace (defined in the
> wsdl for (3) and used in (2) xbean) ?
> - Can I use interceptors? I know nothing about those. Is there  
> somewhere
> I can read about handlers, interceptors and marshalers?
> - I saw things about WS-adressing and the <ws:action> tag. Can it  
> solve
> my problem? How should I use that?
>
> If you have any documents that could help me get my ideas clearer  
> about
> all those notions, I would be glad that you share them with me.
>
> Best regards,
> Vivian


-- 
Freeman Fang
------------------------
Open Source SOA: http://fusesource.com