axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <aedemar.co...@rbc.com>
Subject RE: Interoperability problems with Axis 1.2.1 and .NET
Date Mon, 18 Jul 2005 11:11:06 GMT
I'm guessing the cleanest solution is to ensure I don't pass null for decimal and dateTime
fields as these cannot be null in .NET.
 
 This means the .NET classes can be auto generated but it also means I am coding to handle
.NET specific features.  Is this not what an interoperable web service is meant to provide?
 Should the Axis serialisers not handle this for me?

-----Original Message-----
From: Cooke, Aedemar 
Sent: 15 July 2005 2:08 
To: axis-user@ws.apache.org
Subject: Interoperability problems with Axis 1.2.1 and .NET



Can someone please advise whether the below is a bug with Axis.  I suspect it is as the only
variable that is changing is my version of Axis (1.1 to 1.2.1) and the binding style (rpc/encoded
to wrapped/literal).



I am trying to convert my Axis 1.1 rpc/encoded web service to Axis 1.2.1 wrapped/literal web
service but I have come across what I think is a showstopper...

If I populate all the decimal and date fields then everything is fine. If I leave either a
decimal or date field blank then I get an exception: InvalidOperationException: There is an
error in XML document.  This doesn't happen when I invoke my Axis 1.1 rpc/encoded web service
from the same version of .NET.

I need to use my own classes so de/serialization uses the _Helper classes provided by Axis
when using the --helperGen option on the wsdl2Java command. 

I have attached the wsdl and the all the classes. 

<<test.wsdl>> <<DateAndDecimal_Helper.java>> <<deploy.wsdd>>
<<TestService.java>> <<TestServiceSoapBindingImpl.java>> <<DateAndDecimal.java>>


I have also included the XML for the response for both scenarios... 

When decimal element is null 

XML 

<?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><getDateAndDecimalResponse
xmlns=" http://test.axis"><getDateAndDecimalReturn><dateValue>2005-07-14T09:47:04.376Z</dateValue><decimalValue
xsi:nil="true"/></getDateAndDecimalReturn></getDateAndDecimalResponse></soapenv:Body></soapenv:Envelope>


.NET error message 

[FormatException: Input string was not in a correct format.]    System.Number.ParseDecimal(String
s, NumberStyles style, NumberFormatInfo info) +0    System.Decimal.Parse(String s, NumberStyles
style, IFormatProvider provider) +30    System.Xml.XmlConvert.ToDecimal(String s) +100   
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read6_DateAndDecimal(Boolean
isNullable, Boolean checkType) +438    Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read13_getDateAndDecimalResponse()
+307  [InvalidOperationException: There is an error in XML document (1, 384).]    System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader
xmlReader, String encodingStyle, XmlDeserializationEvents events) +413    System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader
xmlReader, XmlDeserializationEvents events) +25    System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader
xmlReader) +24    System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage
message, WebResponse response, Stream responseStream, Boolean asyncCall) +1057    System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String
methodName, Object[] parameters) +218    Wrapped.AxisTests.TestServiceService.getDateAndDecimal(Int32
in0) in c:\webroot\wrapped\web references\axistests\reference.cs:61    Wrapped.WebForm1.Button1_Click(Object
sender, EventArgs e) in c:\webroot\wrapped\webform1.aspx.cs:97    System.Web.UI.WebControls.Button.OnClick(EventArgs
e) +108    System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
eventArgument) +57    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,
String eventArgument) +18    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
+33    System.Web.UI.Page.ProcessRequestMain() +1292       
When date element is null 
XML 
<?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><getDateAndDecimalResponse
xmlns=" http://test.axis"><getDateAndDecimalReturn><dateValue xsi:nil="true"/><decimalValue>4.000</decimalValue></getDateAndDecimalReturn></getDateAndDecimalResponse></soapenv:Body></soapenv:Envelope>

.NET error message 
[FormatException: String was not recognized as a valid DateTime.] System.DateTimeParse.ParseExactMultiple(String
s, String[] formats, DateTimeFormatInfo dtfi, DateTimeStyles style, DateTime& result)
+286 System.DateTime.ParseExact(String s, String[] formats, IFormatProvider provider, DateTimeStyles
style) +39 System.Xml.XmlConvert.ToDateTime(String s, String[] formats) +103 System.Xml.Serialization.XmlCustomFormatter.ToDateTime(String
value, String[] formats) +9 System.Xml.Serialization.XmlCustomFormatter.ToDateTime(String
value) +30 System.Xml.Serialization.XmlSerializationReader.ToDateTime(String value) +5 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read6_DateAndDecimal(Boolean
isNullable, Boolean checkType) +358 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read13_getDateAndDecimalResponse()
+307 [InvalidOperationException: There is an error in XML document (1, 333).] System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader
xmlReader, String encodingStyle, XmlDeserializationEvents events) +413 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader
xmlReader, XmlDeserializationEvents events) +25 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader
xmlReader) +24 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage
message, WebResponse response, Stream responseStream, Boolean asyncCall) +1057 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String
methodName, Object[] parameters) +218 Wrapped.AxisTests.TestServiceService.getDateAndDecimal(Int32
in0) in c:\webroot\wrapped\web references\axistests\reference.cs:61 Wrapped.WebForm1.Button1_Click(Object
sender, EventArgs e) in c:\webroot\wrapped\webform1.aspx.cs:97 System.Web.UI.WebControls.Button.OnClick(EventArgs
e) +108 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
eventArgument) +57 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,
String eventArgument) +18 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
+33 System.Web.UI.Page.ProcessRequestMain() +1292 

Environment
Axis 1.2.1 wrapped/literal service deployed to websphere server 
WebSphere Platform 5.1 [BASE 5.1.1 a0426.01] [JDK 1.4.2 cn1420-20040626] [PME 5.1.1 o0429.02]
 running with process name localhost\localhost\server1 and process id 3052

Host Operating System is Windows 2000, version 5.0 
Java version = J2RE 1.4.2 IBM Windows 32 build cn1420-20040626 (JIT enabled: jitc), Java Compiler
= jitc, Java VM name = Classic VM

Microsoft Development Environment 2003 
Microsoft .NET Framework 1.1 
Microsoft Visual C# .NET 69586-335-0000007-18998 


__________________________________________________________________________________________________________________________________



This e-mail may be privileged and/or confidential, and the sender does not waive any related
rights and obligations.

Any distribution, use or copying of this e-mail or the information it contains by other than
an intended recipient is unauthorized.

If you received this e-mail in error, please advise me (by return e-mail or otherwise) immediately.
 



Ce courrier électronique est confidentiel et protégé. L'expéditeur ne renonce pas aux
droits et obligations qui s'y rapportent.

Toute diffusion, utilisation ou copie de ce message ou des renseignements qu'il contient par
une personne autre que le (les) destinataire(s) désigné(s) est interdite.

Si vous recevez ce courrier électronique par erreur, veuillez m'en aviser immédiatement,
par retour de courrier électronique ou par un autre moyen.

__________________________________________________________________________________________________________________________________

This e-mail may be privileged and/or confidential, and the sender does not waive any related
rights and obligations.
Any distribution, use or copying of this e-mail or the information it contains by other than
an intended recipient is unauthorized.
If you received this e-mail in error, please advise me (by return e-mail or otherwise) immediately.
 

Ce courrier électronique est confidentiel et protégé. L'expéditeur ne renonce pas aux
droits et obligations qui s'y rapportent.
Toute diffusion, utilisation ou copie de ce message ou des renseignements qu'il contient par
une personne autre que le (les) destinataire(s) désigné(s) est interdite.
Si vous recevez ce courrier électronique par erreur, veuillez m'en aviser immédiatement,
par retour de courrier électronique ou par un autre moyen.

Mime
View raw message