Hi.
I tried to pass nested JavaBeans class of nested complex types between
WebService and client.
Are BeanSerializers/Deserializers capable of handling
nested SOAP ComplexTypes JavaBeans ?
If above is false, Do I need to write own
CustomBeanSerializers/Deserializers to handle nested ComplexTypes ?
<complexType name="JasBeanImpl">
<sequence>
<element name="all" nillable="true" type="xsd:anyType"/>
</sequence>
</complexType>
<complexType name="SOAPServiceLocator">
<complexContent>
<extension base="tns1:JasBeanImpl">
<sequence>
<element name="referenceName" nillable="true" type="xsd:string"/>
<element name="serviceAddress" nillable="true" type="xsd:string"/>
<element name="serviceSignature" nillable="true" type="xsd:string"/>
<element name="signatureType" nillable="true" type="xsd:string"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfSOAPServiceLocator">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType"
wsdl:arrayType="impl:SOAPServiceLocator[]"/>
</restriction>
</complexContent>
</complexType>
<complexType name="SOAPServiceName">
<complexContent>
<extension base="tns1:JasBeanImpl">
<sequence>
<element name="name" nillable="true" type="xsd:string"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="SOAPServiceDescription">
<complexContent>
<extension base="tns1:JasBeanImpl">
<sequence>
<element name="serviceLocator" nillable="true"
type="impl:SOAPServiceLocator"/>
<element name="serviceLocators" nillable="true"
type="impl:ArrayOfSOAPServiceLocator"/>
<element name="serviceName" nillable="true" type="impl:SOAPServiceName"/>
<element name="serviceType" nillable="true" type="xsd:string"/>
</sequence>
</extension>
</complexContent>
</complexType>
--- tcpmon prints out the following SOAP-request
<soapenv:Envelope ...>
<soapenv:Body>
<ns1:register ... xmlns:ns1="urn:SOAPServiceDirectoryService">
<desc href="#id0"/>
</ns1:register>
<multiRef id="id0" soapenc:root="0" ...
xsi:type="ns2:SOAPServiceDescription" ...
xmlns:ns2="urn:SOAPServiceDirectoryService">
<serviceLocators xsi:type="soapenc:Array"
soapenc:arrayType="ns2:SOAPServiceLocator[1]">
<item href="#id1"/>
</serviceLocators>
<serviceName href="#id2"/>
<serviceType
xsi:type="xsd:string">org.fipa.standard.service.service-directory-service</serviceType>
</multiRef>
<multiRef id="id2" soapenc:root="0" ... xsi:type="ns3:SOAPServiceName"
xmlns:ns3="urn:SOAPServiceDirectoryService"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<name
xsi:type="xsd:string">1a577588ceec7acc:d3d6f:faebbe63d3:-8000</name>
</multiRef>
<multiRef id="id1" soapenc:root="0" ...
xsi:type="ns4:SOAPServiceLocator"
xmlns:ns4="urn:SOAPServiceDirectoryService"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<referenceName
xsi:type="xsd:string">1a577588ceec7acc:d3d6f:faebbe63d3:-8000</referenceName>
<serviceAddress
xsi:type="xsd:string">http://localhost:8081/axis/services/urn:SOAPServiceDirectoryService</serviceAddress>
<serviceSignature
xsi:type="xsd:string">org.fipa.standard.service.java-soap-binding</serviceSignature>
<signatureType xsi:type="xsd:string">soap</signatureType>
</multiRef>
</soapenv:Body>
</soapenv:Envelope>
---
--- following is result
<soapenv:Envelope ... >
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>java.lang.ArrayIndexOutOfBoundsException: 0</faultstring>
<detail/>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
WebService can deserialize only "serviceType" element, "serviceType" and
"serviceLocator" cannot deserialized.
--
% ASWINDOW,co.,inc.
% Ryuusei Murakami / [EMAIL PROTECTED]
% http://www.aswindow.co.jp/