You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ch...@apache.org on 2006/11/07 10:14:32 UTC

svn commit: r472043 - /webservices/axis2/branches/java/1_1/xdocs/1_1/jibx/jibx-unwrapped-example.html

Author: chatra
Date: Tue Nov  7 01:14:31 2006
New Revision: 472043

URL: http://svn.apache.org/viewvc?view=rev&rev=472043
Log:
minor change

Modified:
    webservices/axis2/branches/java/1_1/xdocs/1_1/jibx/jibx-unwrapped-example.html

Modified: webservices/axis2/branches/java/1_1/xdocs/1_1/jibx/jibx-unwrapped-example.html
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/xdocs/1_1/jibx/jibx-unwrapped-example.html?view=diff&rev=472043&r1=472042&r2=472043
==============================================================================
--- webservices/axis2/branches/java/1_1/xdocs/1_1/jibx/jibx-unwrapped-example.html (original)
+++ webservices/axis2/branches/java/1_1/xdocs/1_1/jibx/jibx-unwrapped-example.html Tue Nov  7 01:14:31 2006
@@ -5,15 +5,15 @@
 </head>
 
 <body>
-<h1>JiBX unwrapped document/literal</h1>
+<h1>JiBX Unwrapped document/literal</h1>
 
 <p>Code generation for JiBX data binding converts operations defined by a Web
-service to method calls. In the most general case of document/literal (doc/lit)
-Web services the generated methods each take a single parameter object and
-return a single result object. This type of interface can be painful for
-developers because it adds both a layer of indirection and potentially a large
-number of extra classes (one input and one output class for each generated
-method).</p>
+service to method calls. In the most general case of document/literal
+(doc/lit) Web services the generated methods each take a single parameter
+object and return a single result object. This type of interface can be
+painful for developers because it adds both a layer of indirection and
+potentially a large number of extra classes (one input and one output class
+for each generated method).</p>
 
 <p>Fortunately, there's an alternative way of generating methods that gives a
 much more usable API for many Web services. This alternative is called
@@ -23,115 +23,110 @@
 for operations.</p>
 
 <p>Here's a sample wrapped WSDL (partial) by way of an example:</p>
-
-<pre>
-&lt;wsdl:definitions targetNamespace="http://ws.sosnoski.com/library/wsdl"
+<pre>&lt;wsdl:definitions targetNamespace="http://ws.sosnoski.com/library/wsdl"
     xmlns:tns="http://ws.sosnoski.com/library/types"
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/">
+    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"&gt;
     
-  &lt;wsdl:types>
+  &lt;wsdl:types&gt;
   
     &lt;schema elementFormDefault="qualified"
         targetNamespace="http://ws.sosnoski.com/library/types"
-        xmlns="http://www.w3.org/2001/XMLSchema">
+        xmlns="http://www.w3.org/2001/XMLSchema"&gt;
         
-      &lt;element name="getBook">
-        &lt;complexType>
-          &lt;sequence>
-            &lt;element name="isbn" type="string"/>
-          &lt;/sequence>
-        &lt;/complexType>
-      &lt;/element>
+      &lt;element name="getBook"&gt;
+        &lt;complexType&gt;
+          &lt;sequence&gt;
+            &lt;element name="isbn" type="string"/&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
       
-      &lt;element name="getBookResponse">
-        &lt;complexType>
-          &lt;sequence>
-            &lt;element name="book" minOccurs="0" type="tns:BookInformation"/>
-          &lt;/sequence>
-        &lt;/complexType>
-      &lt;/element>
+      &lt;element name="getBookResponse"&gt;
+        &lt;complexType&gt;
+          &lt;sequence&gt;
+            &lt;element name="book" minOccurs="0" type="tns:BookInformation"/&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
       
-      &lt;element name="addBook">
-        &lt;complexType>
-          &lt;sequence>
-            &lt;element name="type" type="string"/>
-            &lt;element name="isbn" type="string"/>
-            &lt;element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/>
-            &lt;element name="title" type="string"/>
-          &lt;/sequence>
-        &lt;/complexType>
-      &lt;/element>
+      &lt;element name="addBook"&gt;
+        &lt;complexType&gt;
+          &lt;sequence&gt;
+            &lt;element name="type" type="string"/&gt;
+            &lt;element name="isbn" type="string"/&gt;
+            &lt;element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/&gt;
+            &lt;element name="title" type="string"/&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
       
-      &lt;element name="addBookResponse">
-        &lt;complexType>
-          &lt;sequence>
-            &lt;element name="success" type="boolean"/>
-          &lt;/sequence>
-        &lt;/complexType>
-      &lt;/element>
+      &lt;element name="addBookResponse"&gt;
+        &lt;complexType&gt;
+          &lt;sequence&gt;
+            &lt;element name="success" type="boolean"/&gt;
+          &lt;/sequence&gt;
+        &lt;/complexType&gt;
+      &lt;/element&gt;
       
-      &lt;complexType name="BookInformation">
-        &lt;sequence>
-          &lt;element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/>
-          &lt;element name="title" type="string"/>
-        &lt;/sequence>
-        &lt;attribute name="type" use="required" type="string"/>
-        &lt;attribute name="isbn" use="required" type="string"/>
-      &lt;/complexType>
+      &lt;complexType name="BookInformation"&gt;
+        &lt;sequence&gt;
+          &lt;element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/&gt;
+          &lt;element name="title" type="string"/&gt;
+        &lt;/sequence&gt;
+        &lt;attribute name="type" use="required" type="string"/&gt;
+        &lt;attribute name="isbn" use="required" type="string"/&gt;
+      &lt;/complexType&gt;
       
-    &lt;/schema>
+    &lt;/schema&gt;
 
-  &lt;/wsdl:types>
+  &lt;/wsdl:types&gt;
 
-  &lt;wsdl:message name="getBookRequest">
-    &lt;wsdl:part element="wns:getBook" name="parameters"/>
-  &lt;/wsdl:message>
+  &lt;wsdl:message name="getBookRequest"&gt;
+    &lt;wsdl:part element="wns:getBook" name="parameters"/&gt;
+  &lt;/wsdl:message&gt;
 
-  &lt;wsdl:message name="getBookResponse">
-    &lt;wsdl:part element="wns:getBookResponse" name="parameters"/>
-  &lt;/wsdl:message>
+  &lt;wsdl:message name="getBookResponse"&gt;
+    &lt;wsdl:part element="wns:getBookResponse" name="parameters"/&gt;
+  &lt;/wsdl:message&gt;
 
-  &lt;wsdl:message name="addBookRequest">
-    &lt;wsdl:part element="wns:addBook" name="parameters"/>
-  &lt;/wsdl:message>
+  &lt;wsdl:message name="addBookRequest"&gt;
+    &lt;wsdl:part element="wns:addBook" name="parameters"/&gt;
+  &lt;/wsdl:message&gt;
   
-  &lt;wsdl:message name="addBookResponse">
-    &lt;wsdl:part element="wns:addBookResponse" name="parameters"/>
-  &lt;/wsdl:message>
-
-  &lt;wsdl:portType name="Library">
-
-    &lt;wsdl:operation name="getBook">
-      &lt;wsdl:input message="wns:getBookRequest" name="getBookRequest"/>
-      &lt;wsdl:output message="wns:getBookResponse" name="getBookResponse"/>
-    &lt;/wsdl:operation>
-
-    &lt;wsdl:operation name="addBook">
-      &lt;wsdl:input message="wns:addBookRequest" name="addBookRequest"/>
-      &lt;wsdl:output message="wns:addBookResponse" name="addBookResponse"/>
-    &lt;/wsdl:operation>
+  &lt;wsdl:message name="addBookResponse"&gt;
+    &lt;wsdl:part element="wns:addBookResponse" name="parameters"/&gt;
+  &lt;/wsdl:message&gt;
+
+  &lt;wsdl:portType name="Library"&gt;
+
+    &lt;wsdl:operation name="getBook"&gt;
+      &lt;wsdl:input message="wns:getBookRequest" name="getBookRequest"/&gt;
+      &lt;wsdl:output message="wns:getBookResponse" name="getBookResponse"/&gt;
+    &lt;/wsdl:operation&gt;
+
+    &lt;wsdl:operation name="addBook"&gt;
+      &lt;wsdl:input message="wns:addBookRequest" name="addBookRequest"/&gt;
+      &lt;wsdl:output message="wns:addBookResponse" name="addBookResponse"/&gt;
+    &lt;/wsdl:operation&gt;
 
-  &lt;/wsdl:portType>
+  &lt;/wsdl:portType&gt;
   ...
-&lt;/wsdl:definitions>
-</pre>
+&lt;/wsdl:definitions&gt;</pre>
 
 <p>This WSDL defines a service with just two operations: <b>getBook</b> and
-<b>addBook</b>. The <b>getBook</b> operation takes a <i>getBook</i> element as
-input, and returns a <i>getBookResponse</i> element as output, while
+<b>addBook</b>. The <b>getBook</b> operation takes a <i>getBook</i> element
+as input, and returns a <i>getBookResponse</i> element as output, while
 <b>addBook</b> takes an <i>addBook</i> element as input and returns an
 <i>addBookResponse</i> as output. Each of these input and output elements in
-turn consists of a sequence of child elements, with some of the child elements
-defined directly using standard schema types and others referencing user-defined
-schema types.</p>
+turn consists of a sequence of child elements, with some of the child
+elements defined directly using standard schema types and others referencing
+user-defined schema types.</p>
 
 <p>As I said up front, this WSDL qualifies for unwrapped handling using JiBX.
 Here's the body of the client interface generated when using unwrapping (the
 <i>-uw</i> option for WSDL2Java):</p>
-
-<pre>
-    public interface LibraryJibxUnwrapped {
+<pre>    public interface LibraryJibxUnwrapped {
           
              
         /**
@@ -158,67 +153,61 @@
 
         
        //
-       }
-</pre>
+       }</pre>
 
 <p>You can see that the JiBX code generation converted the operations into
 simple method call interfaces without introducing any extraneous objects (see
-<a href="./jibx-doclit-example.html">JiBX Document/Literal Example</a> for the
-interface generated when unwrapping is not used). The server-side interface is
-the same.</p>
+<a href="./jibx-doclit-example.html">JiBX Document/Literal Example</a> for
+the interface generated when unwrapping is not used). The server-side
+interface is the same.</p>
 
 <p>The key points that allow unwrapped handling with JiBX are:</p>
-
 <ol>
-<li>Each operation either accepts no input, or the input consists of a single
-element.</li>
-<li>Each input element is defined as a schema <i>complexType</i> consisting of a
-<i>sequence</i> of any number of child elements.</li>
-<li>Each operation either generates no output, or the output consists of a
-single element.</li>
-<li>Each output element is defined as a schema <i>complexType</i> consisting of a
-<i>sequence</i> that's either empty or contains a single child element.</li>
-<li>The child elements of both inputs and outputs are defined using <i>type</i>
-references, rather than an embedded type definitions.</li>
+  <li>Each operation either accepts no input, or the input consists of a
+    single element.</li>
+  <li>Each input element is defined as a schema <i>complexType</i> consisting
+    of a <i>sequence</i> of any number of child elements.</li>
+  <li>Each operation either generates no output, or the output consists of a
+    single element.</li>
+  <li>Each output element is defined as a schema <i>complexType</i>
+    consisting of a <i>sequence</i> that's either empty or contains a single
+    child element.</li>
+  <li>The child elements of both inputs and outputs are defined using
+    <i>type</i> references, rather than an embedded type definitions.</li>
 </ol>
 
 <p>You also need to supply an appropriate JiBX binding definition (using the
-<i>-Ebindingfile {file}</i> parameter for WSDL2Java - see
-<a href="./jibx-codegen-integration.html#codegen">JiBX Codegen Integration -
-WSDL2Java usage</a> for more details). This must define abstract <i>mapping</i>s
-for the <i>complexType</i>s referenced by child elements of the inputs and
-outputs, with a <i>type-name</i> attribute matching the schema
-<i>complexType</i> name. If the child elements reference schema <i>simpleType</i>
-definitions the binding must also define a <i>format</i>s for each
-<i>simpleType</i>, with a <i>label</i> attribute matching the schema
+<i>-Ebindingfile {file}</i> parameter for WSDL2Java - see <a
+href="./jibx-codegen-integration.html#codegen">JiBX Codegen Integration -
+WSDL2Java usage</a> for more details). This must define abstract
+<i>mapping</i>s for the <i>complexType</i>s referenced by child elements of
+the inputs and outputs, with a <i>type-name</i> attribute matching the schema
+<i>complexType</i> name. If the child elements reference schema
+<i>simpleType</i> definitions the binding must also define a <i>format</i>s
+for each <i>simpleType</i>, with a <i>label</i> attribute matching the schema
 <i>simpleType</i> name. The binding definition must also specify the
 <i>force-classes='true'</i> attribute on the <i>binding</i> element.</p>
 
 <p>For example, here's a binding definition that matches the above WSDL:</p>
+<pre>&lt;binding force-classes="true" xmlns:tns="http://ws.sosnoski.com/library/types"&gt;
 
-<pre>
-&lt;binding force-classes="true" xmlns:tns="http://ws.sosnoski.com/library/types">
-
-  &lt;namespace uri="http://ws.sosnoski.com/library/types" default="elements"/>
+  &lt;namespace uri="http://ws.sosnoski.com/library/types" default="elements"/&gt;
   
   &lt;mapping abstract="true" class="com.sosnoski.ws.library.jibx.beans.Book"
-      type-name="tns:BookInformation">
-    &lt;value name="type" style="attribute" field="m_type"/>
-    &lt;value name="isbn" style="attribute" field="m_isbn"/>
-    &lt;collection field="m_authors">
-      &lt;value name="author"/>
-    &lt;/collection>
-    &lt;value name="title" field="m_title"/>
-  &lt;/mapping>
+      type-name="tns:BookInformation"&gt;
+    &lt;value name="type" style="attribute" field="m_type"/&gt;
+    &lt;value name="isbn" style="attribute" field="m_isbn"/&gt;
+    &lt;collection field="m_authors"&gt;
+      &lt;value name="author"/&gt;
+    &lt;/collection&gt;
+    &lt;value name="title" field="m_title"/&gt;
+  &lt;/mapping&gt;
   
-&lt;/binding>
-</pre>
+&lt;/binding&gt;</pre>
 
 <p>And here's the actual <code>com.sosnoski.ws.library.jibx.beans.Book</code>
 class:</p>
-
-<pre>
-package com.sosnoski.ws.library.jibx.beans;
+<pre>package com.sosnoski.ws.library.jibx.beans;
 
 public class Book
 {
@@ -244,8 +233,7 @@
     public String[] getAuthors() {
         return m_authors;
     }
-}
-</pre>
+}</pre>
 
 <p>The JiBX code generation for Axis2 currently requires that classes
 coresponding to unwrapped child elements (such as
@@ -253,12 +241,11 @@
 public default (no-argument) constructors.</p>
 
 <p>JiBX handling allows the child elements of both inputs and outputs to be
-optional (with <i>nillable='true'</i>, <i>minOccurs='0'</i>, or both), providing
-the binding converts these child elements to object types rather than primitive
-types. It also allows repeated child elements (with
+optional (with <i>nillable='true'</i>, <i>minOccurs='0'</i>, or both),
+providing the binding converts these child elements to object types rather
+than primitive types. It also allows repeated child elements (with
 <i>minOccurs='unbounded'</i>, or any value of <i>minOccurs</i> greater than
-one), representing the repeated elements as arrays of the corresponding object
-or primitive types.</p>
-
+one), representing the repeated elements as arrays of the corresponding
+object or primitive types.</p>
 </body>
 </html>



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org