axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tom Jordahl (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Commented: (AXIS-2114) GeoCoder failure
Date Tue, 19 Jul 2005 13:54:54 GMT
    [ http://issues.apache.org/jira/browse/AXIS-2114?page=comments#action_12316097 ] 

Tom Jordahl commented on AXIS-2114:
-----------------------------------

The Geocoder WSDL says this:
-----------------------------------------------------
<xsd:complexType name="ArrayOfGeocoderResult">
 <complexContent>
  <restriction base="SOAP-ENC:Array">
    <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="geo:GeocoderResult[]"/>
  </restriction>
 </complexContent>
</xsd:complexType>
-----------------------------------------------------

The SOAP returned looks like this:
-----------------------------------------------------
<namesp66:geocode_addressResponse xmlns:namesp66="http://rpc.geocoder.us/Geo/Coder/US/">
 <SOAP-ENC:Array 
    xsi:type="SOAP-ENC:Array" 
    SOAP-ENC:arrayType="xsd:anyType[1]">
   <item>
    <number xsi:type="xsd:int">714</number>
    <lat xsi:type="xsd:float">41.477723</lat>
    <street xsi:type="xsd:string">River</street>
    <state xsi:type="xsd:string">PA</state>
    <zip xsi:type="xsd:int">18452</zip>
    <city xsi:type="xsd:string">Blakely</city>
    <suffix xsi:type="xsd:string"/>
    <long xsi:type="xsd:float">-75.578802</long>
    <type xsi:type="xsd:string">St</type>
    <prefix xsi:type="xsd:string"/>
   </item>
 </SOAP-ENC:Array>
</namesp66:geocode_addressResponse>
-----------------------------------------------------

The interesting thing to note is that the arrayType specified in the return is xsd:anyType,
which is wrong, it should be namesp66:GeocoderResult.  Axis 1.2RC2 stashed away the info from
the WSDL and did the right thing here.  Axis 1.2.1 does NOT just figure it out, but it is
arguably doing the right thing (believing the arrayType in the body).  However, it used to
work and now it doesn't, so I am still looking to fix this.

I traced this to a change to the ArrayDeserailizer in onStartChild() around line 483:
        // In case of multi-array, we need to specify the destination class
        // of the children elements of this element array deserializer.
        context.setDestinationClass(arrayClass.getComponentType());
        
The the array class is Object[] here, so this call overwrites the (correct) destination class
of GeocodeAddressResult with Object.  When we go to look up a derializer for this, we don't
find anything.




> GeoCoder failure
> ----------------
>
>          Key: AXIS-2114
>          URL: http://issues.apache.org/jira/browse/AXIS-2114
>      Project: Apache Axis
>         Type: Bug
>     Reporter: Davanum Srinivas
>     Priority: Blocker

>
> Bug report from Tom.
> Hi Dims,
> We have a report from one of our customers that web services that used
> to work with 1.2 RC2, no longer do with Axis 1.2.1.
> I have not had a chance to file an Axis bug or even dig in to the
> problem.
> Services that have reported failing:
>  http://geocoder.us/dist/eg/clients/GeoCoder.wsdl
>  https://arcweb.esri.com/services/v2/Authentication.wsdl
>  http://arcweb.esri.com/services/v2/AddressFinder.wsdl
>  http://terraserver-usa.com/terraservice.asmx?WSDL
> I have yet to run these in a standalone Java program to see if there is
> something obvious.  I hope to be able to focus on these on Wednesday.
> The one test case I have is for the GeoCoder service, operation
> geocode_address.  Reported fault is:
> AxisFault
>  faultCode:
> {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
>  faultSubcode:
>  faultString: org.xml.sax.SAXException: No deserializer for
> {http://www.w3.org/2001/XMLSchema}anyType
>  faultActor:
>  faultNode:
>  faultDetail:
> {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: No
> deserializer for {http://www.w3.org/2001/XMLSchema}anyType
>        at
> org.apache.axis.encoding.DeserializerImpl.onStartElement(DeserializerImp
> l.java:453)
>        at
> org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.
> java:393)
>        at
> org.apache.axis.encoding.DeserializationContext.startElement(Deserializa
> tionContext.java:1048)
>        at
> org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:
> 165)
>        at
> org.apache.axis.message.MessageElement.publishToHandler(MessageElement.j
> ava:1141)
>        at
> org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
>        at
> org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
>        at org.apache.axis.client.Call.invoke(Call.java:244...
> Here is the SOAP request/response:
> :::SOAP Request:::
> <?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>
>        <ns1:geocode_address
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:ns1="http://rpc.geocoder.us/Geo/Coder/US/">
>            <address xsi:type="xsd:string">714 River St,Peckville, PA
> 18452</address>
>        </ns1:geocode_address>
>    </soapenv:Body>
> </soapenv:Envelope>
> :::SOAP Response:::
> <?xml version="1.0" encoding="UTF-8"?>
> <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>    <SOAP-ENV:Body>
>        <namesp66:geocode_addressResponse
> xmlns:namesp66="http://rpc.geocoder.us/Geo/Coder/US/">
>            <SOAP-ENC:Array xsi:type="SOAP-ENC:Array"
> SOAP-ENC:arrayType="xsd:anyType[1]">
>                <item>
>                    <number xsi:type="xsd:int">714</number>
>                    <lat xsi:type="xsd:float">41.477723</lat>
>                    <street xsi:type="xsd:string">River</street>
>                    <state xsi:type="xsd:string">PA</state>
>                    <zip xsi:type="xsd:int">18452</zip>
>                    <city xsi:type="xsd:string">Blakely</city>
>                    <suffix xsi:type="xsd:string"/>
>                    <long xsi:type="xsd:float">-75.578802</long>
>                    <type xsi:type="xsd:string">St</type>
>                    <prefix xsi:type="xsd:string"/>
>                </item>
>            </SOAP-ENC:Array>
>        </namesp66:geocode_addressResponse>
>    </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message