You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis1-java-user@axis.apache.org by aaa aaa <ka...@gmail.com> on 2010/04/20 10:15:30 UTC

Fwd: Trouble moving technical namespaces declaration from soapenv:envelope to business part of soap messages.

Hello,

I'm working on integration of a webservice, running under Axis1 v1.4. It is
actually working quite fine, handling SOAP requests and responding valide
SOAP response.

I still do have trouble with a SOAP client based on Biztalk. This client
extract Business information in SOAP message and try to validate it against
the WSDL of the WS.
The problem is that, in my SOAP response, some attributes refer to the
technical namespace "*xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance*"
*, which is* declared in the technical part of the message, in
soapenv:Envelope. When the business content is extracted from the technical
message, the message isn't validate against WSDL because he just don't know
the "xsi" namespace that content refer to.

Is there a way by changing server-config.wsdd or deploy.wsdd to associate
the xsi namespace to a new declaration in body part? I don't even know if
that request make sense or if I should consider things another way?!

Here is a typical message SOAP returned by the webservice and which show the
problem:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
*xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"*>
   <soapenv:Body>
      <synchronisationPersonneResponse xmlns="
http://app.domain.fr/service/impl <http://acd.areva.fr/service/impl>">
         <ns1:synchronisationPersonneReturn xmlns:ns1="
http://app.domain.fr/service/dto <http://acd.areva.fr/service/dto>">
            <ns1:recruteDate/>
            ...
            <ns1:postOfficeBox *xsi:nil="true"*/>
            <ns1:telephoneNumber *xsi:nil="true"*/>
            <ns1:titleLink>MISS</ns1:titleLink>
            <ns1:uid *xsi:nil="true*"/>
         </ns1:synchronisationPersonneReturn>
      </synchronisationPersonneResponse>
   </soapenv:Body>
</soapenv:Envelope>

In blue is the technical part of the SOAP message and in black the business
part.

I would need something like this, for instance:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"**>
   <soapenv:Body>
      <synchronisationPersonneResponse xmlns="
http://app.domain.fr/service/impl <http://acd.areva.fr/service/impl>" *
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"*>
         <ns1:synchronisationPersonneReturn xmlns:ns1="
http://app.domain.fr/service/dto <http://acd.areva.fr/service/dto>">
            <ns1:recruteDate/>
            ...
            <ns1:postOfficeBox *xsi:nil="true"*/>
            <ns1:telephoneNumber *xsi:nil="true"*/>
            <ns1:titleLink>MISS</ns1:titleLink>
            <ns1:uid *xsi:nil="true*"/>
         </ns1:synchronisationPersonneReturn>
      </synchronisationPersonneResponse>
   </soapenv:Body>
</soapenv:Envelope>

Lot of thanks by advance.

Greetings,

Kayser