I'm still trying to build an axis2 client, but I'm not skilled enough to find 
the problem here, so I ask for your advice. This is a long post, sorry.

When I run the ADB client, I get:

org.apache.axis2.databinding.ADBException: Unexpected subelement return

When I run the Xmlbeans client, I get no excpetions but a null result

sc_response.getSystemConnectResponse().getSystemConnectResult() == null

I suspect both problems have a common cause, e.g. the WSDL defines a 
systemConnectResponse data structure that the systemConnect service does not 
honor, so the generated axis clients (xmlbeans and adb) can't parse it.

Here is a snippet of the WSDL (I've cut the real one so that this contains 
only one method, but I believe it's still a well formed and valid WSDL):

<?xml version="1.0"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:tns="https://xxx.yyy.zzz/wss-demo/SoapServer/soap"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:soap-
enc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; name="Services_System" 
targetNamespace="https://xxx.yyy.zzz/wss-demo/SoapServer/soap";>
  <types>
    <xsd:schema targetNamespace="https://xxx.yyy.zzz/wss-
demo/SoapServer/soap">
      <xsd:element name="systemConnect">
        <xsd:complexType/>
      </xsd:element>
      <xsd:element name="systemConnectResponse">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="systemConnectResult" type="soap-enc:Array"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
  </types>
  <portType name="Services_SystemPort">
    <operation name="systemConnect">
      <documentation>systemConnect: return the SessionId for the 
connection</documentation>
      <input message="tns:systemConnectIn"/>
      <output message="tns:systemConnectOut"/>
    </operation>
  </portType>
  <binding name="Services_SystemBinding" type="tns:Services_SystemPort">
    <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="systemConnect">
      <soap:operation soapAction="https://xxx.yyy.zzz/wss-
demo/SoapServer/soap#systemConnect"/>
      <input>
        <soap:body use="literal" namespace="https://xxx.yyy.zzz/wss-
demo/SoapServer/soap"/>
      </input>
      <output>
        <soap:body use="literal" namespace="https://xxx.yyy.zzz/wss-
demo/SoapServer/soap"/>
      </output>
    </operation>  
  </binding>
  <service name="Services_SystemService">
    <port name="Services_SystemPort" binding="tns:Services_SystemBinding">
      <soap:address location="https://xxx.yyy.zzz/wss-demo/SoapServer/soap"/>
    </port>
  </service>
  <message name="systemConnectIn">
    <part name="parameters" element="tns:systemConnect"/>
  </message>
  <message name="systemConnectOut">
    <part name="parameters" element="tns:systemConnectResponse"/>
  </message>
</definitions>

And here is the xml I receive from the systemConnect call:

<?xml  version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:ns1="https://xxx.yyy.zzz/wss-demo/SoapServer/soap"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:ns2="http://xml.apache.org/xml-soap"; xmlns:SOAP-
ENC="http://schemas.xmlsoap.org/soap/encoding/"; SOAP-
ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
  <SOAP-ENV:Body>
    <ns1:systemConnectResponse>
      <return xsi:type="ns2:Map">
        <item>
          <key xsi:type="xsd:string">sessid</key>
          <value xsi:type="xsd:string">q1p2uot1au238ge56odulbfiv4</value>
        </item>
        <item>
          <key xsi:type="xsd:string">user</key>
          <value xsi:type="ns2:Map">
            <item>
              <key xsi:type="xsd:string">uid</key>
              <value xsi:type="xsd:int">0</value>
            </item>
            <item>
              <key xsi:type="xsd:string">hostname</key>
              <value xsi:type="xsd:string">172.20.80.68</value>
            </item>
            <item>
              <key xsi:type="xsd:string">roles</key>
              <value xsi:type="ns2:Map">
                <item>
                  <key xsi:type="xsd:int">1</key>
                  <value xsi:type="xsd:string">anonymous user</value>
                </item>
              </value>
            </item>
            <item>
              <key xsi:type="xsd:string">session</key>
              <value xsi:type="xsd:string"></value>
            </item>
            <item>
              <key xsi:type="xsd:string">cache</key>
              <value xsi:type="xsd:int">0</value>
            </item>
          </value>
        </item>
      </return>
    </ns1:systemConnectResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

I've replaced the real server name with xxx.yyy.zzz.

Can anyone tell me if this XML response is valid as per the wsdl schema and 
what eventually should be changed (in the wsdl) to make it valid? 
Unfortunately I couldn't find any validation service that lets me upload both 
the XML and the WSDL as XSD.

Thanks in advace
Lucio.

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@axis.apache.org
For additional commands, e-mail: java-user-h...@axis.apache.org

Reply via email to