<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2017-05-06 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20170506" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Apache Axis2 User's Guide- Creating Clients</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />
      <script type="text/javascript" src="../js/apache-maven-fluido-1.6.min.js"></script>
<meta name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" /><meta http-equiv="content-type" content="" />      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://www.apache.org/" id="bannerLeft"><img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Axis2"/></a></div>
        <div class="pull-right"><a href=".././" id="bannerRight"><img src="../images/axis.jpg" /></a></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2017-05-06<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.7.5<span class="divider">|</span></li>
        <li class=""><a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="../index.html" title="Axis2/Java">Axis2/Java</a><span class="divider">/</span></li>
    <li class="active ">Apache Axis2 User's Guide- Creating Clients</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Axis2/Java</li>
    <li><a href="../index.html" title="Home"><span class="none"></span>Home</a>  </li>
    <li><a href="../download.html" title="Downloads"><span class="none"></span>Downloads</a>  </li>
    <li><a href="javascript:void(0)" title="Release Notes"><span class="icon-chevron-down"></span>Release Notes</a>
      <ul class="nav nav-list">
    <li><a href="../release-notes/1.6.1.html" title="1.6.1"><span class="none"></span>1.6.1</a>  </li>
    <li><a href="../release-notes/1.6.2.html" title="1.6.2"><span class="none"></span>1.6.2</a>  </li>
    <li><a href="../release-notes/1.6.3.html" title="1.6.3"><span class="none"></span>1.6.3</a>  </li>
    <li><a href="../release-notes/1.6.4.html" title="1.6.4"><span class="none"></span>1.6.4</a>  </li>
    <li><a href="../release-notes/1.7.0.html" title="1.7.0"><span class="none"></span>1.7.0</a>  </li>
    <li><a href="../release-notes/1.7.1.html" title="1.7.1"><span class="none"></span>1.7.1</a>  </li>
    <li><a href="../release-notes/1.7.2.html" title="1.7.2"><span class="none"></span>1.7.2</a>  </li>
    <li><a href="../release-notes/1.7.3.html" title="1.7.3"><span class="none"></span>1.7.3</a>  </li>
    <li><a href="../release-notes/1.7.4.html" title="1.7.4"><span class="none"></span>1.7.4</a>  </li>
    <li><a href="../release-notes/1.7.5.html" title="1.7.5"><span class="none"></span>1.7.5</a>  </li>
      </ul>
  </li>
    <li><a href="../modules/index.html" title="Modules"><span class="none"></span>Modules</a>  </li>
    <li><a href="../tools/index.html" title="Tools"><span class="none"></span>Tools</a>  </li>
          <li class="nav-header">Documentation</li>
    <li><a href="../docs/toc.html" title="Table of Contents"><span class="none"></span>Table of Contents</a>  </li>
    <li><a href="../docs/installationguide.html" title="Installation Guide"><span class="none"></span>Installation Guide</a>  </li>
    <li><a href="../docs/quickstartguide.html" title="QuickStart Guide"><span class="none"></span>QuickStart Guide</a>  </li>
    <li><a href="../docs/userguide.html" title="User Guide"><span class="none"></span>User Guide</a>  </li>
    <li><a href="../docs/jaxws-guide.html" title="JAXWS Guide"><span class="none"></span>JAXWS Guide</a>  </li>
    <li><a href="../docs/pojoguide.html" title="POJO Guide"><span class="none"></span>POJO Guide</a>  </li>
    <li><a href="../docs/spring.html" title="Spring Guide"><span class="none"></span>Spring Guide</a>  </li>
    <li><a href="../docs/webadminguide.html" title="Web Administrator's Guide"><span class="none"></span>Web Administrator's Guide</a>  </li>
    <li><a href="../docs/migration.html" title="Migration Guide (from Axis1)"><span class="none"></span>Migration Guide (from Axis1)</a>  </li>
          <li class="nav-header">Resources</li>
    <li><a href="../faq.html" title="FAQ"><span class="none"></span>FAQ</a>  </li>
    <li><a href="../articles.html" title="Articles"><span class="none"></span>Articles</a>  </li>
    <li><a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki"><span class="none"></span>Wiki</a>  </li>
    <li><a href="../refLib.html" title="Reference Library"><span class="none"></span>Reference Library</a>  </li>
    <li><a href="../apidocs/index.html" title="Online Java Docs"><span class="none"></span>Online Java Docs</a>  </li>
          <li class="nav-header">Get Involved</li>
    <li><a href="../overview.html" title="Overview"><span class="none"></span>Overview</a>  </li>
    <li><a href="../svn.html" title="Checkout the Source"><span class="none"></span>Checkout the Source</a>  </li>
    <li><a href="../mail-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a>  </li>
    <li><a href="../release-process.html" title="Release Process"><span class="none"></span>Release Process</a>  </li>
    <li><a href="../guidelines.html" title="Developer Guidelines"><span class="none"></span>Developer Guidelines</a>  </li>
    <li><a href="../siteHowTo.html" title="Build the Site"><span class="none"></span>Build the Site</a>  </li>
          <li class="nav-header">Project Information</li>
    <li><a href="../team-list.html" title="Project Team"><span class="none"></span>Project Team</a>  </li>
    <li><a href="../issue-tracking.html" title="Issue Tracking"><span class="none"></span>Issue Tracking</a>  </li>
    <li><a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code"><span class="none"></span>Source Code</a>  </li>
    <li><a href="../thanks.html" title="Acknowledgements"><span class="none"></span>Acknowledgements</a>  </li>
          <li class="nav-header">Apache</li>
    <li><a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License"><span class="none"></span>License</a>  </li>
    <li><a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship"><span class="none"></span>Sponsorship</a>  </li>
    <li><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
    <li><a href="http://www.apache.org/security/" class="externalLink" title="Security"><span class="none"></span>Security</a>  </li>
  </ul>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
  <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" /></a>
              </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<a name="createclients" id="createclients"></a>

<h1>Apache Axis2 User's Guide - Creating Clients</h1>

<p>When it comes to creating a Web service client, you can do it
manually (see <a href="userguide-buildingservices.html">Building
Services</a>), but in most cases you have a Web Service Description
Language (WSDL) definition that describes the messages clients
should send and expect to receive. Axis2 provides several ways to
use this definition to automatically generate a client.</p>

<div class="section">
<h2><a name="Content"></a>Content</h2>

<ul>

<li><a href="userguide.html#intro">Introducing Axis2</a><br />

<ul>

<li><a href="userguide.html#whatis">What is Axis2?</a></li>

<li><a href="userguide.html#underhood">What's Under the
hood?</a></li>

<li><a href="userguide.html#handlessoap">How Axis2 Handles SOAP
Messages</a></li>

<li><a href="userguide.html#distributions">Axis2
Distributions</a></li>

<li><a href="userguide.html#sbd">The Axis2 Standard Binary
Distribution</a></li>

<li><a href="userguide.html#hierarchy">Axis2.war Directory
hierarchy</a></li>

<li><a href="userguide.html#docs">Axis2 Documents
Distribution</a></li>

<li><a href="userguide.html#clients">Axis2 and Clients</a></li>
</ul>
</li>

<li><a href="userguide-installingtesting.html#installingtesting">Installing and
Testing Client Code</a></li>

<li><a href="userguide-introtoservices.html#introservices">Introduction to
Services</a><br />

<ul>

<li><a href="userguide-introtoservices.html#messageexchange">Message Exchange
Patterns</a></li>
</ul>
</li>

<li><a href="userguide-creatingclients.html#createclients"><b>Creating
Clients</b></a><br />

<ul>

<li><a href="userguide-creatingclients.html#choosingclient"><b>Choosing a
Client Generation Method</b></a></li>

<li><a href="userguide-creatingclients.html#generating"><b>Generating
Clients</b></a></li>

<li><a href="userguide-creatingclients.html#adb"><b>Axis Data
Binding (ADB)</b></a></li>
</ul>
</li>

<li><a href="userguide-buildingservices.html#buildservices">Building
Services</a><br />

<ul>

<li><a href="userguide-buildingservices.html#getcomfortable">Getting
Comfortable with Available Options</a></li>

<li><a href="userguide-buildingservices.html#createscratch">Creating a service
from Scratch</a></li>

<li><a href="userguide-buildingservices.html#deploypojo">Deploying
Plain Old Java Objects</a></li>

<li><a href="userguide-buildingservices.html#deployrun">Deploying
and Running an Axis2 Service Created from WSDL</a></li>
</ul>
</li>

<li><a href="userguide-samples.html">Samples</a></li>

<li><a href="userguide-forfurtherstudy.html">For Further
Study</a></li>
</ul>
<a name="choosingclient" id="choosingclient"></a>

<div class="section">
<h2><a name="Choosing_a_Client_Generation_Method"></a>Choosing a Client Generation Method</h2>

<p>Axis2 gives you several options when it comes to mapping WSDL to
objects when generating clients. Three of these options are Axis2
DataBinding Framework, XMLBeans, and JiBX databinding. All of these
methods involve using databinding to create Java objects out of the
XML structures used by the service, and each has its pros and cons.
You can also generate XML in-out stubs that are not based on
databinding.</p>

<p>Axis2 Databinding Framework (ADB): ADB is probably the simplest
method of generating an Axis2 client. In most cases, all of the
pertinent classes are created as inner classes of a main stub
class. ADB is very easy to use, but it does have limitations. It is
not meant to be a full schema binding application, and has
difficulty with structures such as XML Schema element extensions
and restrictions.</p>

<p>XMLBeans: Unlike ADB, XMLBeans is a fully functional schema
compiler, so it doesn't carry the same limitations as ADB. It is,
however, a bit more complicated to use than ADB. It generates a
huge number of files, and the programming model, while being
certainly usable, is not as straightforward as ADB.</p>

<p>JiBX: JiBX is a complete databinding framework that actually
provides not only WSDL-to-Java conversion, as covered in this
document, but also Java-to-XML conversion. In some ways, JiBX
provides the best of both worlds. JiBX is extremely flexible,
enabling you to choose the classes that represent your entities,
but it can be complicated to set up. On the other hand, once it is
set up, actually using the generated code is as easy as using
ADB.</p>

<p>In the end, for simple structures, ADB will likely be enough for
you. If, on the other hand you need more power or flexibility,
whether you choose XMLBeans or JiBX depends on how much power or
flexibility you need and your tolerance for complexity.</p>
<a name="generating" id="generating"></a>

<div class="section">
<h2><a name="Generating_Clients"></a>Generating Clients</h2>

<p>The process for generating and using a client varies slightly
depending on the method of generation you choose. In all three
cases in this document, clients are generated from the same WSDL
file (see <a href="userguide-codelisting5.html">Code Listing
5</a>).</p>

<p>Note that the document defines four operations, DoInOnly,
NoParameters, TwoWayOneParameterEcho, and
MultipleParametersAddItem. Each of the clients will include methods
for calling each of these operations.</p>

<p>(You can get more information on WSDL at <a class="externalLink" href="http://www.w3.org/2002/ws/desc/">http://www.w3.org/2002/ws/desc/</a>
.)</p>
<a name="adb" id="adb"></a>

<div class="section">
<h2><a name="Axis_Data_Binding_ADB"></a>Axis Data Binding (ADB)</h2>

<p>To create a client using ADB, execute the following steps:</p>

<p><b>The short story:</b></p>

<ol style="list-style-type: decimal">

<li>
<a href="../download.cgi">Download</a> and unpack the Apache Axis2 Standard
Distribution, if you have not done it already.</li>

<li>Create the client stub with the following command (Assuming that you have Axis2UserGuide.wsdl file on your current working directory):

<div>
<pre>
%AXIS2_HOME%\bin\WSDL2Java -uri Axis2UserGuide.wsdl -p org.apache.axis2.axis2userguide -d adb -s
</pre></div></li>

<li>Create the client (for example, Client.java), a Java
application that uses the generated stub, and save it in the
org/apache/axis2/axis2userguide directory.</li>

<li>Build the client by typing: ant jar.client.</li>

<li>Assuming you have a corresponding service, run the client by
adding the generated Axis2UserGuideService-test-client.jar file
located in build/lib to the classpath and type: java
org.apache.axis2.axis2userguide.Client</li>
</ol>

<p><b>The long story:</b></p>

<p>If you have not done it already, <a href="../download.cgi">
download</a> and unpack the Apache Axis2 Standard Distribution. The
Axis2 WAR Distribution does not include the necessary utilities for
generating code, such as WSDL2Java.</p>

<p>In the ADB method of generating clients, all the functionalities
of the services are contained in a single class called a stub. The
stub contains inner classes corresponding to all the necessary
objects defined in the WSDL file, such as, in the case of this
WSDL, DoInOnlyRequestMessage. Once you have the stub, you will be
able to create a client by simply referring to these classes and
their methods. To generate the client, issue the following command
in Code Listing 6.</p>

<div class="section">
<h3><a name="Code_Listing_6_-_Generating_the_Client"></a><b>Code Listing 6 - Generating the Client</b></h3>

<div>
<pre>
%AXIS2_HOME%\bin\WSDL2Java -uri Axis2UserGuide.wsdl -p org.apache.axis2.axis2userguide -d adb -s
</pre></div>

<p>This command analyzes the WSDL file and creates the stub in the
package org.apache.axis2.axis2userguide. The options specify that
you want the ADB data binding method (-d), and synchronous or
blocking, methods (-s). In other words, when the client makes an
In-Out call to the service, it will wait for a response before
continuing.</p>

<p>Once you run this command, you will see two new items in the
directory. The first is the build.xml file, which contains the
instructions for <a class="externalLink" href="http://ant.apache.org/">Ant</a> to
compile the generated classes. The second is the src directory,
which contains the actual Axis2UserGuideServiceStub.java file. If
you open this file, you will see a collection of inner classes for
each of the items in the WSDL file. You'll also see a number of
calls to the Axis2 client API, including those that use AXIOM to
build and analyze the incoming and outgoing messages.</p>

<p>Now you need a client to make use of this code. To create a
client, create a new class and save it as Client.java in the
org/apache/axis2/axis2userguide directory. It should contain the
following code in <a href="userguide-codelisting7.html">Code
Listing 7</a>.</p>

<p>Note that using the service is simply a matter of creating and
populating the appropriate type of request using the names defined
in the WSDL file, and then using the stub to actually send the
request to the appropriate method. For example, to call the
DoInOnly operation, you create a DoInOnlyRequest, use its
setMessageString() method to set the contents of its messageString
element, and pass it as an argument to stub.DoInOnly().</p>

<p>To build the client, type: ant jar.client</p>

<p>This action creates two new directories, build and test. The
test directory will be empty, but the build directory contains two
versions of the client. The first version, in the lib directory, is
a .jar file that contains the client class and the stub. The
second, in the classes directory, is just raw classes.</p>

<p>Make sure all the jar files in the Axis2 lib directory are in
the classpath.</p>

<p>If you have a service corresponding to this client you can run
the client by adding the jar file to your classpath and typing:
java org.apache.axis2.axis2userguide.Client</p>

<p>(If you don't have such a service,, refer to the <a href="userguide-buildingservices.html">Building services</a>
document.)</p>

<p>You should see the response in the console window of your
servlet container. It should look something like this:</p>

<p><img src="images/fig03.jpg" alt="Response in a console window of your servlet container" /><br /></p>

<p>ADB is not your only option for generating Web service clients.
Other options include <a href="userguide-creatingclients-xmlbeans.html">XmlBeans</a>, <a href="userguide-creatingclients-jibx.html">JiBX</a> and
JAXBRI.</p>

<p><b>See the Next Section</b> -<a href="userguide-buildingservices.html#buildservices">Building
Services</a></p>
</div>
</html>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2004&#x2013;2017
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>