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. >
