| From | Sent On | Attachments |
|---|---|---|
| PKDor | Sep 11, 2007 12:52 am | |
| Andrew McGhee | Sep 11, 2007 3:55 pm |
| Subject: | Interoperatibility problems (Axis2 Client & .Net Server) | |
|---|---|---|
| From: | PKDor (pkd...@arrakis.es) | |
| Date: | Sep 11, 2007 12:52:52 am | |
| List: | org.apache.ws.axis-user | |
Hi all!,
We have some Web Services developed with asp.net 2.0. They work fine, and we
haven't had problems with interoperatibility between platforms until now.
A few days ago, a customer started to use our platform with an Axis2 client. We
haven't experience giving support with Axis2. Until now, all the access to our
platform had been with clients developed in .Net or Java with the XFire library.
Both .Net and XFire use the SOAP 1.1 by default, although (at least in .Net) you
can force the use of 1.2 version without problems. Axis2 use by default SOAP
1.2.
All seemed to work fine until an exception was raised. In that moment, the Axis2
client launched an error:
"org.apache.axiom.om.impl.exception.OMBuilderException: detail unsupported
element in SOAPFault element"
That is, it looks like if the Axis2 generated classes don't know how to read the
"detail" element in the SOAPFault XML code generated by .Net. The "detail"
element is part of the SOAPFault protocol, son we don't understand why is
failing. With a .Net client all work fine. With a XFire too (in both cases, the
tests have been done with SOAP 1.1 and SOAP 1.2). With Axis2, it only works fine
if we force the client to use the SOAP 1.1 Protocol
(options.setSoapVersionURI(Constants.URI_SOAP11_ENV)).
Has anyone had a similar problem?
We have another problem, this time with nulls. In .Net or XFire, if you don't
send a data (for example, an integer field in a complex data type), is received
at the server as "null" (element is marked as nilable = true in the WSDL).
However, we are receiving a 0, and it causes a lot of problems. We have
"resolved" the problem like this:
Instead of this (is pseudocode):
Client client = new Client(); client.name = "Jhon Doe"; client.Insert();
With Axis2, our clients have to do this (is pseudocode):
Client client = new Client(); client.code = Integer.MIN_VALUE; client.name = "Jhon Doe"; client.Insert();
What is very extrange, and we don't understand the reason. Is there any way to
change this behaviour?
Thanks in advance!





