Running in debug mode i've seen that axis engine calls RPCHandler on first child of 
soap body.
So it doesn't call my own deserializer.
Is there a manner to make axis engine call my own deserializer instead of RPCHandler?

A.T.


> Hi all,
> I've written my own (de)serializers and my own provider and 
> i've successfully deployed them on Axis.
> Now i've a problem with document style:
> with this style a soap message coming from a client looks like this:
> 
> <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>
>   <IN01 xmlns="http://www.cadit.it/city/service/ZZ/ZZGWOPR/Schema";>
>    <SELA>ELABORA</SELA>
>    <COPRDA>a</COPRDA>
>    <COPRA>z</COPRA>
>   </IN01>
>  </soapenv:Body>
> </soapenv:Envelope>
> 
> I need that Axis engine calls the deserializer registered for element
> {http://www.cadit.it/city/service/ZZ/ZZGWOPR/Schema}IN01
> 
> but it doesn't call it. It proceeds with his children (SELA, 
> COPRDA and COPRA).
> 
> The piece of provider source code that calls the 
> deserialization is this:
> 
> ...
> Message reqMsg = msgContext.getRequestMessage();
> SOAPEnvelope reqEnv  = reqMsg.getSOAPEnvelope();
> Vector bodies = reqEnv.getBodyElements();
> RPCElement body = null;
> for (int i = 0; body == null && i < bodies.size(); i++)
> {
>       if (bodies.get(i) instanceof RPCElement) {
>               body = (RPCElement) bodies.get(i);
>       }
>       Vector params = null;
>       try
>       {
>               body.deserialize();
>       }
> ...
> 
> 
> 
> 
> With rpc style (use literal) soap message looks like this:
> 
> <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>
>   <M01 
> xmlns="http://www.cadit.it/city/service/ZZ/ZZGWOPR/SOAPBinding";>
>    <ns1:IN01 
> xmlns:ns1="http://www.cadit.it/city/service/ZZ/ZZGWOPR/Schema";>
>     <ns1:SELA>ELABORA</ns1:SELA>
>     <ns1:COPRDA>a</ns1:COPRDA>
>     <ns1:COPRA>z</ns1:COPRA>
>    </ns1:IN01>
>   </M01>
>  </soapenv:Body>
> </soapenv:Envelope>
> 
> and in this case Axis engine calls my deserializer for IN01 element.
> 
> any helps?
> 
> thanks
> 
> A.T.
> 

Reply via email to