stevel 2002/10/04 09:29:49 Modified: java/docs reading.html user-guide.html Log: more on our friend interop Revision Changes Path 1.5 +25 -8 xml-axis/java/docs/reading.html Index: reading.html =================================================================== RCS file: /home/cvs/xml-axis/java/docs/reading.html,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- reading.html 2 Oct 2002 03:21:18 -0000 1.4 +++ reading.html 4 Oct 2002 16:29:48 -0000 1.5 @@ -22,8 +22,9 @@ <img SRC="axis.jpg" height=96 width=176></h1></center> <h1>Recommended Reading</h1> - +<a name="specifications"> <h2>Specifications</h2> +</a> <ol> <li> @@ -68,7 +69,10 @@ </ol> + +<a name="presentations"> <h2>Explanations, articles and presentations</h2> +</a> <ol> <li> <a href="http://radio.weblogs.com/0101679/stories/2002/03/16/aGentleIntroductionToSoap.html"> @@ -82,12 +86,6 @@ Quick intro to WSDL by the eponymous Sam Ruby. </li> <li> - <a href="http://radio.weblogs.com/0101679/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html"> - To infinity and beyond - the quest for SOAP interoperability - </a><br> - Sam Ruby explains why Interop matters so much. -</li> -<li> <a href="http://manning.com/antbook"> Java development with Ant </a><br> @@ -152,9 +150,28 @@ </ol> +<a name="interop"> +<h2>Interoperability</h2> +</a> +<ol> +<li> + <a href="http://radio.weblogs.com/0101679/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html"> + To infinity and beyond - the quest for SOAP interoperability + </a><br> + Sam Ruby explains why Interop matters so much. +</li> +<li> + <a href="http://www.iseran.com/Steve/papers/interop/"> + The Wondrous Curse of Interoperability + </a><br> + Steve Loughran on interop challenges (especially between .NET and Axis), + and how to test for them. +</li> +</ol> +<a name="advanced"> <h2>Advanced topics</h2> - +</a> <ol> <li> <a href="http://www.extreme.indiana.edu/xgws/papers/sc00_paper/index.html"> 1.74 +27 -16 xml-axis/java/docs/user-guide.html Index: user-guide.html =================================================================== RCS file: /home/cvs/xml-axis/java/docs/user-guide.html,v retrieving revision 1.73 retrieving revision 1.74 diff -u -r1.73 -r1.74 --- user-guide.html 30 Sep 2002 01:39:24 -0000 1.73 +++ user-guide.html 4 Oct 2002 16:29:48 -0000 1.74 @@ -600,8 +600,15 @@ <h2><a NAME="DataMapping"></a>XML <-> Java Data Mapping in Axis</h2> <h3>How your Java types map to SOAP/XML types</h3> -The JAX-RPC specification determines how Java types are mapped to WSDL and vice versa. -So read chapters 4 and 5 of the <a href="http://java.sun.com/xml/jaxrpc/"> +Interoperability, <i>interop</i> is an ongoing challenge +between SOAP implementations. If you want your service to work with other platforms +and implementations, you do need to understand the issues. There are some +<a href="reading.html#interop">external articles</a> on the subject that act +as a good starting place. + +The basic mapping between Java types and WSDL/XSD/SOAP in Axis is determined by +The JAX-RPC specification. Read chapters 4 and 5 of the +<a href="http://java.sun.com/xml/jaxrpc/"> specification</a> to fully understand how things are converted. Here are some of the salient points. @@ -627,10 +634,12 @@ may choose to return a value of <tt>nil</tt>, then the primitive data types are replaced by their wrapper classes, such as Byte, Double, Boolean, etc. <h4>SOAP Encoding Datatypes</h4> -<p> Alongside the XSD datatypes are the SOAP 'section 5' datatypes that are all +<p> Alongside the XSD datatypes are the SOAP 'Section 5' datatypes that are all nillable, and so only ever map to the wrapper classes. These types exist because they all support the "ID" and "HREF" attributes, and so will be used when in an rpc-encoded context to support multi-ref serialization. + + <h3>Exceptions</h3> This is an area which causes plenty of confusion, and indeed, the author @@ -689,7 +698,7 @@ at least not be as rigorous as Java in the rules as to how exceptions must be handled. -<h4>What Axis can not send via SOAP</h4> +<h3>What Axis can send via SOAP with restricted Interoperability</h3> <h5>Unsigned data</h5> @@ -703,30 +712,32 @@ with unsigned support from using them. At least, until a revision of JAX-RPC adds this. +<h5>Java Collections</h5> + +Some of the Collection classes, such as <tt>HashTable</tt> do have +serializers, but there is no formal interoperability with other SOAP +implementations, and nothing in the SOAP specifications which covers +complex objects. The most reliable way to send aggregate objects is to +use arrays. In particular, .NET cannot handle them, though many Java SOAP +implementations can marshall and unmarshall hash tables. + + +<h3>What Axis can not send via SOAP</h3> -<h5>Arbitrary Objects without registration</h5> + +<h5>Arbitrary Objects without Pre-Registration</h5> You cannot send arbitrary Java objects over the wire and expect them to be understood at the far end. With RMI you can send and receive <tt>Serializable</tt> Java objects, but that is because you are running Java at both ends. Axis will only send objects for which there is a -registered Axis serializer. This document will shortly show how to use +registered Axis serializer. This document shows below how to use the BeanSerializer to serialize any class that follows the JavaBean pattern of accessor and mutator. To serve up objects you must either register your classes with this BeanSerializer, or there must be serialization support built in to Axis. -<h5>Java Collections</h5> - -Some of the Collection classes, such as <tt>HashTable</tt> do have -serializers, but there is no formal interoperability with other SOAP -implementations, and nothing in the SOAP specifications which covers -complex objects. The most reliable way to send aggregate objects is to -use arrays. - -This is an ongoing issue with SOAP interop; expect it to slowly improve -over time. <h5>Remote References</h5>