I believe XML Standard would be to wrap you shortAutoDescription with
shortAutoDescriptions.
<shortAutoDescriptions>
<shortAutoDescription></>
...
<shortAutoDescription></>
</shortAutoDescriptions>
But either way it is better than the schema in your first post to the list
(<xsd:element name="autoList" type="xsd1:shortAutoDescription"
maxOccurs="unbounded"/>). So in short your second method should work.
-----Original Message-----
From: Ben Anderson [mailto:[EMAIL PROTECTED]
Sent: Wednesday, November 03, 2004 11:45 AM
To: [EMAIL PROTECTED]
Subject: Re: array producing SAXException
One thing I thought might be causing the problem is:
<xsd:element name="autoList" type="xsd1:shortAutoDescription"
maxOccurs="unbounded"/>
would this be better off being something like:
<xsd:element name="autoList">
<xsd:sequence>
<xsd:element name="auto" type="xsd1:shortAutoDescription"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:element>
that would change this:
<soapenv:Body>
<autoList xmlns="integtech:redTeamTypes">
<id xsi:type="xsd:int" xmlns="">1</id>
<make xsi:type="xsd:string" xmlns="">Mercury</make>
</autoList>
<ns1:autoList xmlns:ns1="integtech:redTeamTypes">
so that the <autoList> wraps the array. I think that may change my
generated java classes, but if it'll work...
Thanks,
Ben
On Wed, 3 Nov 2004 00:17:47 +0000, Ben Anderson <[EMAIL PROTECTED]>
wrote:
> Hi,
> I know the standard is moving towards document-literal messaging, but
> I'm working on a purely academic project, which I will be very
> thankful when it works. Everything's working great except for an
> array I'm trying to use.
>
> Here's the relevant sections from the wsdl
> <types>
> <xsd:schema targetNamespace="integtech:redTeamTypes"
> xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
> <xsd:complexType name="shortAutoDescription">
> <xsd:all>
> <xsd:element name="id" type="xsd:int"/>
> <xsd:element name="make" type="xsd:string"/>
> <xsd:element name="model" type="xsd:string"/>
> <xsd:element name="year" type="xsd:int"/>
> <xsd:element name="sellingPrice" type="xsd:double"/>
> </xsd:all>
> </xsd:complexType>
> <xsd:element name="autoList" type="xsd1:shortAutoDescription"
> maxOccurs="unbound"/>
> ...
> <binding name="AvailableAutosSoapBinding"
type="tns:AvailableAutosPortType">
> <soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
> <operation name="GetAvailableAutos">
> <soap:operation soapAction=""/>
> <input>
> <soap:body use="encoded"/>
> </input>
> <output>
> <soap:body use="encoded"/>
> </output>
> </operation>
> </binding>
>
> using tcpmon, it seems the server is working ok, because is outputs:
> <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soapenv:Body>
> <autoList xmlns="integtech:redTeamTypes">
> <id xsi:type="xsd:int" xmlns="">1</id>
> <make xsi:type="xsd:string" xmlns="">Mercury</make>
> <model xsi:type="xsd:string" xmlns="">Tracer</model>
> <year xsi:type="xsd:int" xmlns="">1997</year>
> <sellingPrice xsi:type="xsd:double" xmlns="">3000.0</sellingPrice>
> </autoList>
> <ns1:autoList xmlns:ns1="integtech:redTeamTypes">
> <id xsi:type="xsd:int">2</id>
> <make xsi:type="xsd:string">Nissan</make>
> <model xsi:type="xsd:string">Sentra</model>
> <year xsi:type="xsd:int">2000</year>
> <sellingPrice xsi:type="xsd:double">8000.0</sellingPrice>
> ...
>
> but when I try to call it from the client:
> [java] - Exception:
> [java] org.xml.sax.SAXException: Bad types (int -> class
> [Lintegtech.redteam.nyt.ShortAutoDescription;)
> [java] at
> org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:311)
> [java] at
>
org.apache.axis.encoding.DeserializationContextImpl.startElement(Deserializa
tionContextImpl.java:963)
> [java] at
>
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)
> [java] Exception in thread "main" java.lang.RuntimeException:
> org.xml.sax.SAXException: Bad types (int -> class
> [Lintegtech.redteam.nyt.ShortAutoDescription;)
> [java] at
> integtech.redteam.test.TestClient.callAllAutos(TestClient.java:53)
> [java] at
>
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:
722)
> [java] at
integtech.redteam.test.TestClient.main(TestClient.java:33)
> [java] Caused by: org.xml.sax.SAXException: Bad types (int ->
> class [Lintegtech.redteam.nyt.ShortAutoDescription;)
> [java] at
> org.apache.axis.message.RPCElement.deserialize(RPCElement.java:323)
> [java] at
> org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)
> [java] at org.apache.axis.AxisFault.makeFault(AxisFault.java:129)
> [java] at org.apache.axis.client.Call.invoke(Call.java:2275)
> [java] at org.apache.axis.client.Call.invoke(Call.java:2272)
> [java] at org.apache.axis.client.Call.invoke(Call.java:2171)
> [java] at org.apache.axis.client.Call.invoke(Call.java:1691)
> [java] at org.apache.axis.client.Call.invoke(Call.java:2171)
> [java] at org.apache.axis.client.Call.invoke(Call.java:1691)
> [java] at
>
integtech.redteam.nyt.AvailableAutosSoapBindingStub.getAvailableAutos(Availa
bleAutosSoapBindingStub.java:135)
> [java] at
>
integtech.redteam.nyt.AvailableAutosSoapBindingStub.getAvailableAutos(Availa
bleAutosSoapBindingStub.java:135)
> [java] at
> integtech.redteam.test.TestClient.callAllAutos(TestClient.java:51)
> [java] at
integtech.redteam.test.TestClient.main(TestClient.java:33)
> [java] at
> integtech.redteam.test.TestClient.callAllAutos(TestClient.java:51)
> [java] ... 1 more
> [java] Caused by: org.xml.sax.SAXException: Bad types (int ->
> class [Lintegtech.redteam.nyt.ShortAutoDescription;)
> [java] at
> org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:311)
> [java] at
>
org.apache.axis.encoding.DeserializationContextImpl.startElement(Deserializa
tionContextImpl.java:963)
> [java] at
>
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)
> [java] at
>
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:
722)
> [java] at
> org.apache.axis.message.RPCElement.deserialize(RPCElement.java:323)
> [java] at
> org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)
> [java] at org.apache.axis.client.Call.invoke(Call.java:2272)
> [java] ... 5 more
> [java] [ERROR] Java Result: 1
>
> Any ideas? I'm pretty befuddled at this point.
>
> Thanks!
> Ben
>