ZSI receiving complex type problem

catherine_jervis at hotmail.com catherine_jervis at hotmail.com
Tue Feb 5 20:29:04 CET 2008


I have a ZSI client talking to a perl program through SOAP.  The perl
program has defined a return type of $esmith::recExtend, where
esmith::recExtend is a complex type defined in the WSDL as follows:
<complexType name="EsmithRecExtend">
	<sequence>
		<element name="databasename" nillable="true" type="xsd:string">
		</element>
		<element name="key" nillable="true" type="xsd:string">
		</element>
		<element name="properties" nillable="true"
type="tns1:ArrayOfString">
		</element>
		<element name="values" nillable="true" type="tns1:ArrayOfString">
		</element>
		<element name="size" nillable="true" type="xsd:int">
		</element>
	</sequence>
</complexType>

The perl method returns an esmith::recExtend object as follows:

$record = esmith::recExtend->new('dbname, $dbkey, \@prop, \@value,
$size);
return SOAP::Data->name('get_recordReturn' => $record);

The ZSI file is expecting an EsmithRecExtend object to be returned in
get_recordReturn. However, executing the above code causes the
following error:

ZSI.EvaluationException: No Registered xsi:type=
(http://namespaces.soaplite.com/perl, esmith__recExtend), subsititue
for xsi:type=(http://localhost:esmith/SOAPWrapper, EsmithRecExtend)

If I return SOAP::Data->name('get_recordReturn' => $record)-
>type('http://localhost:/esmith/SOAPWrapper:EsmithRecExtend),
then a TypeError: unpack non sequence exception is thrown.

I believe that the TypeError: unpack non sequence is resulting because
the ZSI attempts to seperate the type into (namespace, type) with the
division between the two defined by the ' : ' character, which is
found
more than once in the given namespace.

Does anyone have any ideas on how to resolve this issue?

What do I do to return the complex type and have the
ZSI client understand it?

Thanks for any help!



More information about the Python-list mailing list