[ 
http://issues.apache.org/jira/browse/AXIS-2025?page=comments#action_12316558 ] 

Shankar Unni commented on AXIS-2025:
------------------------------------

Yes, I accept, I suppose, reluctantly.

Looks like the good folks working on the standard haven't looked at it directly 
from the point of view of the end points of a true RPC mechanism, but only at 
the wire transport itself. 

I.e. rather than trying to laying down the constraint of *what* has to be done 
(move data from one program to another), and then trying to figure out how to 
do that given the transport, it looks like this standard has started with a 
solution (let's describe some sort of mapping for programmatic data types to 
XML), and then tried to go back and fit it into the many languages as best as 
could be done. (Really backwards, IMO).

There's no way that we can ever use the xsd:string type mapping for Strings in 
*any* language, let alone Java.

perhaps there's a need for a set of mini-standards for data types to be used 
for interchange of *real* data types in an RPC/XML environment..

Anyway, thanks, and I apologize for my rants once again..

> Illegal XML characters in String arguments and return values cause XML 
> exceptions in Axis calls
> -----------------------------------------------------------------------------------------------
>
>          Key: AXIS-2025
>          URL: http://issues.apache.org/jira/browse/AXIS-2025
>      Project: Apache Axis
>         Type: Bug
>   Components: Serialization/Deserialization
>     Versions: 1.2
>  Environment: All (but reproduced on WinXP).
> Axis 1.1 and 1.2
>     Reporter: Shankar Unni
>     Assignee: Venkat Reddy
>  Attachments: Axis1.1badmsgAPI.log, Axis1.1echoAPI.log, Axis1.2badmsgAPI.log, 
> Axis1.2echoAPI.log
>
> Arguments and return values of Java type String are incorrectly handled if 
> they contain non-printing illegal ASCII characters.
> Example 1: bad return values:
> - - - - - - - - - - - - - - -
> E.g. the string 
>   "bad char: " + (char)3 + "."
> Trivial example:
> foo.jws:
>   public class foo {
>     public String badmsg()
>     {
>       return "bad: " + (char)3 + ".";
>     }
>   }
> When calling this method and the server is running on Axis 1.1, it returns 
> XML with the illegal character ASCII "3" in the text:
>    <badmsgReturn xsi:type="xsd:string">bad: ?.</badmsgReturn>  
> This causes an XML parse exception on the client side 
> ("org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x3) was 
> found in the element content of the document.")
> With Axis 1.2, the server doesn't even return a valid response: I get an HTTP 
> 200 OK with an empty content, causing a different XML parse error.
> Example 2: bad parameter values:
> - - - - - - - - - - - - - - - -
> A similar problem exists when passing such a string from the the client side.
> If I have a method in foo.jws:
>   public class foo {
>     public String echo(String s)
>     {
>       return s;
>     }
>   }
> Then if I write an ordinary Java client to call this, and pass it a bad 
> string as in the beginning of this post, I get an exception thrown while the 
> call is being composed:
> java.lang.IllegalArgumentException: The char '0x3' in 'bad char: ?.' is not a 
> valid XML character.
> This is somewhat absurd: shouldn't the serialization layer be encoding these 
> illegal XML characters as entity escapes? They're entirely legal in the 
> current locale (US), and normal Java code handles this character quite 
> normally.  Why should it croak when passed by XML/RPC?

-- 
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

Reply via email to