Hi,
I'm using gsoap to generate the wsdl file that I wanted to access with Axis 1.1. I
used wsdl2java to generate the stub classes. However, I ran into the following
problem:
-----------------------------------------------------
...
faultString: org.xml.sax.SAXException: Deserializing parameter 'result':
could not find deserializer for type {urn:cees}QueryResponseCollection
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace: org.xml.sax.SAXException:
Deserializing parameter 'result': could not find deserializer for type
{urn:cees}QueryResponseCollection
at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:302)
...
-----------------------------------------------------
Can somebody tell me what can possibly go wrong? It seems like it can't seem to
deserialize the <result> tag in the response. I only have one function that returns
an array of QueryResponse (that consists of just a subject line and id). It should be
pretty simple. One thing I realized is that the wsdl2java generated the
QueryResonse.java stub but not the QueryResponseCollection (the array) that I defined
in gsoap. The gsoap client that uses the same library can access the service fine.
The schema section for the wsdl file generated by gsoap looks like:
--------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="Cees"
xmlns="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://localhost:8080/Cees.wsdl"
xmlns:tns="http://localhost:8080/Cees.wsdl"
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:ns="urn:cees"
xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:WSDL="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema targetNamespace="urn:cees"
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:ns="urn:cees"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified"
attributeFormDefault="unqualified">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="QueryResponse">
<sequence>
<element name="docID" type="xsd:string" minOccurs="0" maxOccurs="1"
nillable="true"/>
<element name="subject" type="xsd:string" minOccurs="0" maxOccurs="1"
nillable="true"/>
</sequence>
</complexType>
<complexType name="QueryResponseCollection">
<sequence>
<element name="item" type="ns:QueryResponse" minOccurs="0" maxOccurs="unbounded"
nillable="true"/>
</sequence>
</complexType>
<element name="query" type="xsd:string"/>
<element name="result" type="ns:QueryResponseCollection"/>
</schema>
</types>
<message name="queryRequest">
<part name="query" element="ns:query"/>
</message>
<message name="queryResponse">
<part name="result" element="ns:result"/>
</message>
<portType name="CeesPortType">
<operation name="query">
<documentation>Service definition of function ns__query</documentation>
<input message="tns:queryRequest"/>
<output message="tns:queryResponse"/>
</operation>
</portType>
<binding name="Cees" type="tns:CeesPortType">
<SOAP:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="query">
<SOAP:operation soapAction=""/>
<input>
<SOAP:body use="literal" namespace="urn:cees"/>
</input>
<output>
<SOAP:body use="literal" namespace="urn:cees"/>
</output>
</operation>
</binding>
<service name="Cees">
<documentation>gSOAP 2.5.2 generated service definition</documentation>
<port name="Cees" binding="tns:Cees">
<SOAP:address location="http://localhost:8080"/>
</port>
</service>
</definitions>
----------------------------------------------------
Note the interface CeesPortType.java generated is (I know the package name is messed
up...):
---------------------------------------------------
package localhost.Cees_wsdl;
public interface CeesPortType extends java.rmi.Remote {
// Service definition of function ns__query
public cees.soap.QueryResponse[] query(java.lang.String query) throws
java.rmi.RemoteException;
}
-----------------------------------------------------
Note that there is no QueryResponseCollection generated by wsdl2java. Is there a
reason why?
Thanks,
Will
--
William (Will) Lee
Email: [EMAIL PROTECTED]
Computer Science, University of Illinois at Urbana-Champaign