Hi,

I have a simple RPC web service returning a User
object that has a List of Group objects having a List
of Role objects. This was working very well on Axis
1.2 beta 2 but since I upgraded to RC2 I get a
deserialization error on the client side.

Here is the soap response (which looks ok):

<?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>
       <findUserByUsernameResponse
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
           <findUserByUsernameReturn href="#id0"/>
       </findUserByUsernameResponse>
       <multiRef id="id0" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
           xsi:type="ns1:user"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
          
xmlns:ns1="http://www.smartcomps.org/twister/types/user/";>
           <groups href="#id1"/>
           <id href="#id2"/>
           <name
xsi:type="soapenc:string">admin</name>
           <password
xsi:type="soapenc:string">admin</password>
       </multiRef>
       <multiRef id="id1" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
           soapenc:arrayType="xsd:anyType[1]"
xsi:type="soapenc:Array"
          
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
           <item href="#id3"/>
       </multiRef>
       <multiRef id="id2" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
           soapenc:arrayType="xsd:anyType[1]"
xsi:type="soapenc:Array"
          
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>1</multiRef>
       <multiRef id="id3" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
           soapenc:arrayType="xsd:anyType[1]"
xsi:type="soapenc:Array"
          
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
           <id href="#id4"/>
           <name
xsi:type="soapenc:string">admin</name>
           <roles href="#id5"/>
       </multiRef>
       <multiRef id="id4" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
           soapenc:arrayType="xsd:anyType[1]"
xsi:type="soapenc:Array"
          
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>1</multiRef>
       <multiRef id="id5" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
           soapenc:arrayType="xsd:anyType[1]"
xsi:type="soapenc:Array"
          
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
           <item href="#id6"/>
       </multiRef>
       <multiRef id="id6" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
           soapenc:arrayType="xsd:anyType[1]"
xsi:type="soapenc:Array"
          
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
           <id href="#id7"/>
           <name
xsi:type="soapenc:string">admin</name>
       </multiRef>
       <multiRef id="id7" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
           soapenc:arrayType="xsd:anyType[1]"
xsi:type="soapenc:Array"
          
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>1</multiRef>
   </soapenv:Body>
</soapenv:Envelope>

And here is the stacktrace:

org.xml.sax.SAXException: Found character data inside
an array element
while deserializing
       at
org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
       at
org.apache.axis.client.Call.invoke(Call.java:2405)
       at
org.apache.axis.client.Call.invoke(Call.java:2301)
       at
org.apache.axis.client.Call.invoke(Call.java:1758)
       at
org.smcp.twister.client.TwisterUser.findUserByUsername(TwisterUser.java:164)
       at
org.smcp.twister.client.TwisterUser.main(TwisterUser.java:171)
Caused by: org.xml.sax.SAXException: Found character
data inside an
array element while deserializing
       at
org.apache.axis.encoding.ser.ArrayDeserializer.characters(ArrayDeserializer.java:484)
       at
org.apache.axis.encoding.DeserializationContext.characters(DeserializationContext.java:962)
       at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:177)
       at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1140)
       at
org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:369)
       at
org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1044)
       at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
       at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1140)
       at
org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:369)
       at
org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1044)
       at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
       at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1140)
       at
org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:369)
       at
org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1044)
       at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
       at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1140)
       at
org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:369)
       at
org.apache.axis.encoding.ser.BeanDeserializer.startElement(BeanDeserializer.java:130)
       at
org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1044)
       at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
       at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1140)
       at
org.apache.axis.message.RPCElement.deserialize(RPCElement.java:347)
       at
org.apache.axis.message.RPCElement.getParams(RPCElement.java:386)
       at
org.apache.axis.client.Call.invoke(Call.java:2402)
       ... 4 more

Any idea? A hint on how to debug this would also help
as it's quite hard to find a way in the
SAX2EventRecorder giant object array.


        

        
                
Vous manquez d’espace pour stocker vos mails ? 
Yahoo! Mail vous offre GRATUITEMENT 100 Mo !
Créez votre Yahoo! Mail sur http://fr.benefits.yahoo.com/

Le nouveau Yahoo! Messenger est arrivé ! Découvrez toutes les nouveautés pour 
dialoguer instantanément avec vos amis. A télécharger gratuitement sur 
http://fr.messenger.yahoo.com

Reply via email to