axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gurkan, Ozzie (MAN-Corporate)" <Ozzie.Gur...@cox.com>
Subject RE: How do I tell Axis to deserilize an xml-soapSOAPStruct in stu bs?
Date Mon, 15 Dec 2003 18:51:09 GMT
This is a snippet from my wsdl, and I see that the "mapItem" definition is
under the apachesoap namespace. See, if moving it will fix it...

<schema targetNamespace="http://xml.apache.org/xml-soap"
xmlns="http://www.w3.org/2001/XMLSchema">
  <import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> 
  <complexType name="mapItem">
  <sequence>
  <element name="key" nillable="true" type="xsd:string" /> 
  <element name="value" nillable="true" type="xsd:string" /> 
  </sequence>
  </complexType>
  <complexType name="Map">
  <sequence>
  <element maxOccurs="unbounded" minOccurs="0" name="item"
type="apachesoap:mapItem" /> 
  </sequence>
  </complexType>
</schema>

Ozzie

-----Original Message-----
From: Scott Ellsworth [mailto:scott@alodar.com] 
Sent: Friday, December 12, 2003 7:01 PM
To: axis-user@ws.apache.org
Subject: How do I tell Axis to deserilize an xml-soapSOAPStruct in stubs?


Howdy, all.

I have read through the responses to my last post, and tried various 
experiments, but I think I am just missing something.  Here is a more 
specific, and thus hopefully easier question that might illuminate what 
I am missing.

I am trying to deserialize the following return from my 
SOAP::Lite-based server using axis-generated stub classes, and it is 
complaining that it cannot deserialize the SOAPStruct being returned.  
I have tried to provide one, and I am not sure why it is not being 
found:

			<s-gensym3 xsi:type="namesp2:SOAPStruct">
				<admin xsi:type="xsd:int">
					1
				</admin>
				<guest xsi:type="xsd:int">
					2
				</guest>
			</s-gensym3>

In the envelope, they defined namesp2 as 
xmlns:namesp2="http://xml.apache.org/xml-soap", thus I better define 
what to do with an xml.apache.org/xml-soapSOAPStruct.  I also need to 
tell it how to interpret the names and values.

I do this with the following <types> element - one defining my map, one 
defining the entries in the map, and one to tell it how to handle an 
xml-soap SOAPStruct:

	<types>
		<schema
			xmlns="http://www.w3.org/2001/XMLSchema"
	
targetNamespace="http://feature.alodar.com/Alodar/GBIB/"
		>
			<import
namespace="http://schemas.xmlsoap.org/soap/encoding/" />
			<complexType name="mapItem">
				<sequence>
					<element name="key" nillable="true"
type="string" />
					<element name="value"
nillable="true" type="string" />
				</sequence>
			</complexType>
			<complexType name="Map">
				<sequence>
					<element maxOccurs="unbounded"
minOccurs="0" name="item" 
type="tns:mapItem" />
				</sequence>
			</complexType>
		</schema>
		<schema
			xmlns="http://www.w3.org/2001/XMLSchema"
			targetNamespace="http://xml.apache.org/xml-soap"
		>
			<import
namespace="http://schemas.xmlsoap.org/soap/encoding/" />
			<complexType name="SOAPStruct">
				<all>
					<element name="Map" type="tns:Map"/>
				</all>
			</complexType>
		</schema>
	</types>

This should have defined what to do with an 
{xml.apache.org/xml-soap}SOAPStruct, as well as the Map and MapItems it 
contains.

When I run this, I get the error

      [java] Error: org.xml.sax.SAXException: Deserializing parameter 
's-gensym48':  could not find deserializer for type 
{http://xml.apache.org/xml-soap}SOAPStruct

This confuses me, though, because my WSDL contains a SOAPStruct def, as 
well as the map and map item I would have expected to have used.

For completeness, here are the messages and operations.

	<message name="idNameMapResponse">
		<part name="idNameMapReturnValue" type="tns:Map" />
	</message>

		<operation name="get_user_ids_by_name">
			<input message="tns:config_nameRequest" />
			<output message="tns:idNameMapResponse" />
		</operation>


Mime
View raw message