You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Ben Anderson <be...@gmail.com> on 2004/11/03 01:17:47 UTC

array producing SAXException

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(DeserializationContextImpl.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(AvailableAutosSoapBindingStub.java:135)
    [java]      at
integtech.redteam.nyt.AvailableAutosSoapBindingStub.getAvailableAutos(AvailableAutosSoapBindingStub.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(DeserializationContextImpl.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

RE: array producing SAXException

Posted by Greg Michalopoulos <gm...@d2hawkeye.com>.
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:benanderson.us@gmail.com] 
Sent: Wednesday, November 03, 2004 11:45 AM
To: axis-user@ws.apache.org
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 <be...@gmail.com>
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
>



Re: array producing SAXException

Posted by Ben Anderson <be...@gmail.com>.
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
<be...@gmail.com> 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(DeserializationContextImpl.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(AvailableAutosSoapBindingStub.java:135)
>     [java]      at
> integtech.redteam.nyt.AvailableAutosSoapBindingStub.getAvailableAutos(AvailableAutosSoapBindingStub.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(DeserializationContextImpl.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
>