Issue Details (XML | Word | Printable)

Key: AXIS-2127
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Blocker Blocker
Assignee: Unassigned
Reporter: Thorsten Jungblut
Votes: 0
Watchers: 3
Operations

If you were logged in you would be able to see more operations.
Axis

Schema version mismatch

Created: 19/Jul/05 06:04 PM   Updated: 01/Feb/06 12:38 AM
Return to search
Component/s: Serialization/Deserialization
Affects Version/s: 1.2.1
Fix Version/s: None

Time Tracking:
Not Specified

File Attachments:
  Size
Java Archive File Licensed for inclusion in ASF works axis.jar 2005-08-13 12:13 AM Dan F 1.53 MB
Java Source File Licensed for inclusion in ASF works SerializationContext.java 2005-08-13 12:11 AM Dan F 61 kB
Environment: Axis 1.2.1, Java 1.5.0_03, Tomcat 5.5.9, but doesn't really matter
Issue Links:
Cloners
 
Reference
 

Resolution Date: 21/Jul/05 11:08 AM


 Description  « Hide
If i send a soap message to axis using http://www.w3.org/1999/XMLSchema-instance as it's schema instance and the target service returns an array, the return message contains both references to http://www.w3.org/2001/XMLSchema-instance and to http://www.w3.org/1999/XMLSchema-instance in the same message. Even worse, the array-return tag itself contains two xsi:type-attributes, resulting from the mixture of the two schemas:

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"><soapenv:Body><ns1:searchPageIDsResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="PageService"><searchPageIDsReturn soapenc:arrayType="soapenc:string[8]" xsi:type="soapenc:Array" xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><searchPageIDsReturn xsi:type="soapenc:string">0d6f95d44f127c11aa8a3078b8575e05</searchPageIDsReturn><searchPageIDsReturn xsi:type="soapenc:string">1b4190cafc6365ede444bb3ab1c5ce9e</searchPageIDsReturn><searchPageIDsReturn xsi:type="soapenc:string">231b4e03659c6764078c63ceebbbfab4</searchPageIDsReturn><searchPageIDsReturn xsi:type="soapenc:string">48976c8d98b3725017ccd206583d5f39</searchPageIDsReturn><searchPageIDsReturn xsi:type="soapenc:string">601940d36f1b873a080ce7fc3120e06b</searchPageIDsReturn><searchPageIDsReturn xsi:type="soapenc:string">8656b292d411236b7af40c793df24b28</searchPageIDsReturn><searchPageIDsReturn xsi:type="soapenc:string">c31808c8b908a7cd85e41fcebec57bda</searchPageIDsReturn><searchPageIDsReturn xsi:type="soapenc:string">c9782177a9619f920fb75ed0403b63a7</searchPageIDsReturn></searchPageIDsReturn></ns1:searchPageIDsResponse></soapenv:Body></soapenv:Envelope>

This mixture seems to not only apply to arrays but i didn't test it any further.

It seems to be a problem in the class org.apache.axis.encoding.SerializationContext.java, Method setTypeAttribute. That method uses the default schema, no matter what actual schema should be used. Path:

diff -r1.109 SerializationContext.java
1325a1326,1330
> SchemaVersion schema = SchemaVersion.SCHEMA_2001;
> if (msgContext != null) {
> schema = msgContext.getSchemaVersion();
> }
>
1329c1334
< (attributes.getIndex(Constants.URI_DEFAULT_SCHEMA_XSI,
---
> (attributes.getIndex(schema.getXsiURI(),
1337c1342
< String prefix = getPrefixForURI(Constants.URI_DEFAULT_SCHEMA_XSI,
---
> String prefix = getPrefixForURI(schema.getXsiURI(),
1340c1345
< attrs.addAttribute(Constants.URI_DEFAULT_SCHEMA_XSI,
---
> attrs.addAttribute(schema.getXsiURI(),





 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Thorsten Jungblut added a comment - 19/Jul/05 06:05 PM
The above patch fixes the problem for me. I don't know if its a general/good solution.

Davanum Srinivas added a comment - 21/Jul/05 11:08 AM
Applied your patch.

thanks,
dims

Mark Chaimungkalanont added a comment - 29/Jul/05 04:41 PM
Dims,

Can you tell use what version this has been applied to? 1.2.2?

Davanum Srinivas added a comment - 01/Aug/05 11:08 AM
Fix is in latest CVS. Last version we released was 1.2.1 a month or two ago. We are yet to pick a name for the next version. It will probably be 1.3. THis fix will make it into that version.

thanks,
dims

Dan F added a comment - 12/Aug/05 10:56 PM
I need this fix, too. What do you recommend until the next release? 1.1?

I suppose I could download the 1.2.1 source and apply the patch myself. I'd rather not.

Dan

Dan F added a comment - 12/Aug/05 10:57 PM
And when are you planning to release? It would be nice to have a quickie 1.2.1.1 with this patch, although I realize there are reasons not to do that.

Dan

Dan F added a comment - 13/Aug/05 12:11 AM
src/org/apache/axis/encoding/SerializationContext.java from 1.2.1, with the patch in this bug applied.

No guarantees! It does compile. It seems to work, but I haven't tested much.

Dan F added a comment - 13/Aug/05 12:13 AM
I downloaded Axis 1.2.1, applied the patch, built with ant. This is the JAR that resulted. It might work; I haven't tested it that much yet.

Jesus Carrera added a comment - 28/Jan/06 03:48 AM
I am getting the duplicate xsi:type="soapenc:Array" error still even after applying your patch. I am using Axis 1.3. Why hasn't this issue been resolved? I am testing a simple web service method that returns a String array.

Dan F added a comment - 01/Feb/06 12:38 AM
Jesus,

I have no idea why it's not working for you.

By the way, it's not my patch, it's Thorsten Jungblut's. All I did was apply it to a source file, and upload the source file and the jar for others' convenience. I am not planning to provide any further support.

Dan