OK. I have changed my response to contain a complex data type and upgraded
everything to Axis 1.1 RC1. My call now looks like

--------------------------
    try
    {
      Service service = new Service();
      Call    call    = (Call) service.createCall();
      QName   qn      = new QName( "urn:remote-adap", "AdapterInfo" );

      call.registerTypeMapping(AdapterInfo.class,
                               qn,
                               new
org.apache.axis.encoding.ser.BeanSerializerFactory(AdapterInfo.class, qn),
                               new
org.apache.axis.encoding.ser.BeanDeserializerFactory(AdapterInfo.class,
qn));

      call.setTargetEndpointAddress(ServerUrl);
      call.setOperationName(new QName("urn:remote-adap",
"GetAdapterInfo") );
      call.addParameter("Adapter",
                        org.apache.axis.Constants.XSD_INT,
                        javax.xml.rpc.ParameterMode.IN);
      call.setReturnType(qn);

      Object ret = call.invoke( new Object[] { new Integer(AdapterID) } );

        System.out.println("invoke ret type=" + ret.getClass());
        System.out.println("invoke ret=" + ret.toString());
    }
    catch (javax.xml.rpc.ServiceException se)
    {
      System.err.println("Caught ServiceException:" + se.getMessage());
      return output;
    }
    catch (java.rmi.RemoteException re)
    {
      System.err.println("Caught RemoteException:" + re.getMessage());
      return output;
    }

-----------------------------------

and the data flow is

==== Request ====
POST / HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.1RC1
Host: 192.168.1.100
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 462

<?xml version="1.0" encoding="UTF-8"?>
<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>
  <ns1:GetAdapterInfo
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
                      xmlns:ns1="urn:remote-adap">
   <Adapter xsi:type="xsd:int">1</Adapter>
  </ns1:GetAdapterInfo>
 </soapenv:Body>
</soapenv:Envelope>

==== Response ====
HTTP/1.0 200 OK
Server: gSOAP/2.2
Content-Type: text/xml; charset=utf-8
Content-Length: 1581
Connection: close

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";

xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/";
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema";
                   xmlns:ns1="urn:remote-adap">
 <SOAP-ENV:Body
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
  <ns1:GetAdapInfoResponse>
   <AdapterInfo xsi:type="ns1:AdapterInfo">
    <IoctlError xsi:type="xsd:int">0</IoctlError>
    <QueryError xsi:type="xsd:int">0</QueryError>
    <AdapterID xsi:type="xsd:int">1</AdapterID>
    <MemBase xsi:type="xsd:int">-335544320</MemBase>
    <IoBase xsi:type="xsd:int">-144719872</IoBase>
   </AdapterInfo>
  </ns1:GetAdapInfoResponse>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
==============

But when I run this I get a SAX exception saying

- Exception:
org.xml.sax.SAXException: Invalid element in AdapterInfo - IoctlError
        at
org.apache.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.
java:260)
        at
org.apache.axis.encoding.DeserializationContextImpl.startElement(Deserializa
tionContextImpl.java:921)
        at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)
        at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:
699)
        at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:224)
        at org.apache.axis.message.RPCElement.getParams(RPCElement.java:331)
        at org.apache.axis.client.Call.invoke(Call.java:2200)
        at org.apache.axis.client.Call.invoke(Call.java:2099)
        at org.apache.axis.client.Call.invoke(Call.java:1622)


but IoctlError IS in the AdapterInfo class.

Any suggestions?

-----Original Message-----
From: Scott Nichol [mailto:[EMAIL PROTECTED]
Sent: Tuesday, March 04, 2003 6:11 PM
To: [EMAIL PROTECTED]
Subject: RE: Response Data Mapping Problems


The <ns:GetAdapInfoResponse> element is *not* part of the XML you can
map.  You can only map elements within that one, i.e. that element
delimits the response "parameters".  It is *not* part of the
"parameters" themselves.

Reply via email to