You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2008/05/01 23:20:38 UTC
svn commit: r652665 [8/45] - in /webservices/axis2/site: ./ 1_4/ 1_4/adb/
1_4/adb/images/ 1_4/images/ 1_4/images/archi-guide/ 1_4/images/userguide/
1_4/jibx/ 1_4/src/ css/ download/0_9/ download/0_91/ download/0_92/
download/0_93/ download/0_94/ downlo...
Added: webservices/axis2/site/1_4/jibx/jibx-codegen-integration.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/1_4/jibx/jibx-codegen-integration.html?rev=652665&view=auto
==============================================================================
--- webservices/axis2/site/1_4/jibx/jibx-codegen-integration.html (added)
+++ webservices/axis2/site/1_4/jibx/jibx-codegen-integration.html Thu May 1 14:20:27 2008
@@ -0,0 +1,513 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+
+
+
+
+
+
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Maven - </title>
+ <style type="text/css" media="all">
+ @import url("../../css/maven-base.css");
+ @import url("../../css/maven-theme.css");
+ @import url("../../css/site.css");
+ </style>
+ <link rel="stylesheet" href="../../css/print.css" type="text/css" media="print" />
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ </head>
+ <body class="composite">
+ <div id="banner">
+ <a href="../" id="bannerLeft">
+
+ <img src="http://www.apache.org/images/asf_logo_wide.png" alt="" />
+
+ </a>
+ <span id="bannerRight">
+
+ <img src="../../../images/axis.jpg" alt="" />
+
+ </span>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="breadcrumbs">
+
+
+
+
+
+
+
+
+ <div class="xleft">
+ Last Published: 2008-05-01
+ </div>
+ <div class="xright"> <a href="../../index.html">Axis2/Java</a>
+ |
+ <a href="../../../c">Axis2/C</a>
+ |
+ <a href="../../../..">Apache WS</a>
+ |
+ <a href="http://www.apache.org" class="externalLink">Apache</a>
+
+
+
+
+
+
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="leftColumn">
+ <div id="navcolumn">
+
+
+
+
+
+
+
+
+ <h5>Axis2/Java</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../index.html">Home</a>
+ </li>
+ </ul>
+ <h5>Downloads</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../download.cgi">Releases</a>
+ </li>
+
+ <li class="none">
+ <a href="../../modules/index.html">Modules</a>
+ </li>
+
+ <li class="none">
+ <a href="../../tools/index.html">Tools</a>
+ </li>
+ </ul>
+ <h5>Documentation</h5>
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="expanded">
+ <a href="../../1_4/contents.html">Version 1.4</a>
+ <ul>
+
+ <li class="none">
+ <a href="../../1_4/toc.html">Table of Contents</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/installationguide.html">Installation Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/quickstartguide.html">QuickStart Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/userguide.html">User Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/jaxws-guide.html">JAXWS Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/pojoguide.html">POJO Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/spring.html">Spring Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/webadminguide.html">Web Administrator's Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/migration.html">Migration Guide (from Axis1)</a>
+ </li>
+ </ul>
+ </li>
+
+ <li class="none">
+ <a href="../../1_3/contents.html">Version 1.3</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_2/contents.html">Version 1.2</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_1_1/contents.html">Version 1.1.1</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_1/contents.html">Version 1.1</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_0/index.html">Version 1.0</a>
+ </li>
+
+ <li class="none">
+ <a href="../../0_95/index.html">Version 0.95</a>
+ </li>
+
+ <li class="none">
+ <a href="../../0_94/index.html">Version 0.94</a>
+ </li>
+
+ <li class="none">
+ <a href="../../0_93/index.html">Version 0.93</a>
+ </li>
+ </ul>
+ <h5>Resources</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../faq.html">FAQ</a>
+ </li>
+
+ <li class="none">
+ <a href="../../articles.html">Articles</a>
+ </li>
+
+ <li class="none">
+ <a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink">Wiki</a>
+ </li>
+
+ <li class="none">
+ <a href="../../refLib.html">Reference Library</a>
+ </li>
+
+ <li class="none">
+ <a href="../../../1_4/api/index.html">Online Java Docs</a>
+ </li>
+ </ul>
+ <h5>Get Involved</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../overview.html">Overview</a>
+ </li>
+
+ <li class="none">
+ <a href="../../svn.html">Checkout the Source</a>
+ </li>
+
+ <li class="none">
+ <a href="../../mail-lists.html">Mailing Lists</a>
+ </li>
+
+ <li class="none">
+ <a href="../../release-process.html">Release Process</a>
+ </li>
+
+ <li class="none">
+ <a href="../../guidelines.html">Developer Guidelines</a>
+ </li>
+
+ <li class="none">
+ <a href="../../siteHowTo.html">Build the Site</a>
+ </li>
+ </ul>
+ <h5>Project Information</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../team-list.html">Project Team</a>
+ </li>
+
+ <li class="none">
+ <a href="../../issue-tracking.html">Issue Tracking</a>
+ </li>
+
+ <li class="none">
+ <a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/?root=Apache-SVN" class="externalLink">Source Code</a>
+ </li>
+
+ <li class="none">
+ <a href="../../thanks.html">Acknowledgements</a>
+ </li>
+
+ <li class="none">
+ <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink">License</a>
+ </li>
+ </ul>
+ <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+ <img alt="Built by Maven" src="../../images/logos/maven-feather.png"></img>
+ </a>
+
+
+
+
+
+
+
+
+ </div>
+ </div>
+ <div id="bodyColumn">
+ <div id="contentBox">
+ <html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org"><meta http-equiv="content-type" content="">JiBX Integration with Axis2<link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all"></head><h1>JiBX Integration With Axis2</h1><p>This document describes using JiBX data binding with Axis2. JiBX
+differs from the other data binding techniques supported by Axis2
+in that it allows you to use your own Java data objects (as opposed
+to Java data objects generated from a schema definition). JiBX also
+provides a nicer form of unwrapped Web services interface than is
+supported by the other data binding techniques. On the downside,
+JiBX requires more setup than the other data binding techniques -
+in particular, you need to come up with a set of data classes and a
+binding definition in order to work with JiBX in Axis2.</p>
+<p>JiBX support for Axis2 and Web services in general is continuing
+to evolve. This page covers the basics of using JiBX with Axis2 as
+of the current release. Check the <a class="externalLink" href="http://www.sosnoski.com/jibx-wiki/space/axis2-jibx">JiBX Axis2
+Wiki page</a>
+ for updated information about using JiBX with
+Axis2.</p>
+<h2>Content</h2><ul><li><a href="#intro">Introduction</a>
+</li>
+<li><a href="#wrapped">Wrapped vs. unwrapped</a>
+</li>
+<li><a href="#java">Starting from Java</a>
+</li>
+<li><a href="#wsdl">Starting from WSDL</a>
+</li>
+<li><a href="#codegen">Axis2 JiBX Code Generation</a>
+</li>
+<li><a href="#coming">Coming Attractions</a>
+</li>
+</ul>
+<a name="intro"></a>
+<h2>Introduction</h2><p><a class="externalLink" href="http://www.jibx.org">JiBX data binding</a>
+ supports
+fast and flexible conversions between plain old Java objects
+(POJOs) and XML. JiBX uses a mapped binding approach that's based
+on binding definition documents you provide. This approach let's
+you customize the way your Java objects are converted to and from
+XML. You can even define multiple bindings to use the same Java
+objects with different XML representations. These features make
+JiBX especially useful if you're developing a Web service based on
+existing Java code, or when you need to support multiple XML
+representations for a Web service (as when you're using versioned
+schema definitions).</p>
+<p>Axis2 supports using JiBX with your Web services, including
+generating the necessary linkage code for both client and server
+sides. However, the Axis2 support for JiBX does not currently
+include code generation from the schema for a Web service - you
+need to provide your own data classes and JiBX binding definition,
+and you also need to make sure that the binding definition matches
+the XML structures defined for your Web service. The JiBX project
+provides some basic tools to help with code generation from schema,
+binding generation from Java classes, and schema generation from
+the combination of Java classes and a binding definition. In the
+future, improved versions of these tools will be integrated
+directly into the Axis2 framework support, but for now you're on
+your own with this part of the setup.</p>
+<p>You can use JiBX data binding both to expose existing Java code
+as a service, and to build a client for an existing service. This
+document runs through the sequence of steps involved for each of
+these cases, just to help users understand the basic approach to
+working with JiBX in Axis2. You can find full instructions on the
+standard JiBX parts of this sequence on the <a class="externalLink" href="http://www.jibx.org">JiBX Web site</a>
+.</p>
+<a name="wrapped"></a>
+<h2>Wrapped vs. unwrapped</h2><p>Axis2 support for JiBX currently only works with the
+document-literal (doc/lit) form of Web services definitions.
+Doc/lit Web services generally use particular schema elements as
+input and output from each operation, and the Axis2 support for
+JiBX assumes this structure (which is also the structure required
+for compatibility with the <a class="externalLink" href="http://www.ws-i.org/Profiles/BasicProfile-1.1.html">WS-I Basic
+Profile</a>
+).</p>
+<p>A popular subset of doc/lit Web services use a form called
+"wrapped". Wrapped doc/lit Web services define service operations
+that correspond to method calls, using input and output element
+names based on the method name and embedding the actual parameter
+values for the method call within the input element.</p>
+<p>When used with Axis2, JiBX supports both general doc/lit and
+wrapped service definitions. Wrapped service definitions can be
+"unwrapped" during code generation to provide a greatly simplified
+interface. JiBX unwrapping of service definitions is not compatible
+with the unwrapping support for other data binding frameworks used
+with Axis2, but most users will find the JiBX approach easy and
+convenient. See the <a href="./jibx-unwrapped-example.html">JiBX
+Unwrapped Example</a>
+ and the <a href="./jibx-doclit-example.html">JiBX Document/Literal Example</a>
+
+pages for a detailed comparison of the two forms of service
+interface.</p>
+<a name="java"></a>
+<h2>Starting from Java</h2><p>Here's the sequence of steps for using JiBX with Axis2 to expose
+existing Java code as a Web service:</p>
+<ol type="1"><li>Create a JiBX binding definition for the data being transferred
+by the Web service (you may be able to use the JiBX binding
+generator to help with this step).</li>
+<li>Create a schema that matches the XML defined by your binding
+(you may be able to use the JiBX schema generator to help with
+this). If you're using a wrapped form of interface to your service
+you'll also need to create schema definitions for the wrapper input
+and output elements used by each operation.</li>
+<li>Create a WSDL document for your service, with the schema
+embedded or imported.</li>
+<li>Generate Axis2 server-side linkage code using WSDL2Java with
+the WSDL and your binding definition.</li>
+<li>Run the JiBX binding compiler on your Java classes to add the
+actual binding code.</li>
+<li>Include the <i>axis2-jibx.jar</i>
+ in your runtime classpath,
+along with the <i>jibx-runtime.jar</i>
+.</li>
+</ol>
+<p>If you use a wrapped interface for your Web service you can
+expose method calls in your existing code directly as operations in
+the service. In this case you normally just use your existing data
+objects with JiBX data binding, and add schema definitions for the
+wrapper elements. See the <a href="./jibx-unwrapped-example.html">JiBX Unwrapped Example</a>
+ page for
+more details on how this works.</p>
+<p>If you use a non-wrapped interface for your Web service you need
+to define classes to hold the data input and output from each
+operation. In this case these holder classes need to be included in
+the JiBX binding definition. See the <a href="./jibx-doclit-example.html">JiBX Document/Literal Example</a>
+ page
+for more details on this case.</p>
+<a name="wsdl"></a>
+<h2>Starting from WSDL</h2><p>Here's the sequence of steps for using JiBX with Axis2 to
+implement a client for an existing Web service (or the actual
+service, when you've been supplied with the WSDL your service is to
+implement):</p>
+<ol type="1"><li>Create Java classes for the data being transferred by the Web
+service, and a JiBX binding definition that maps these classes to
+the schema defined by the Web service (you may be able to use the
+JiBX xsd2jibx tool to help with this).</li>
+<li>Generate Axis2 client linkage code using WSDL2Java with the
+WSDL and your binding definition.</li>
+<li>Run the JiBX binding compiler on your Java classes to add the
+actual binding code.</li>
+<li>Include the <i>axis2-jibx.jar</i>
+ in your runtime classpath,
+along with the <i>jibx-runtime.jar</i>
+</li>
+</ol>
+<p>As with the starting from Java case, there are some differences
+in the handling depending on whether your service definition fits
+the wrapped form. See the <a href="./jibx-unwrapped-example.html">JiBX Unwrapped Example</a>
+ and
+<a href="./jibx-doclit-example.html">JiBX Document/Literal
+Example</a>
+ pages for more details.</p>
+<a name="codegen"></a>
+<h2>WSDL2Java usage</h2><p>To run the WSDL2Java tool for JiBX data binding you need:</p>
+<ol type="1"><li>To specify <i>-d jibx</i>
+ to select JiBX binding.</li>
+<li>You also generally need an additional parameter,
+<i>-Ebindingfile {file}</i>
+ (where <i>{file}</i>
+ is the file path
+to your JiBX binding definition).</li>
+<li>Finally, you need to have the <i>axis2-jibx-XXXX.jar</i>
+, the
+<i>jibx-bind-XXXX.jar</i>
+, and the <i>jibx-run-XXXX.jar</i>
+ files
+from your Axis2 distribution included in the WSDL2Java
+classpath.</li>
+</ol>
+<p>If you want to use the unwrapped form of interface you also need
+to specify the <i>-uw</i>
+ option to WSDL2Java. In this case your
+JiBX binding definition must include abstact mappings for all the
+complex objects which correspond to method parameters, and each
+abstract mapping must specify a <i>type-name</i>
+ attribute that
+matches the schema <i>complexType</i>
+ used in the WSDL. You can
+also use formats in the binding definition to define the handling
+of schema <i>simpleType</i>
+s. Schema types corresponding to Java
+primitives and simple objects with built-in JiBX conversions are
+handled automatically, and if all the parameter and return values
+in your wrapped WSDL are of these types you don't even need a JiBX
+binding definition. This is the one case where the <i>-Ebindingfile
+{file}</i>
+ parameter is not needed.</p>
+<p>If you're not unwrapping the interface, you must use a JiBX
+binding definition and it must include a concrete mapping for each
+element used as input or output by any operation.</p>
+<a name="coming"></a>
+<h2>Coming Attractions</h2><p>Work is in-progress on better tools to support generating Java
+classes and corresponding JiBX binding definitions from an input
+schema, and also for generating binding+schema generation from
+existing code. These features will be integrated into the Axis2
+JiBX support when they are available. Check the <a class="externalLink" href="http://www.jibx.org">JiBX project site</a>
+ for updates on JiBX,
+and the <a class="externalLink" href="http://www.sosnoski.com/jibx-wiki/space/axis2-jibx">JiBX Axis2
+Wiki page</a>
+ for updated information about using JiBX with
+Axis2.</p>
+<h2>References</h2><p><a class="externalLink" href="http://jibx.sourceforge.net/tutorial/binding-tutorial.html">JiBX:
+Bindings Tutorial</a>
+</p>
+</html>
+ </div>
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ <div id="footer">
+ <div class="xright">©
+ 2004-2008
+
+ Apache Software Foundation
+
+
+
+
+
+
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ </body>
+</html>
Added: webservices/axis2/site/1_4/jibx/jibx-doclit-example.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/1_4/jibx/jibx-doclit-example.html?rev=652665&view=auto
==============================================================================
--- webservices/axis2/site/1_4/jibx/jibx-doclit-example.html (added)
+++ webservices/axis2/site/1_4/jibx/jibx-doclit-example.html Thu May 1 14:20:27 2008
@@ -0,0 +1,590 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+
+
+
+
+
+
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Maven - </title>
+ <style type="text/css" media="all">
+ @import url("../../css/maven-base.css");
+ @import url("../../css/maven-theme.css");
+ @import url("../../css/site.css");
+ </style>
+ <link rel="stylesheet" href="../../css/print.css" type="text/css" media="print" />
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ </head>
+ <body class="composite">
+ <div id="banner">
+ <a href="../" id="bannerLeft">
+
+ <img src="http://www.apache.org/images/asf_logo_wide.png" alt="" />
+
+ </a>
+ <span id="bannerRight">
+
+ <img src="../../../images/axis.jpg" alt="" />
+
+ </span>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="breadcrumbs">
+
+
+
+
+
+
+
+
+ <div class="xleft">
+ Last Published: 2008-05-01
+ </div>
+ <div class="xright"> <a href="../../index.html">Axis2/Java</a>
+ |
+ <a href="../../../c">Axis2/C</a>
+ |
+ <a href="../../../..">Apache WS</a>
+ |
+ <a href="http://www.apache.org" class="externalLink">Apache</a>
+
+
+
+
+
+
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="leftColumn">
+ <div id="navcolumn">
+
+
+
+
+
+
+
+
+ <h5>Axis2/Java</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../index.html">Home</a>
+ </li>
+ </ul>
+ <h5>Downloads</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../download.cgi">Releases</a>
+ </li>
+
+ <li class="none">
+ <a href="../../modules/index.html">Modules</a>
+ </li>
+
+ <li class="none">
+ <a href="../../tools/index.html">Tools</a>
+ </li>
+ </ul>
+ <h5>Documentation</h5>
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="expanded">
+ <a href="../../1_4/contents.html">Version 1.4</a>
+ <ul>
+
+ <li class="none">
+ <a href="../../1_4/toc.html">Table of Contents</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/installationguide.html">Installation Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/quickstartguide.html">QuickStart Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/userguide.html">User Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/jaxws-guide.html">JAXWS Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/pojoguide.html">POJO Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/spring.html">Spring Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/webadminguide.html">Web Administrator's Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/migration.html">Migration Guide (from Axis1)</a>
+ </li>
+ </ul>
+ </li>
+
+ <li class="none">
+ <a href="../../1_3/contents.html">Version 1.3</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_2/contents.html">Version 1.2</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_1_1/contents.html">Version 1.1.1</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_1/contents.html">Version 1.1</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_0/index.html">Version 1.0</a>
+ </li>
+
+ <li class="none">
+ <a href="../../0_95/index.html">Version 0.95</a>
+ </li>
+
+ <li class="none">
+ <a href="../../0_94/index.html">Version 0.94</a>
+ </li>
+
+ <li class="none">
+ <a href="../../0_93/index.html">Version 0.93</a>
+ </li>
+ </ul>
+ <h5>Resources</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../faq.html">FAQ</a>
+ </li>
+
+ <li class="none">
+ <a href="../../articles.html">Articles</a>
+ </li>
+
+ <li class="none">
+ <a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink">Wiki</a>
+ </li>
+
+ <li class="none">
+ <a href="../../refLib.html">Reference Library</a>
+ </li>
+
+ <li class="none">
+ <a href="../../../1_4/api/index.html">Online Java Docs</a>
+ </li>
+ </ul>
+ <h5>Get Involved</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../overview.html">Overview</a>
+ </li>
+
+ <li class="none">
+ <a href="../../svn.html">Checkout the Source</a>
+ </li>
+
+ <li class="none">
+ <a href="../../mail-lists.html">Mailing Lists</a>
+ </li>
+
+ <li class="none">
+ <a href="../../release-process.html">Release Process</a>
+ </li>
+
+ <li class="none">
+ <a href="../../guidelines.html">Developer Guidelines</a>
+ </li>
+
+ <li class="none">
+ <a href="../../siteHowTo.html">Build the Site</a>
+ </li>
+ </ul>
+ <h5>Project Information</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../team-list.html">Project Team</a>
+ </li>
+
+ <li class="none">
+ <a href="../../issue-tracking.html">Issue Tracking</a>
+ </li>
+
+ <li class="none">
+ <a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/?root=Apache-SVN" class="externalLink">Source Code</a>
+ </li>
+
+ <li class="none">
+ <a href="../../thanks.html">Acknowledgements</a>
+ </li>
+
+ <li class="none">
+ <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink">License</a>
+ </li>
+ </ul>
+ <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+ <img alt="Built by Maven" src="../../images/logos/maven-feather.png"></img>
+ </a>
+
+
+
+
+
+
+
+
+ </div>
+ </div>
+ <div id="bodyColumn">
+ <div id="contentBox">
+ <html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org"><meta http-equiv="content-type" content="">JiBX general document/literal<link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all"></head><h1>JiBX general document/literal</h1><p>Code generation for JiBX data binding converts operations
+defined by a Web service to method calls. With general
+document/literal (doc/lit) Web services the generated methods each
+take a single parameter object and return a single result object.
+Here's a sample doc/lit WSDL (partial) by way of an example:</p>
+<pre>
+<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/">
+
+ <wsdl:types>
+
+ <schema elementFormDefault="qualified"
+ targetNamespace="http://ws.sosnoski.com/library/types"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+
+ <element name="getBook">
+ <complexType>
+ <sequence>
+ <element name="isbn" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="getBookResponse">
+ <complexType>
+ <sequence>
+ <element name="book" minOccurs="0" type="tns:BookInformation"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="addBook">
+ <complexType>
+ <sequence>
+ <element name="type" type="string"/>
+ <element name="isbn" type="string"/>
+ <element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/>
+ <element name="title" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="addBookResponse">
+ <complexType>
+ <sequence>
+ <element name="success" type="boolean"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <complexType name="BookInformation">
+ <sequence>
+ <element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/>
+ <element name="title" type="string"/>
+ </sequence>
+ <attribute name="type" use="required" type="string"/>
+ <attribute name="isbn" use="required" type="string"/>
+ </complexType>
+
+ </schema>
+
+ </wsdl:types>
+
+ <wsdl:message name="getBookRequest">
+ <wsdl:part element="wns:getBook" name="parameters"/>
+ </wsdl:message>
+
+ <wsdl:message name="getBookResponse">
+ <wsdl:part element="wns:getBookResponse" name="parameters"/>
+ </wsdl:message>
+
+ <wsdl:message name="addBookRequest">
+ <wsdl:part element="wns:addBook" name="parameters"/>
+ </wsdl:message>
+
+ <wsdl:message name="addBookResponse">
+ <wsdl:part element="wns:addBookResponse" name="parameters"/>
+ </wsdl:message>
+
+ <wsdl:portType name="Library">
+
+ <wsdl:operation name="getBook">
+ <wsdl:input message="wns:getBookRequest" name="getBookRequest"/>
+ <wsdl:output message="wns:getBookResponse" name="getBookResponse"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="addBook">
+ <wsdl:input message="wns:addBookRequest" name="addBookRequest"/>
+ <wsdl:output message="wns:addBookResponse" name="addBookResponse"/>
+ </wsdl:operation>
+
+ </wsdl:portType>
+ ...
+</wsdl:definitions>
+</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>
+
+takes an <i>addBook</i>
+ element as input and returns an
+<i>addBookResponse</i>
+ as output. Here's the body of the client
+interface generated by the standard JiBX code generation:</p>
+<pre>
+ public interface LibraryJibxUnwrapped {
+
+
+ /**
+ * Auto generated method signatures
+ * @param addBook
+ */
+ public com.sosnoski.ws.library.jibx.wrappers.AddBookResponse addBook(
+ com.sosnoski.ws.library.jibx.wrappers.AddBookRequest addBook) throws java.rmi.RemoteException
+
+
+ ;
+
+
+ /**
+ * Auto generated method signatures
+ * @param getBook
+ */
+ public com.sosnoski.ws.library.jibx.wrappers.GetBookResponse getBook(
+ com.sosnoski.ws.library.jibx.wrappers.GetBookRequest getBook) throws java.rmi.RemoteException
+
+
+ ;
+
+
+
+ //
+ }
+</pre><p>You can see that the JiBX code generation converted the
+operations into simple method call interfaces using objects
+corresponding to the input and output elements of the operation
+(see <a href="./jibx-unwrapped-example.html">JiBX Unwrapped
+Example</a>
+ for the interface generated when unwrapping is instead
+used). The server-side interface is the same.</p>
+<p>You need to supply an appropriate JiBX binding definition for
+use in code generation (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 concrete
+<i>mappings</i>
+ for each element used as the input or output of an
+operation. The JiBX code generation extension matches the element
+names to the binding in order to determine the corresponding class
+to use in generated code.</p>
+<p>For example, here's a binding definition that matches the above
+WSDL:</p>
+<pre>
+<binding add-constructors="true">
+
+ <namespace uri="http://ws.sosnoski.com/library/types" default="elements"/>
+
+ <mapping name="getBook"
+ class="com.sosnoski.ws.library.jibx.wrappers.GetBookRequest">
+ <value name="isbn" field="m_isbn"/>
+ </mapping>
+
+ <mapping name="getBookResponse"
+ class="com.sosnoski.ws.library.jibx.wrappers.GetBookResponse">
+ <structure name="book" field="m_book"/>
+ </mapping>
+
+ <mapping name="addBook"
+ class="com.sosnoski.ws.library.jibx.wrappers.AddBookRequest">
+ <structure field="m_book">
+ <value name="type" field="m_type"/>
+ <value name="isbn" field="m_isbn"/>
+ <collection field="m_authors">
+ <value name="author" type="java.lang.String"/>
+ </collection>
+ <value name="title" field="m_title"/>
+ </structure>
+ </mapping>
+
+ <mapping name="addBookResponse"
+ class="com.sosnoski.ws.library.jibx.wrappers.AddBookResponse"/>
+
+ <mapping abstract="true" class="com.sosnoski.ws.library.jibx.beans.Book">
+ <value name="type" style="attribute" field="m_type"/>
+ <value name="isbn" style="attribute" field="m_isbn"/>
+ <collection field="m_authors">
+ <value name="author" type="java.lang.String"/>
+ </collection>
+ <value name="title" field="m_title"/>
+ </mapping>
+
+</binding>
+</pre><p>And here are the actual data object classes:</p>
+<pre>
+package com.sosnoski.ws.library.jibx.wrappers;
+
+import com.sosnoski.ws.library.jibx.beans.Book;
+
+public class AddBookRequest
+{
+ private Book m_book;
+
+ public AddBookRequest(Book book) {
+ m_book = book;
+ }
+
+ public Book getBook() {
+ return m_book;
+ }
+}
+
+public class AddBookResponse
+{
+}
+
+public class GetBookRequest
+{
+ private String m_isbn;
+
+ public GetBookRequest(String isbn) {
+ m_isbn = isbn;
+ }
+
+ public String getIsbn() {
+ return m_isbn;
+ }
+}
+
+public class GetBookResponse
+{
+ private Book m_book;
+
+ public GetBookResponse(Book book) {
+ m_book = book;
+ }
+
+ public Book getBook() {
+ return m_book;
+ }
+}
+
+package com.sosnoski.ws.library.jibx.beans;
+
+public class Book
+{
+ private String m_type;
+ private String m_isbn;
+ private String m_title;
+ private String[] m_authors;
+
+ public Book() {}
+
+ public String getType() {
+ return m_type;
+ }
+
+ public String getIsbn() {
+ return m_isbn;
+ }
+
+ public String getTitle() {
+ return m_title;
+ }
+
+ public String[] getAuthors() {
+ return m_authors;
+ }
+}
+</pre></html>
+ </div>
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ <div id="footer">
+ <div class="xright">©
+ 2004-2008
+
+ Apache Software Foundation
+
+
+
+
+
+
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ </body>
+</html>
Added: webservices/axis2/site/1_4/jibx/jibx-unwrapped-example.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/1_4/jibx/jibx-unwrapped-example.html?rev=652665&view=auto
==============================================================================
--- webservices/axis2/site/1_4/jibx/jibx-unwrapped-example.html (added)
+++ webservices/axis2/site/1_4/jibx/jibx-unwrapped-example.html Thu May 1 14:20:27 2008
@@ -0,0 +1,589 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+
+
+
+
+
+
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Maven - </title>
+ <style type="text/css" media="all">
+ @import url("../../css/maven-base.css");
+ @import url("../../css/maven-theme.css");
+ @import url("../../css/site.css");
+ </style>
+ <link rel="stylesheet" href="../../css/print.css" type="text/css" media="print" />
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ </head>
+ <body class="composite">
+ <div id="banner">
+ <a href="../" id="bannerLeft">
+
+ <img src="http://www.apache.org/images/asf_logo_wide.png" alt="" />
+
+ </a>
+ <span id="bannerRight">
+
+ <img src="../../../images/axis.jpg" alt="" />
+
+ </span>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="breadcrumbs">
+
+
+
+
+
+
+
+
+ <div class="xleft">
+ Last Published: 2008-05-01
+ </div>
+ <div class="xright"> <a href="../../index.html">Axis2/Java</a>
+ |
+ <a href="../../../c">Axis2/C</a>
+ |
+ <a href="../../../..">Apache WS</a>
+ |
+ <a href="http://www.apache.org" class="externalLink">Apache</a>
+
+
+
+
+
+
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="leftColumn">
+ <div id="navcolumn">
+
+
+
+
+
+
+
+
+ <h5>Axis2/Java</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../index.html">Home</a>
+ </li>
+ </ul>
+ <h5>Downloads</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../download.cgi">Releases</a>
+ </li>
+
+ <li class="none">
+ <a href="../../modules/index.html">Modules</a>
+ </li>
+
+ <li class="none">
+ <a href="../../tools/index.html">Tools</a>
+ </li>
+ </ul>
+ <h5>Documentation</h5>
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="expanded">
+ <a href="../../1_4/contents.html">Version 1.4</a>
+ <ul>
+
+ <li class="none">
+ <a href="../../1_4/toc.html">Table of Contents</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/installationguide.html">Installation Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/quickstartguide.html">QuickStart Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/userguide.html">User Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/jaxws-guide.html">JAXWS Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/pojoguide.html">POJO Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/spring.html">Spring Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/webadminguide.html">Web Administrator's Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/migration.html">Migration Guide (from Axis1)</a>
+ </li>
+ </ul>
+ </li>
+
+ <li class="none">
+ <a href="../../1_3/contents.html">Version 1.3</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_2/contents.html">Version 1.2</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_1_1/contents.html">Version 1.1.1</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_1/contents.html">Version 1.1</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_0/index.html">Version 1.0</a>
+ </li>
+
+ <li class="none">
+ <a href="../../0_95/index.html">Version 0.95</a>
+ </li>
+
+ <li class="none">
+ <a href="../../0_94/index.html">Version 0.94</a>
+ </li>
+
+ <li class="none">
+ <a href="../../0_93/index.html">Version 0.93</a>
+ </li>
+ </ul>
+ <h5>Resources</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../faq.html">FAQ</a>
+ </li>
+
+ <li class="none">
+ <a href="../../articles.html">Articles</a>
+ </li>
+
+ <li class="none">
+ <a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink">Wiki</a>
+ </li>
+
+ <li class="none">
+ <a href="../../refLib.html">Reference Library</a>
+ </li>
+
+ <li class="none">
+ <a href="../../../1_4/api/index.html">Online Java Docs</a>
+ </li>
+ </ul>
+ <h5>Get Involved</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../overview.html">Overview</a>
+ </li>
+
+ <li class="none">
+ <a href="../../svn.html">Checkout the Source</a>
+ </li>
+
+ <li class="none">
+ <a href="../../mail-lists.html">Mailing Lists</a>
+ </li>
+
+ <li class="none">
+ <a href="../../release-process.html">Release Process</a>
+ </li>
+
+ <li class="none">
+ <a href="../../guidelines.html">Developer Guidelines</a>
+ </li>
+
+ <li class="none">
+ <a href="../../siteHowTo.html">Build the Site</a>
+ </li>
+ </ul>
+ <h5>Project Information</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../../team-list.html">Project Team</a>
+ </li>
+
+ <li class="none">
+ <a href="../../issue-tracking.html">Issue Tracking</a>
+ </li>
+
+ <li class="none">
+ <a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/?root=Apache-SVN" class="externalLink">Source Code</a>
+ </li>
+
+ <li class="none">
+ <a href="../../thanks.html">Acknowledgements</a>
+ </li>
+
+ <li class="none">
+ <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink">License</a>
+ </li>
+ </ul>
+ <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+ <img alt="Built by Maven" src="../../images/logos/maven-feather.png"></img>
+ </a>
+
+
+
+
+
+
+
+
+ </div>
+ </div>
+ <div id="bodyColumn">
+ <div id="contentBox">
+ <html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org"><meta http-equiv="content-type" content="">JiBX unwrapped document/literal<link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all"></head><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>
+<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 <i>unwrapping</i>
+, and the service
+definitions that it applies to are called <i>wrapped</i>
+
+definitions. The key difference that qualifies a service definition
+as wrapped is the structure of the input and output elements used
+for operations.</p>
+<p>Here's a sample wrapped WSDL (partial) by way of an example:</p>
+<pre>
+<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/">
+
+ <wsdl:types>
+
+ <schema elementFormDefault="qualified"
+ targetNamespace="http://ws.sosnoski.com/library/types"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+
+ <element name="getBook">
+ <complexType>
+ <sequence>
+ <element name="isbn" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="getBookResponse">
+ <complexType>
+ <sequence>
+ <element name="book" minOccurs="0" type="tns:BookInformation"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="addBook">
+ <complexType>
+ <sequence>
+ <element name="type" type="string"/>
+ <element name="isbn" type="string"/>
+ <element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/>
+ <element name="title" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="addBookResponse">
+ <complexType>
+ <sequence>
+ <element name="success" type="boolean"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <complexType name="BookInformation">
+ <sequence>
+ <element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/>
+ <element name="title" type="string"/>
+ </sequence>
+ <attribute name="type" use="required" type="string"/>
+ <attribute name="isbn" use="required" type="string"/>
+ </complexType>
+
+ </schema>
+
+ </wsdl:types>
+
+ <wsdl:message name="getBookRequest">
+ <wsdl:part element="wns:getBook" name="parameters"/>
+ </wsdl:message>
+
+ <wsdl:message name="getBookResponse">
+ <wsdl:part element="wns:getBookResponse" name="parameters"/>
+ </wsdl:message>
+
+ <wsdl:message name="addBookRequest">
+ <wsdl:part element="wns:addBook" name="parameters"/>
+ </wsdl:message>
+
+ <wsdl:message name="addBookResponse">
+ <wsdl:part element="wns:addBookResponse" name="parameters"/>
+ </wsdl:message>
+
+ <wsdl:portType name="Library">
+
+ <wsdl:operation name="getBook">
+ <wsdl:input message="wns:getBookRequest" name="getBookRequest"/>
+ <wsdl:output message="wns:getBookResponse" name="getBookResponse"/>
+ </wsdl:operation>
+
+ <wsdl:operation name="addBook">
+ <wsdl:input message="wns:addBookRequest" name="addBookRequest"/>
+ <wsdl:output message="wns:addBookResponse" name="addBookResponse"/>
+ </wsdl:operation>
+
+ </wsdl:portType>
+ ...
+</wsdl:definitions>
+</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>
+
+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>
+<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 {
+
+
+ /**
+ * Auto generated method signatures
+ * @param type* @param isbn* @param author* @param title
+ */
+ public boolean addBook(
+ java.lang.String type,java.lang.String isbn,java.lang.String[] author,java.lang.String title) throws java.rmi.RemoteException
+
+
+ ;
+
+
+ /**
+ * Auto generated method signatures
+ * @param isbn
+ */
+ public com.sosnoski.ws.library.jibx.beans.Book getBook(
+ java.lang.String isbn) throws java.rmi.RemoteException
+
+
+ ;
+
+
+
+ //
+ }
+</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>
+<p>The key points that allow unwrapped handling with JiBX are:</p>
+<ol type="1"><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>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>
+<binding force-classes="true" xmlns:tns="http://ws.sosnoski.com/library/types">
+
+ <namespace uri="http://ws.sosnoski.com/library/types" default="elements"/>
+
+ <mapping abstract="true" class="com.sosnoski.ws.library.jibx.beans.Book"
+ type-name="tns:BookInformation">
+ <value name="type" style="attribute" field="m_type"/>
+ <value name="isbn" style="attribute" field="m_isbn"/>
+ <collection field="m_authors">
+ <value name="author"/>
+ </collection>
+ <value name="title" field="m_title"/>
+ </mapping>
+
+</binding>
+</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;
+
+public class Book
+{
+ private String m_type;
+ private String m_isbn;
+ private String m_title;
+ private String[] m_authors;
+
+ public Book() {}
+
+ public String getType() {
+ return m_type;
+ }
+
+ public String getIsbn() {
+ return m_isbn;
+ }
+
+ public String getTitle() {
+ return m_title;
+ }
+
+ public String[] getAuthors() {
+ return m_authors;
+ }
+}
+</pre><p>The JiBX code generation for Axis2 currently requires that
+classes coresponding to unwrapped child elements (such as
+<code>com.sosnoski.ws.library.jibx.beans.Book</code>, in this case)
+provide 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
+<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>
+</html>
+ </div>
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ <div id="footer">
+ <div class="xright">©
+ 2004-2008
+
+ Apache Software Foundation
+
+
+
+
+
+
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ </body>
+</html>
Added: webservices/axis2/site/1_4/jms-transport.html
URL: http://svn.apache.org/viewvc/webservices/axis2/site/1_4/jms-transport.html?rev=652665&view=auto
==============================================================================
--- webservices/axis2/site/1_4/jms-transport.html (added)
+++ webservices/axis2/site/1_4/jms-transport.html Thu May 1 14:20:27 2008
@@ -0,0 +1,526 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+
+
+
+
+
+
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Maven - </title>
+ <style type="text/css" media="all">
+ @import url("../css/maven-base.css");
+ @import url("../css/maven-theme.css");
+ @import url("../css/site.css");
+ </style>
+ <link rel="stylesheet" href="../css/print.css" type="text/css" media="print" />
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ </head>
+ <body class="composite">
+ <div id="banner">
+ <a href="../" id="bannerLeft">
+
+ <img src="http://www.apache.org/images/asf_logo_wide.png" alt="" />
+
+ </a>
+ <span id="bannerRight">
+
+ <img src="../../images/axis.jpg" alt="" />
+
+ </span>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="breadcrumbs">
+
+
+
+
+
+
+
+
+ <div class="xleft">
+ Last Published: 2008-05-01
+ </div>
+ <div class="xright"> <a href="../index.html">Axis2/Java</a>
+ |
+ <a href="../../c">Axis2/C</a>
+ |
+ <a href="../../..">Apache WS</a>
+ |
+ <a href="http://www.apache.org" class="externalLink">Apache</a>
+
+
+
+
+
+
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="leftColumn">
+ <div id="navcolumn">
+
+
+
+
+
+
+
+
+ <h5>Axis2/Java</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../index.html">Home</a>
+ </li>
+ </ul>
+ <h5>Downloads</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../download.cgi">Releases</a>
+ </li>
+
+ <li class="none">
+ <a href="../modules/index.html">Modules</a>
+ </li>
+
+ <li class="none">
+ <a href="../tools/index.html">Tools</a>
+ </li>
+ </ul>
+ <h5>Documentation</h5>
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="expanded">
+ <a href="../1_4/contents.html">Version 1.4</a>
+ <ul>
+
+ <li class="none">
+ <a href="../1_4/toc.html">Table of Contents</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_4/installationguide.html">Installation Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_4/quickstartguide.html">QuickStart Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_4/userguide.html">User Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_4/jaxws-guide.html">JAXWS Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_4/pojoguide.html">POJO Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_4/spring.html">Spring Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_4/webadminguide.html">Web Administrator's Guide</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_4/migration.html">Migration Guide (from Axis1)</a>
+ </li>
+ </ul>
+ </li>
+
+ <li class="none">
+ <a href="../1_3/contents.html">Version 1.3</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_2/contents.html">Version 1.2</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_1_1/contents.html">Version 1.1.1</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_1/contents.html">Version 1.1</a>
+ </li>
+
+ <li class="none">
+ <a href="../1_0/index.html">Version 1.0</a>
+ </li>
+
+ <li class="none">
+ <a href="../0_95/index.html">Version 0.95</a>
+ </li>
+
+ <li class="none">
+ <a href="../0_94/index.html">Version 0.94</a>
+ </li>
+
+ <li class="none">
+ <a href="../0_93/index.html">Version 0.93</a>
+ </li>
+ </ul>
+ <h5>Resources</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../faq.html">FAQ</a>
+ </li>
+
+ <li class="none">
+ <a href="../articles.html">Articles</a>
+ </li>
+
+ <li class="none">
+ <a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink">Wiki</a>
+ </li>
+
+ <li class="none">
+ <a href="../refLib.html">Reference Library</a>
+ </li>
+
+ <li class="none">
+ <a href="../../1_4/api/index.html">Online Java Docs</a>
+ </li>
+ </ul>
+ <h5>Get Involved</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../overview.html">Overview</a>
+ </li>
+
+ <li class="none">
+ <a href="../svn.html">Checkout the Source</a>
+ </li>
+
+ <li class="none">
+ <a href="../mail-lists.html">Mailing Lists</a>
+ </li>
+
+ <li class="none">
+ <a href="../release-process.html">Release Process</a>
+ </li>
+
+ <li class="none">
+ <a href="../guidelines.html">Developer Guidelines</a>
+ </li>
+
+ <li class="none">
+ <a href="../siteHowTo.html">Build the Site</a>
+ </li>
+ </ul>
+ <h5>Project Information</h5>
+ <ul>
+
+ <li class="none">
+ <a href="../team-list.html">Project Team</a>
+ </li>
+
+ <li class="none">
+ <a href="../issue-tracking.html">Issue Tracking</a>
+ </li>
+
+ <li class="none">
+ <a href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/?root=Apache-SVN" class="externalLink">Source Code</a>
+ </li>
+
+ <li class="none">
+ <a href="../thanks.html">Acknowledgements</a>
+ </li>
+
+ <li class="none">
+ <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink">License</a>
+ </li>
+ </ul>
+ <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+ <img alt="Built by Maven" src="../images/logos/maven-feather.png"></img>
+ </a>
+
+
+
+
+
+
+
+
+ </div>
+ </div>
+ <div id="bodyColumn">
+ <div id="contentBox">
+ <html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org"><meta http-equiv="content-type" content="">JMS Transport<link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all"></head><a name="configTransport"></a>
+<h1>JMS Transport</h1><p>This document is all about the JMS (Java Messaging Service)
+Transport support in Apache Axis2, and how it should be
+configured.</p>
+<h2>Contents</h2><ul><li><a href="#CommonsHTTPTransportSender">Overview</a>
+</li>
+<li><a href="#timeout_config">Configuration</a>
+</li>
+<li><a href="#writing_services">Writing Services to Use the JMS
+Transport</a>
+</li>
+</ul>
+<a name="CommonsHTTPTransportSender"></a>
+<h2>Overview</h2><p>A new Java Messaging Service (JMS) transport implementation has
+been added to Axis2 to overcome some drawbacks of the previous JMS
+implementation. One of the enhancements provided with this new
+implementation is the ability to <strong>assign custom JMS
+destination names or existing JMS destinations to Axis2 services
+being deployed</strong>.</p>
+<a name="timeout_config"></a>
+<h2>Configuration</h2><p>To use the JMS transport, the axis2.xml configuration must be
+setup as follows, in order to configure the JMSListener and the JMS
+Sender</p>
+<pre><strong>axis2.xml</strong>
+ <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
+ <parameter name="default">
+ <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
+ <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
+ <parameter name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter>
+ </parameter>
+ </transportReceiver>
+
+ <transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/>
+</pre><p>The JMS transport receiver configuration allows you to define
+the default connection factory (named as "default" ~
+JMSConstants.DEFAULT_CONFAC_NAME) for use by Axis2 services using
+the JMS transport. This connection factory will be used by any
+service that does not explicitly specify a connection factory name
+in its services.xml file. The configuration required to associate a
+(local) Axis2 connection factory to an actual implementation must
+be provided as shown above. To specify the JNDI URL, the initial
+context factory class and the JNDI name of the actual JMS
+connection factory is used. You can also specify the parameters
+"java.naming.security.principal" and
+"java.naming.security.credentials", if required, to access the
+actual connection factory. The example shown above uses an ActiveMQ
+JMS implementation.</p>
+<pre><strong>axis2.xml</strong>
+ <parameter name="myTopicConnectionFactory">
+</pre><pre>
+ <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
+</pre><pre>
+ <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
+</pre><pre>
+ <parameter name="transport.jms.ConnectionFactoryJNDIName">TopicConnectionFactory</parameter>
+</pre><pre>
+ </parameter>
+</pre><p>If it is required or applicable, you are free to define
+additional (local) connection factories to Axis2 as shown above,
+which your services can use. For a service to specify that such a
+connection factory should be used, its services.xml may specify the
+following configuration parameter:</p>
+<pre>
+services.xml
+ <parameter name="transport.jms.ConnectionFactory" locked="true">myTopicConnectionFactory</parameter>
+</pre><p><strong>Note:</strong> Depending on your JMS implementation, you
+will need to make available all the required libraries for your
+Axis2 instance. This example assumes you are using an ActiveMQ
+instance. To run the given code samples, it is required to make the
+following JAR files available: activeio-core-3.0-beta1.jar,
+activemq-core-4.0-RC2.jar,
+geronimo-j2ee-management_1.0_spec-1.0.jar at a minimum. It also
+requires you to start ActiveMQ separately from Axis2, and then
+provide the appropriate configuration settings (e.g. URL) to
+Axis2.</p>
+<p>During initialization, the JMS Listener creates a dedicated JMS
+message processor for each connection factory defined, and utilizes
+a shared thread pool to process the received messages.</p>
+<p>A service on an Axis2 instance is deployed on all the started
+transports by default, unless a list of transports is specified in
+its services.xml file. Hence, if a service must only be deployed on
+JMS, you should specify it on the services.xml as follows:</p>
+<pre>
+ <transports>
+ <transport>jms</transport>
+ </transports>
+</pre><p>If the services.xml does not provide an explicit JMS destination
+name, it is assumed that the service will listen for messages on a
+JMS <strong>Queue</strong> by the same name as the <strong>name of
+the service</strong>. If an explicit connection factory definition
+name has not been specified, it is assumed that the "default"
+connection factory definition configured within the transport
+receiver is used. To provide a custom JMS destination name and
+connection factory, the services.xml file provides the following
+optional parameters.</p>
+<pre>
+ <parameter name="transport.jms.ConnectionFactory" locked="true">myTopicConnectionFactory</parameter>
+ <parameter name="transport.jms.Destination" locked="true">dynamicTopics/something.TestTopic</parameter>
+</pre><a name="writing_services"></a>
+<h2>Writing Services to Use the JMS Transport</h2><p>This section assumes that you are already familiar with <a href="xmlbased-server.html">writing service implementations</a>
+ for
+Axis2, and provides information on how to write your own service
+implementations to be exposed over JMS.</p>
+<p><strong>Echo - Service implementation and
+services.xml</strong></p>
+<p>This sample demonstrates a very simple service which is to be
+exposed over JMS. It does not specify a custom connection factory
+name, and hence uses the default value as specified in the JMS
+transport listener configuration. It also does not specify a custom
+destination name, and hence would listen to messages over a JMS
+Queue named "Echo" (which is the name of the service). This service
+will be exposed over all defined Axis2 transports, and the
+resulting URL for the service over JMS will be:</p>
+<p>
+jms:/echo?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616</p>
+<pre><strong>Echo.java</strong></pre><pre>
+ public class Echo {
+</pre><pre>
+ public String echoString(String in) {
+</pre><pre>
+ return in;
+</pre><pre>
+ }
+</pre><pre>
+ public String echoString1(String in) {
+</pre><pre>
+ return "echoString1 " + in;
+</pre><pre>
+ }
+</pre><pre>
+ public String echoString2(String in) {
+</pre><pre>
+ return "echoString2 " + in;
+</pre><pre>
+ }
+</pre><pre>
+ }
+</pre><pre><strong>services.xml</strong></pre><pre>
+ <service name="echo">
+</pre><pre>
+ <description>Echo Service</description>
+</pre><pre>
+ <messageReceivers>
+</pre><pre>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+</pre><pre>
+ class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
+</pre><pre>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+</pre><pre>
+ class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
+</pre><pre>
+ </messageReceivers>
+</pre><pre>
+ <parameter name="ServiceClass" locked="true">Echo</parameter>
+</pre><pre>
+</service>
+</pre><p><strong>Echo2 - Service implementation and
+services.xml</strong></p>
+<p>This example shows a simple service which specifies that it
+should only be exposed over the JMS transport, and that the custom
+connection factory named "myTopcConnectionFactory" should be used
+to listen for requests at the JMS destination named
+"dynamicTopics/something.TestTopic". The JMS URL to access this
+service is:</p>
+<p>
+jms:/dynamicTopics/something.TestTopic?transport.jms.ConnectionFactoryJNDIName=TopicConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&java.naming.security.principal=system&java.naming.security.credentials=manager</p>
+<pre><strong>Echo2.java</strong></pre><pre>
+ public class Echo2 {
+</pre><pre>
+ public String echoString(String in) {
+</pre><pre>
+ return in;
+</pre><pre>
+ }
+</pre><pre>
+ }
+</pre><pre><strong>services.xml</strong></pre><pre>
+ <service name="echo">
+</pre><pre>
+ <transports>
+</pre><pre>
+ <transport>jms</transport>
+</pre><pre>
+ </transports>
+</pre><pre>
+ <description>Echo2 Service</description>
+</pre><pre>
+ <messageReceivers>
+</pre><pre>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+</pre><pre>
+ class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
+</pre><pre>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+</pre><pre>
+ class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
+</pre><pre>
+ </messageReceivers>
+</pre><pre>
+ <parameter name="ServiceClass" locked="true">Echo2</parameter>
+</pre><pre>
+ <parameter name="transport.jms.ConnectionFactory" locked="true">myTopicConnectionFactory</parameter>
+</pre><pre>
+ <parameter name="transport.jms.Destination" locked="true">dynamicTopics/something.TestTopic</parameter>
+</pre><pre>
+ </service>
+</pre><pre></pre><h2>Starting up the Axis2 JMS transport</h2><p>The Axis2 standalone binary distribution ships with an Axis2
+Server, which starts up all the transports that are configured as
+per the axis2.xml. Hence, configure the JMS transport in your
+axis2.xml, and use the axis2server.bat or the axis2server.sh to
+start the JMS transport.</p>
+</html>
+ </div>
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ <div id="footer">
+ <div class="xright">©
+ 2004-2008
+
+ Apache Software Foundation
+
+
+
+
+
+
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ </body>
+</html>
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org