CXF client sending wrong namespaces

View: New views
3 Messages — Rating Filter:   Alert me  

CXF client sending wrong namespaces

by nigelm :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

My (cxf, aegis) webservice can be called successfully from .net.

Using something like
    ClientProxyFactoryBean sf = new JaxWsProxyFactoryBean();
    sf.setServiceClass(IInstallerService.class);

    AegisDatabinding db = new AegisDatabinding();
    sf.getServiceFactory().setDataBinding(db);
   
    sf.setAddress(url);
    IInstallerService service = (IInstallerService) sf.create();

    service.someMethod("asdf", ...)

Gets null parameters. The SOAP message that CXF sends is :

<soap:Body>
<ns1:executeCommand xmlns:ns1="http://interfaces.installer.services.commons.cswgroup.com/">
<ns1:arg0>woot</ns1:arg0><ns1:arg1 />
</ns1:executeCommand>
</soap:Body>

The .net (working) version is

<soap:Body>
<executeCommand xmlns="http://interfaces.installer.services.commons.cswgroup.com/">
<arg0 xmlns="">abc</arg0>
<arg1 xmlns="" />
</executeCommand>
</soap:Body>

The key being the xmlns="" parts. Is there some configuration option that I've missed ?

Re: CXF client sending wrong namespaces

by dkulp :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Aegis only likes qualified schemas.   There's a lot of things it won't  
do correctly if the schemas aren't qualified.

However, the JaxWs frontend, by default, generates unqualified  
schemas.   You are probably best to do
sf.getServiceFactory().setQualifyWrapperSchema(true);
In that case, the CXF message should be correct.     (and if you  
regenerate the .NET stuff, it should then also be correct)

Dan



On Jul 23, 2008, at 11:02 AM, nigelm wrote:

>
> My (cxf, aegis) webservice can be called successfully from .net.
>
> Using something like
>    ClientProxyFactoryBean sf = new JaxWsProxyFactoryBean();
>    sf.setServiceClass(IInstallerService.class);
>
>    AegisDatabinding db = new AegisDatabinding();
>    sf.getServiceFactory().setDataBinding(db);
>
>    sf.setAddress(url);
>    IInstallerService service = (IInstallerService) sf.create();
>
>    service.someMethod("asdf", ...)
>
> Gets null parameters. The SOAP message that CXF sends is :
>
> <soap:Body>
> <ns1:executeCommand
> xmlns:ns1="http://
> interfaces.installer.services.commons.cswgroup.com/">
> <ns1:arg0>woot</ns1:arg0><ns1:arg1 />
> </ns1:executeCommand>
> </soap:Body>
>
> The .net (working) version is
>
> <soap:Body>
> <executeCommand
> xmlns="http://interfaces.installer.services.commons.cswgroup.com/">
> <arg0 xmlns="">abc</arg0>
> <arg1 xmlns="" />
> </executeCommand>
> </soap:Body>
>
> The key being the xmlns="" parts. Is there some configuration option  
> that
> I've missed ?
>
> --
> View this message in context: http://www.nabble.com/CXF-client-sending-wrong-namespaces-tp18612764p18612764.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>

---
Daniel Kulp
dkulp@...
http://www.dankulp.com/blog





Re: CXF client sending wrong namespaces

by nigelm :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Ah - Ok. This service was exported from CXF with aegis; I'm also trying to upgrade to 2.1.1 - is there something I should be telling my server configuration to make the parameters qualified ?

These services have migrated steadily from XFire->CXF (2.0.x -> 2.1.1) so it's possible I've misssed something

dkulp wrote:
Aegis only likes qualified schemas.   There's a lot of things it won't  
do correctly if the schemas aren't qualified.

However, the JaxWs frontend, by default, generates unqualified  
schemas.   You are probably best to do
sf.getServiceFactory().setQualifyWrapperSchema(true);
In that case, the CXF message should be correct.     (and if you  
regenerate the .NET stuff, it should then also be correct)

Dan



On Jul 23, 2008, at 11:02 AM, nigelm wrote:

>
> My (cxf, aegis) webservice can be called successfully from .net.
>
> Using something like
>    ClientProxyFactoryBean sf = new JaxWsProxyFactoryBean();
>    sf.setServiceClass(IInstallerService.class);
>
>    AegisDatabinding db = new AegisDatabinding();
>    sf.getServiceFactory().setDataBinding(db);
>
>    sf.setAddress(url);
>    IInstallerService service = (IInstallerService) sf.create();
>
>    service.someMethod("asdf", ...)
>
> Gets null parameters. The SOAP message that CXF sends is :
>
> <soap:Body>
> <ns1:executeCommand
> xmlns:ns1="http://
> interfaces.installer.services.commons.cswgroup.com/">
> <ns1:arg0>woot</ns1:arg0><ns1:arg1 />
> </ns1:executeCommand>
> </soap:Body>
>
> The .net (working) version is
>
> <soap:Body>
> <executeCommand
> xmlns="http://interfaces.installer.services.commons.cswgroup.com/">
> <arg0 xmlns="">abc</arg0>
> <arg1 xmlns="" />
> </executeCommand>
> </soap:Body>
>
> The key being the xmlns="" parts. Is there some configuration option  
> that
> I've missed ?
>
> --
> View this message in context: http://www.nabble.com/CXF-client-sending-wrong-namespaces-tp18612764p18612764.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>

---
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog



LightInTheBox - Buy quality products at wholesale price