You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Joel Carklin <jo...@innoforge.com> on 2004/06/24 10:21:59 UTC

wsdl2java 1.1 vs 1.2beta

Hi,

It seems that wsdl2java in axis_1.1 and axis_1.2beta generate different
java classes when using the same wsdl. Specifically, the new
version does not create separate classes for simple XMLSchema types.  
The reason I moved to axis 1.2beta, was because axis 1.1 was trying to
deserialize a boolean to an object, and 1.2 apparently provides better
mappings to java primitives and built in Axis simple types (eg.
Javal.lang.string, java.lang.boolean, org.apache.axis.PositiveInteger
etc.). 
(Apparently, the class generating tool Castor also behaves like Axis
wsdl2java 1.2beta.) 

So my question is this. If .NET is creating specific objects
(representing the simple schema types etc) and the methods on the
webservice expect these objects as parameters, but axis 1.2 is not
generating these classes then how are we supposed to talk to each other?
What am I missing here? 

Thanks
Joel



RE: wsdl2java 1.1 vs 1.2beta

Posted by Anne Thomas Manes <an...@manes.net>.
SOAP passes XML types. A Web service does not expect its clients to send
objects -- it expects the clients to send XML structures. It makes no
difference at all whether the application at one end converts those XML
types to primitives or to objects. Java and .NET interoperate by
communicating using a language and object independent protocol: XML.

And -- by the way -- .NET does not convert simple types into objects. For
example, .NET has an interoperability issues because it converts a nillable
xsd:int (which does support nulls) into a .NET primitive int (which doesn't
support nulls). 

The only thing that Axis needs to concern itself with is the way it maps XML
types to Java types. As long as it does it correctly, it should support
smooth interoperability (assuming that the SOAP server at the other end
performs its type mapping correctly).

As I've said before, the secret to interoperability is to compose the XML
interface using simple types, structures of simple types, and arrays of
structures or simples types. Don't attempt to expose Java collections.
Convert those collections to arrays. The same advice holds true for .NET. In
particular, don't expose the .NET Dataset type through a WSDL interface.

Anne

-----Original Message-----
From: Joel Carklin [mailto:joelc@innoforge.com] 
Sent: Thursday, June 24, 2004 4:22 AM
To: axis-user@ws.apache.org
Subject: wsdl2java 1.1 vs 1.2beta

Hi,

It seems that wsdl2java in axis_1.1 and axis_1.2beta generate different
java classes when using the same wsdl. Specifically, the new
version does not create separate classes for simple XMLSchema types.  
The reason I moved to axis 1.2beta, was because axis 1.1 was trying to
deserialize a boolean to an object, and 1.2 apparently provides better
mappings to java primitives and built in Axis simple types (eg.
Javal.lang.string, java.lang.boolean, org.apache.axis.PositiveInteger
etc.). 
(Apparently, the class generating tool Castor also behaves like Axis
wsdl2java 1.2beta.) 

So my question is this. If .NET is creating specific objects
(representing the simple schema types etc) and the methods on the
webservice expect these objects as parameters, but axis 1.2 is not
generating these classes then how are we supposed to talk to each other?
What am I missing here? 

Thanks
Joel