<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-11-16 
 | 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="20181116" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Code Generator Tool Guide for Command Line and Ant
Task</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: 2018-11-16<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.7.9<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 ">Code Generator Tool Guide for Command Line and Ant
Task</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>
    <li><a href="../release-notes/1.7.6.html" title="1.7.6"><span class="none"></span>1.7.6</a>  </li>
    <li><a href="../release-notes/1.7.7.html" title="1.7.7"><span class="none"></span>1.7.7</a>  </li>
    <li><a href="../release-notes/1.7.8.html" title="1.7.8"><span class="none"></span>1.7.8</a>  </li>
    <li><a href="../release-notes/1.7.9.html" title="1.7.9"><span class="none"></span>1.7.9</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 xmlns="http://www.w3.org/1999/xhtml">


<h1>Code Generator Tool Guide for Command Line and Ant Task</h1>

<p>The Code Generator tool consists of a command line version and
an Ant Task. This document will list the command line references
and Ant task references. Also in detail, this document shows how to
build file using custom Ant task and invoking the Code Generator
from Ant.</p>

<p>This tool is bundled with the <a href="../download.cgi#std-bin">Axis2 Binary
Distribution</a>.</p>

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

<ul>

<li><a href="#intro">Introduction</a></li>

<li><a href="#cmdline">Command Line Version</a>

<ul>

<li><a href="#cmdref">Option Reference</a></li>
</ul>
</li>

<li><a href="#ant">Ant Task</a>

<ul>

<li><a href="#antref">Ant Task Reference</a></li>

<li><a href="#example">Example Build File Using the Custom Ant
Task</a></li>

<li><a href="#invoking">Invoking the Code Generator From
Ant</a></li>
</ul>
</li>

<li><a href="#appendix">Appendix</a></li>
</ul>
<a name="intro" id="intro"></a>

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

<p>This basic tool is implemented by the WSDL2Code class and just
for the convenience in the case of Java (which would be the
majority) there is another WSDL2Java class. One can choose to run
the main classes directly or use one of the scripts to run the
WSDL2Code and WSDL2Java appropriately. (the scripts are found in
the bin directory of the <a href="../download.cgi#std-bin">Standard Binary
Distribution</a>)</p>
<a name="cmdline" id="cmdline"></a>

<div class="section">
<h2><a name="Command_Line_Version"></a>Command Line Version</h2>

<p>For those users who wish to use the command line version of the
tool, this section will be of value.</p>
<a name="cmdref" id="cmdref"></a>

<div class="section">
<h3><a name="Option_Reference"></a>Option Reference</h3>

<p>Usage WSDL2Code &lt;option_reference&gt;</p>

<p><b>E.g. :- WSDL2Code -uri &lt;Location of WSDL&gt;</b></p>

<table border="0" class="table table-striped">
<tbody>

<tr class="a">

<td width="20%"><b>Short Option</b></td>

<td width="20%"><b>Long Option</b></td>

<td width="60%"><b>Description</b></td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-uri &lt;Location of WSDL&gt;</td>

<td width="20%">None</td>

<td width="60%">WSDL file location. This should point to a WSDL
file in the local file system.</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-o &lt;output Location&gt;</td>

<td width="20%">--output &lt;output Location&gt;</td>

<td width="60%">Output file location. This is where the files would
be copied once the code generation is done. If this option is
omitted the generated files would be copied to the working
directory.</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-l &lt;language&gt;</td>

<td width="20%">--language &lt;language&gt;</td>

<td width="60%">Output language. Currently the code generator can
generate code in Java but it has the ability to be extended to
support other languages.</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-p &lt;package name&gt;</td>

<td width="20%">--package &lt;package name&gt;</td>

<td width="60%">The target package name. If omitted, a default
package (formed using the target namespace of the WSDL) will be
used.</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-a</td>

<td width="20%">--async</td>

<td width="60%">Generate code only for async style. When this
option is used the generated stubs will have only the asynchronous
invocation methods. Switched off by default.</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-s</td>

<td width="20%">--sync</td>

<td width="60%">Generate code only for sync style . When this
option is used the generated stubs will have only the synchronous
invocation methods. Switched off by default. When used with the -a
option, this takes precedence.</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-t</td>

<td width="20%">--test-case</td>

<td width="60%">Generates a test case. In the case of Java it would
be a JUnit test case.</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-ss</td>

<td width="20%">--server-side</td>

<td width="60%">Generates server side code (i.e. skeletons).
Default is off.</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-sd</td>

<td width="20%">--service-description</td>

<td width="60%">Generates the service descriptor (i.e. server.xml).
Default is off. Only valid with -ss, the server side code
generation option.</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-d &lt;databinding&gt;</td>

<td width="20%">--databinding-method &lt;databinding&gt;</td>

<td width="60%">Specifies the Databinding framework. Valid values
are xmlbeans, adb, jibx, and none. Default is adb.</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-g</td>

<td width="20%">--generate-all</td>

<td width="60%">Generates all the classes. This option is valid
only with the -ss (server side code generation) option. When on,
the client code (stubs) will also be generated along with the
skeleton.</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-u</td>

<td width="20%">--unpack-classes</td>

<td width="60%">Unpack classes. This option specifies whether to
unpack the classes and generate separate classes for the
databinders.</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-sn &lt;service name&gt;</td>

<td width="20%">--service-name &lt;service name&gt;</td>

<td width="60%">Specifies the service name to be code generated. If
the service name is not specified, then the first service will be
picked.</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-pn &lt;port name&gt;</td>

<td width="20%">--port-name &lt;port name&gt;</td>

<td width="60%">Specifies the port name to be code generated. If
the port name is not specified, then the first port (of the
selected service) will be picked.</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-ns2p</td>

<td width="20%">--namespace2package</td>

<td width="60%">Specifies a comma separated list of namespaces and
packages where the given package will be used in the place of the
auto generated package for the relevant namespace. The list will be
the format of ns1=pkg1,ns2=pkg2.</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-ssi</td>

<td width="20%">--serverside-interface</td>

<td width="60%">Generate an interface for the service
skeleton.</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-wv</td>

<td width="20%">--wsdl-version</td>

<td width="60%">WSDL Version. Valid Options : 2, 2.0, 1.1</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-S</td>

<td width="20%">--source-folder</td>

<td width="60%">Specify a directory path for generated source</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-R</td>

<td width="20%">--resource-folder</td>

<td width="60%">Specify a directory path for generated resources</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-em</td>

<td width="20%">--external-mapping</td>

<td width="60%">Specify an external mapping file</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-f</td>

<td width="20%">--flatten-files</td>

<td width="60%">Flattens the generated files</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-uw</td>

<td width="20%">--unwrap-params</td>

<td width="60%">Switch on un-wrapping</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-xsdconfig</td>

<td width="20%"></td>

<td width="60%">Use XMLBeans .xsdconfig file. Valid only with -d xmlbeans</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-ap</td>

<td width="20%">--all-ports</td>

<td width="60%">Generate code for all ports</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-or</td>

<td width="20%">--over-ride</td>

<td width="60%">Overwrite the existing classes</td>

<td></td>
</tr>

<tr class="a">

<td width="20%">-b</td>

<td width="20%">--backword-compatible</td>

<td width="60%">Generate Axis 1.x backword compatible code</td>

<td></td>
</tr>

<tr class="b">

<td width="20%">-sp</td>

<td width="20%">--suppress-prefixes</td>

<td width="60%">Suppress namespace prefixes (Optimzation that reduces size of soap request/response)</td>

<td></td>
</tr>

<tr class="a">

<td width="20%"></td>

<td width="20%">--noBuildXML</td>

<td width="60%">Don't generate the build.xml in the output directory</td>

<td></td>
</tr>

<tr class="b">

<td width="20%"></td>

<td width="20%">--noWSDL</td>

<td width="60%">Don't generate WSDL's in the resources directory</td>

<td></td>
</tr>

<tr class="a">

<td width="20%"></td>

<td width="20%">--noMessageReceiver</td>

<td width="60%">Don't generate a MessageReceiver in the generated sources</td>

<td></td>
</tr>
</tbody>
</table>

<p>Apart from these mentioned options one can pass extra options by
prefixing them with -E (uppercase). These extra options will be
processed by the extensions. The extra options that can be passed
are documented separately with the extensions documentation (For
example with ADB).</p>
<a name="ant" id="ant"></a>
</div>
<div class="section">
<h2><a name="Ant_Task"></a>Ant Task</h2>

<p>The code generator also comes bundled with an Ant task. The ant
task is implemented by the org.apache.axis2.tool.ant.AntCodegenTask
class. Following are the ant task attributes.</p>
<a name="antref" id="antref"></a>

<div class="section">
<h3><a name="Ant_Task_Reference"></a>Ant Task Reference</h3>

<table border="0" class="table table-striped">
<tbody>

<tr class="a">

<td>wsdlfilename</td>

<td>WSDL file location. Maps to the -uri option of the command line
tool.</td>
</tr>

<tr class="b">

<td>output</td>

<td>Output file location. This is where the files would be copied
once the code generation is done. If this option is omitted the
generated files would be copied to the working directory. Maps to
the -o option of the command line tool.</td>
</tr>

<tr class="a">

<td>language</td>

<td>Output language. Currently the code generator can generate code
in Java. Maps to the -l option of the command line tool.</td>
</tr>

<tr class="b">

<td>packageName</td>

<td>The target package name. If omitted, a default package (formed
using the target namespace of the WSDL) will be used. Maps to the
-p option of the command line tool.</td>
</tr>

<tr class="a">

<td>databindingName</td>

<td>Data binding framework name. Maps to the -d option of the
command line tool. Possible values include &quot;adb&quot;, &quot;xmlbeans&quot;,
&quot;jibx&quot;.</td>
</tr>

<tr class="b">

<td>serviceName</td>

<td>The name of the service in the case of multiple services. Maps
to -sn options of the command line tool.</td>
</tr>

<tr class="a">

<td>portName</td>

<td>The name of the port in the presence of multiple ports. Maps to
-pn options of the command line tool.</td>
</tr>

<tr class="b">

<td>asyncOnly</td>

<td>Generate code only for async style. When this option is used
the generated stubs will have only the asynchronous invocation
methods. Defaults to false if omitted. Only true and false are
applicable as values. Maps to the -a option of the command line
tool.</td>
</tr>

<tr class="a">

<td>syncOnly</td>

<td>Generate code only for sync style. When this option is used the
generated stubs will have only the synchronous invocation methods.
Defaults to false if omitted. Only true and false are applicable as
values. Maps to the -s option of the command line tool.</td>
</tr>

<tr class="b">

<td>serverSide</td>

<td>Generates server side code (i.e. skeletons). Only true and
false are applicable as values. Default is false. Maps to the -ss
option of the command line tool.</td>
</tr>

<tr class="a">

<td>testcase</td>

<td>Generates a test case. Possible values are true and false. Maps
to the -t options of the command line tool.</td>
</tr>

<tr class="b">

<td>generateServiceXml</td>

<td>Generates server side code (i.e. skeletons). Only true and
false are applicable as values. Default is false. Maps to the -sd
option of the command line tool.</td>
</tr>

<tr class="a">

<td>unpackClasses</td>

<td>Unpacks the generated classes. This forces the databinding
classes to be generated separately, which otherwise would have been
generated as inner classes.</td>
</tr>

<tr class="b">

<td>generateAllClasses</td>

<td>Generates all the classes including client and server side
code. Maps to the -g option of the command line tool.</td>
</tr>

<tr class="a">

<td>namespaceToPackages</td>

<td>A list of namespace to package mappings.</td>
</tr>

<tr class="b">

<td>serverSideInterface</td>

<td>Flag stating whether to generate an interface for the server
side skeleton.</td>
</tr>

<tr class="a">

<td>repositoryPath</td>

<td>Sets the repository path to be used. Maps to the -r option of
the command line tool.</td>
</tr>

<tr class="b">

<td>wsdlVersion</td>

<td>Sets the version of the wsdl that is being used during
codegeneration. This deafults to 1.1 and one can set this to 2,
when trying to work with a WSDL 2.0 document. Maps to the -wv
option of the command line tool.</td>
</tr>

<tr class="a">

<td>externalMapping</td>

<td>Location of the external mapping file to be used. Maps to the
-em option of the command line tool.</td>
</tr>

<tr class="b">

<td>targetSourceFolderLocation</td>

<td>Rather than dumping all the code in the same location, one has
the option to make the sources to be generated in a different
location, given using this option. Maps to the -S option of the
command line tool.</td>
</tr>

<tr class="a">

<td>targetResourcesFolderLocation</td>

<td>Rather than dumping all the code in the same location, one has
the option to make the resources to be generated in a different
location, given using this option. Maps to the -R option of the
command line tool.</td>
</tr>

<tr class="b">

<td>unwrap</td>

<td>This will select between wrapped and unwrapped during code
generation. Default is set to false. Maps to the -uw option of the
command line tool.</td>
</tr>
</tbody>
</table>
<a name="example" id="example"></a>
</div>
<div class="section">
<h3><a name="Example_Build_File_Using_the_Custom_Ant_Task"></a>Example Build File Using the Custom Ant Task</h3>

<p>Following is an example ant build file that uses the custom Ant
task. You can use any wsdl file to test the example. Replace the
&quot;CombinedService.wsdl&quot; with the name of your wsdl file in the
following script.</p>

<div>
<pre>
1 &lt;?xml version=&quot;1.0&quot;?&gt;
    2 &lt;project name=&quot;CodegenExample&quot; default=&quot;main&quot; basedir=&quot;.&quot;&gt;
    3
    4 &lt;path id=&quot;example.classpath&quot;&gt;
    5 &lt;fileset dir=&quot;classes&quot;&gt;
    6 &lt;include name=&quot;**/*.jar&quot; /&gt;
    7 &lt;/fileset&gt;
    8 &lt;/path&gt;
    9
    10 &lt;target name=&quot;declare&quot; &gt;
    11 &lt;taskdef name=&quot;codegen&quot;
    12 classname=&quot;org.apache.axis2.tool.ant.AntCodegenTask&quot;
    13 classpathref=&quot;example.classpath&quot;/&gt;
    15 &lt;/target&gt;
    16
    17 &lt;target name=&quot;main&quot; depends=&quot;declare&quot;&gt;
    18 &lt;codegen
    19 wsdlfilename=&quot;C:\test\wsdl\CombinedService.wsdl&quot;
    20 output=&quot;C:\output&quot;
    21 serverside=&quot;true&quot;
    22 generateservicexml=&quot;true&quot;/&gt;
    23 &lt;/target&gt;
    24
    25 &lt;/project&gt;
</pre></div>

<p>In the above build script, from line 4 to 8 it sets the
classpath and includes all the .jar files (which are listed below)
into the classpath. From line 10 to 15 it creates a target to
declare a task called &quot;codegen&quot; and sets the appropriate class
(org.apache.axis2.tool.ant.AntCodegenTask) within the classpath in
line 12. From line 17 to 23 it creates the &quot;main&quot; target to
generate the code from the given wsdl. There are some arguments set
form line 19 to 22. Here in line 19 it sets the location of the
wsdl. In line 20 it sets the output directory in which the code is
generated. Line 21 indicates that this build generates the server
side code(skeleton) and line 22 indicates that the services.xml is
also generated.</p>

<p>Notice the main target that uses the &quot;codegen&quot; task which will
use the org.apache.axis2.tool.ant.AntCodegenTask class and run the
code generation tool internally while passing the relevant
arguments and do the proper generation. If a user types</p>

<p><tt>&gt;ant</tt> or <tt>&gt;ant main</tt></p>

<p>it will generate the server side code and services.xml for the
given WSDL file (C:\test\wsdl\CombinedService.wsdl -in the above
instance) and the generated code will be written to the specified
output path (C:\output - in the above instance).</p>

<p>For this Ant task to work the following jars need to be in the
class path.</p>

<ul>

<li>axis2-*.jar (from the Axis2 distribution)</li>

<li>wsdl4j-1.6.2.jar or higher (The WSDL4J implementation jar.
Bundled with the Axis2 distribution)</li>

<li>stax-api-1.0.1.jar (The StAX API's that contain the
javax.xml.namespace.QName class. This jar may be replaced by any
other jar that contains the javax.xml.namespace.QName
implementation. However Axis2 uses this class from the
stax-api-1.0.1.jar which comes bundled with the Axis2
distribution)</li>

<li>commons-logging-1.1.jar, neethi-2.0.jar and XmlSchema-1.2.jar
(from the Axis2 distribution)</li>

<li>axiom-api-1.2.1.jar and axiom-impl-1.2.1.jar (from the Axis2
distribution)</li>

<li>activation-1.1.jar (from the Axis2 distribution)</li>

<li>wstx-asl-3.1.0.jar (from the Axis2 distribution)</li>
</ul>
<a name="invoking" id="invoking"></a>
</div>
<div class="section">
<h3><a name="Invoking_the_Code_Generator_From_Ant"></a>Invoking the Code Generator From Ant</h3>

<p>Since the users may find altering their ant class path a bit
daunting they can also follow an easier technique. The code
generator main class can be invoked directly through the build
file.</p>

<p>Below is an example of a full build.xml needed to run WSDL2Java
and generate the Java source files, compile the sources, and build
an AAR file ready for deployment (These are done one by one, by
calling the targets in the build file separately):</p>

<div>
<pre class="code">
&lt;!DOCTYPE project&gt;

&lt;project name=&quot;wsdl2java-example&quot; default=&quot;usage&quot; basedir=&quot;.&quot;&gt;

&lt;property name=&quot;project-name&quot; value=&quot;wsdl2java-example&quot;/&gt;
&lt;property file=&quot;build.properties&quot;/&gt;

&lt;property name=&quot;build&quot; value=&quot;build&quot;/&gt;
&lt;property name=&quot;src&quot; value=&quot;src&quot;/&gt;
&lt;property name=&quot;build.classes&quot; value=&quot;build/classes&quot; /&gt;

&lt;path id=&quot;axis.classpath&quot;&gt;
&lt;pathelement location=&quot;build/classes&quot; /&gt;
&lt;fileset dir=&quot;${axis.home}/lib&quot;&gt;
&lt;include name=&quot;**/*.jar&quot; /&gt;
&lt;/fileset&gt;
&lt;pathelement location=&quot;${build.classes}&quot; /&gt;
&lt;/path&gt;

&lt;path id=&quot;axis_client.classpath&quot;&gt;
&lt;pathelement location=&quot;build/classes&quot; /&gt;
&lt;fileset dir=&quot;${axis.home}&quot;&gt;
&lt;include name=&quot;**/*.jar&quot; /&gt;
&lt;/fileset&gt;
&lt;fileset dir=&quot;lib&quot;&gt;
&lt;include name=&quot;*.jar&quot; /&gt;
&lt;/fileset&gt;
&lt;pathelement location=&quot;${build.classes}&quot; /&gt;
&lt;/path&gt;

&lt;target name=&quot;usage&quot; description=&quot;Build file usage info (default task)&quot;&gt;
&lt;echo message=&quot; &quot; /&gt;
&lt;echo message=&quot;${project-name} &quot; /&gt;
&lt;echo message=&quot;-------------------------------------------------------&quot; /&gt;
&lt;echo message=&quot; &quot; /&gt;
&lt;echo message=&quot;Available Targets:&quot; /&gt;
&lt;echo message=&quot; &quot; /&gt;
&lt;echo message=&quot; Compiling:&quot; /&gt;
&lt;echo message=&quot; compile - Compiles the WSDL2Java source code&quot; /&gt;
&lt;echo message=&quot; &quot; /&gt;
&lt;echo message=&quot; Compiling client:&quot; /&gt;
&lt;echo message=&quot; compile_client - Compiles the client source code&quot; /&gt;
&lt;echo message=&quot; &quot; /&gt;
&lt;echo message=&quot; Cleaning up:&quot; /&gt;
&lt;echo message=&quot; clean - Delete class files&quot; /&gt;
&lt;echo message=&quot; &quot; /&gt;
&lt;echo message=&quot; WSDL:&quot; /&gt;
&lt;echo message=&quot; wsdl2java - Generate source from WSDL&quot; /&gt;
&lt;echo message=&quot; &quot; /&gt;
&lt;echo message=&quot; AAR:&quot; /&gt;
&lt;echo message=&quot; aar - Generate an .aar for deployment into WEB-INF/services&quot; /&gt;
&lt;echo message=&quot; &quot; /&gt;
&lt;echo message=&quot; Executing:&quot; /&gt;
&lt;echo message=&quot; runLogin - Execute the runLogin client&quot; /&gt;
&lt;/target&gt;

&lt;target name=&quot;prepare&quot; &gt;
&lt;mkdir dir=&quot;${build.classes}&quot; /&gt;
&lt;/target&gt;

&lt;target name=&quot;clean&quot; &gt;
&lt;delete dir=&quot;${build}&quot; /&gt;
&lt;delete dir=&quot;${dist}&quot; /&gt;
&lt;/target&gt;

&lt;target name=&quot;compile&quot;&gt;
&lt;echo message=&quot;Compiling wsdl2 files&quot;/&gt;

&lt;javac
srcdir=&quot;output&quot;
destdir=&quot;${build.classes}&quot;
deprecation=&quot;true&quot;
failonerror=&quot;true&quot; debug=&quot;true&quot;&gt;

&lt;classpath refid=&quot;axis.classpath&quot;/&gt;
&lt;/javac&gt;

&lt;/target&gt;

&lt;target name=&quot;wsdl2java&quot; depends=&quot;clean,prepare&quot;&gt;
&lt;delete dir=&quot;output&quot; /&gt;
&lt;java classname=&quot;org.apache.axis2.wsdl.WSDL2Java&quot; fork=&quot;true&quot;&gt;
&lt;classpath refid=&quot;axis.classpath&quot;/&gt;
&lt;arg value=&quot;-d&quot;/&gt;
&lt;arg value=&quot;xmlbeans&quot;/&gt;
&lt;arg value=&quot;-uri&quot;/&gt;
&lt;arg file=&quot;wsdl/LoginEndpoint.wsdl&quot;/&gt;
&lt;arg value=&quot;-ss&quot;/&gt;
&lt;arg value=&quot;-g&quot;/&gt;
&lt;arg value=&quot;-sd&quot;/&gt;
&lt;arg value=&quot;-o&quot;/&gt;
&lt;arg file=&quot;output&quot;/&gt;
&lt;arg value=&quot;-p&quot;/&gt;
&lt;arg value=&quot;org.example.types&quot;/&gt;
&lt;/java&gt;

&lt;!-- Move the schema folder to classpath--&gt;
&lt;move todir=&quot;${build.classes}&quot;&gt;
&lt;fileset dir=&quot;output/resources&quot;&gt;
&lt;include name=&quot;**/*schema*/**/*.class&quot;/&gt;
&lt;include name=&quot;**/*schema*/**/*.xsb&quot;/&gt;
&lt;/fileset&gt;
&lt;/move&gt;

&lt;/target&gt;

&lt;target name=&quot;jar_wsdl&quot; depends=&quot;compile&quot;&gt;
&lt;jar jarfile=&quot;lib/axis2_example_wsdl.jar&quot; &gt;
&lt;fileset dir=&quot;${build.classes}&quot; /&gt;
&lt;/jar&gt;
&lt;/target&gt;

&lt;!-- build an .aar file for axis2 web services --&gt;
&lt;target name=&quot;aar&quot; depends=&quot;compile&quot;&gt;
&lt;delete dir=&quot;${build.classes}/META-INF&quot; /&gt;
&lt;mkdir dir=&quot;${build.classes}/META-INF&quot; /&gt;
&lt;copy todir=&quot;${build.classes}/META-INF&quot; &gt;
&lt;fileset dir=&quot;output/resources&quot; &gt;
&lt;!-- axis2 web services definitions file --&gt;
&lt;include name=&quot;services.xml&quot;/&gt;
&lt;/fileset&gt;
&lt;fileset dir=&quot;wsdl&quot; &gt;
&lt;include name=&quot;LoginEndpoint.wsdl&quot;/&gt;
&lt;/fileset&gt;
&lt;/copy&gt;
&lt;jar jarfile=&quot;dist/LoginEndpoint.aar&quot; &gt;
&lt;fileset dir=&quot;${build.classes}&quot; /&gt;
&lt;/jar&gt;
&lt;/target&gt;

&lt;target name=&quot;compile_client&quot;&gt;
&lt;echo message=&quot;Compiling client files&quot;/&gt;

&lt;javac
srcdir=&quot;src&quot;
destdir=&quot;${build.classes}&quot;
deprecation=&quot;true&quot;
failonerror=&quot;true&quot; debug=&quot;true&quot;&gt;

&lt;classpath refid=&quot;axis.classpath&quot;/&gt;
&lt;/javac&gt;

&lt;/target&gt;

&lt;target name=&quot;runLogin&quot; depends=&quot;prepare,compile_client&quot; description=&quot;run simple Login client&quot;&gt;
&lt;java classname=&quot;org.client.LoginClient&quot; &gt;
&lt;classpath refid=&quot;axis_client.classpath&quot;/&gt;
&lt;/java&gt;
&lt;/target&gt;

&lt;/project&gt;
</pre></div>

<p>Place the above build.xml file in the 'bin' directory of the
axis2 binary distribution. Then create a build.properties file in
the same directory and specify the axis.home path pointing to the
axis2 binary distribution</p>

<p>E.g. :- axis.home=C://Axis2//axis2-1.1-bin</p>

<p>The above build.xml example also assumes three empty directories
exist, 'dist', 'lib', and 'src'.</p>

<p>Below is a validated WSDL Document following the
Document/Literal Style. The name of this file matches the name used
in the WSDL2Java ant task above, LoginEndpoint.wsdl.</p>

<div>
<pre class="code">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;

    &lt;definitions name=&quot;LoginService&quot; targetNamespace=&quot;http://login&quot; xmlns:tns=&quot;http://login&quot;
    xmlns=&quot;http://schemas.xmlsoap.org/wsdl/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
    xmlns:soap=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot; xmlns:ns2=&quot;http://login/types&quot;&gt;

    &lt;types&gt;
    &lt;schema targetNamespace=&quot;http://login/types&quot; xmlns:tns=&quot;http://login/types&quot;
    xmlns:soap11-enc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;
    xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
    xmlns:wsdl=&quot;http://schemas.xmlsoap.org/wsdl/&quot;
    xmlns=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;
    &lt;import namespace=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;/&gt;
    &lt;element name=&quot;returnWebLoginElement&quot;&gt;
    &lt;complexType&gt;
    &lt;sequence&gt;

    &lt;element ref=&quot;tns:soap_session_idElement&quot;/&gt;
    &lt;element ref=&quot;tns:web_user_nameElement&quot;/&gt;
    &lt;/sequence&gt;
    &lt;/complexType&gt;
    &lt;/element&gt;
    &lt;element name=&quot;webLoginElement&quot;&gt;

    &lt;complexType&gt;
    &lt;sequence&gt;
    &lt;element ref=&quot;tns:user_nameElement&quot;/&gt;
    &lt;element ref=&quot;tns:user_passwordElement&quot;/&gt;
    &lt;/sequence&gt;
    &lt;/complexType&gt;

    &lt;/element&gt;
    &lt;element name=&quot;user_nameElement&quot; type=&quot;xsd:string&quot;/&gt;
    &lt;element name=&quot;user_passwordElement&quot; type=&quot;xsd:string&quot;/&gt;
    &lt;element name=&quot;soap_session_idElement&quot; type=&quot;xsd:string&quot;/&gt;
    &lt;element name=&quot;web_user_nameElement&quot; type=&quot;xsd:string&quot;/&gt;
    &lt;/schema&gt;&lt;/types&gt;

    &lt;message name=&quot;LoginEndpoint_webLogin&quot;&gt;
    &lt;part name=&quot;parameters&quot; element=&quot;ns2:webLoginElement&quot;/&gt;
    &lt;/message&gt;
    &lt;message name=&quot;LoginEndpoint_webLoginResponse&quot;&gt;
    &lt;part name=&quot;result&quot; element=&quot;ns2:returnWebLoginElement&quot;/&gt;
    &lt;/message&gt;

    &lt;portType name=&quot;LoginEndpoint&quot;&gt;
    &lt;operation name=&quot;webLogin&quot;&gt;
    &lt;input message=&quot;tns:LoginEndpoint_webLogin&quot; name=&quot;LoginEndpoint_webLogin&quot;/&gt;
    &lt;output message=&quot;tns:LoginEndpoint_webLoginResponse&quot; name=&quot;LoginEndpoint_webLoginResponse&quot;/&gt;
    &lt;/operation&gt;
    &lt;/portType&gt;

    &lt;binding name=&quot;LoginEndpointBinding&quot; type=&quot;tns:LoginEndpoint&quot;&gt;
    &lt;soap:binding transport=&quot;http://schemas.xmlsoap.org/soap/http&quot; style=&quot;document&quot;/&gt;
    &lt;operation name=&quot;webLogin&quot;&gt;
    &lt;soap:operation soapAction=&quot;webLogin&quot;/&gt;
    &lt;input name=&quot;LoginEndpoint_webLogin&quot;&gt;
    &lt;soap:body use=&quot;literal&quot;/&gt;

    &lt;/input&gt;
    &lt;output name=&quot;LoginEndpoint_webLoginResponse&quot;&gt;
    &lt;soap:body use=&quot;literal&quot;/&gt;
    &lt;/output&gt;
    &lt;/operation&gt;
    &lt;/binding&gt;

    &lt;service name=&quot;LoginService&quot;&gt;
    &lt;port name=&quot;LoginEndpointPort&quot; binding=&quot;tns:LoginEndpointBinding&quot;&gt;
    &lt;soap:address location=&quot;http://localhost:8080/axis2/services/LoginService&quot;/&gt;&lt;/port&gt;
    &lt;/service&gt;&lt;/definitions&gt;
</pre></div>

<p>Place the above file, named LoginEndpoint.wsdl, in the directory
'wsdl' which is also inside the 'bin' directory. Run the wsdl2java
command via the ant task defined above (&gt;ant wsdl2java), and
there will be a directory called 'output' created. This directory
contains the WSDL2Java generated source.</p>

<p>An important detail is that an XMLBean class file is also
generated by WSDL2Java, TypeSystemHolder.class. That file is placed
into build/classes by the above ant task and will be needed to
compile the generated sources. A frequent problem is users get an
error such as:</p>

<p><i><b>ClassNotFoundException : Cannot load SchemaTypeSystem.
Unable to load class with name
schemaorg_apache_xmlbeans.system.s68C41DB812F52C975439BA10FE4FEE54.TypeSystemHolder.
Make sure the generated binary files are on the
classpath.</b></i></p>

<p>The TypeSystemHolder.class generated by WSDL2Java must be placed
in your classpath in order to avoid this error.</p>

<p>The next step is to modify the generated Skeleton Java Source
file - the Web service. This file as generated returns null and
needs to be updated to contain the business logic.</p>

<p>After the WSDL2Java command runs the file LoginEndpoint.wsdl,
edit the following file:</p>

<p>output/src/org/example/types/LoginServiceSkeleton.java. You
should see the following code:</p>

<div>
<pre class="code">
/**
    * LoginServiceSkeleton.java
    *
    * This file was auto-generated from WSDL
    * by the Apache Axis2 version: 1.0-RC4 Apr 28, 2006 (05:23:23 IST)
    */
    package org.example.types;
    /**
    * LoginServiceSkeleton java skeleton for the axisService
    */
    public class LoginServiceSkeleton {


    /**
    * Auto generated method signature

    * @param param0

    */
    public login.types.ReturnWebLoginElementDocument webLogin
    (login.types.WebLoginElementDocument param0 )

    {
    //Todo fill this with the necessary business logic
    throw new java.lang.UnsupportedOperationException();
    }

    }
</pre></div>

<p>Replace the contents of this file with the following, which uses
the complex types generated by WSDL2Java and the example wsdl
file:</p>

<div>
<pre class="code">
/**
    * LoginServiceSkeleton.java
    *
    * This file was auto-generated from WSDL
    * by the Apache Axis2 version: 1.0-RC4 Apr 28, 2006 (05:23:23 IST)
    */
    package org.example.types;
    import login.types.ReturnWebLoginElementDocument;
    import login.types.ReturnWebLoginElementDocument.*;
    import login.types.WebLoginElementDocument;
    import login.types.WebLoginElementDocument.*;

    /**
    * Auto generated java skeleton for the service by the Axis code generator
    */
    public class LoginServiceSkeleton {

    /**
    * Auto generated method signature

    * @param webLoginElementDocument changed from param0

    */
    public ReturnWebLoginElementDocument webLogin
    (WebLoginElementDocument webLoginElementDocument ){

    //Todo fill this with the necessary business logic
    System.out.println(&quot;LoginServiceSkeleton.webLogin reached successfully!&quot;);

    // Get parameters passed in
    WebLoginElement webLoginElement = webLoginElementDocument.getWebLoginElement();
    String userName = webLoginElement.getUserNameElement();
    String password = webLoginElement.getUserPasswordElement();
    System.out.println(&quot;LoginServiceSkeleton.webLogin userName: &quot; + userName);
    System.out.println(&quot;LoginServiceSkeleton.webLogin password: &quot; + password);

    // input paramaters would be used here

    // prepare output
    ReturnWebLoginElementDocument retDoc =
    ReturnWebLoginElementDocument.Factory.newInstance();

    ReturnWebLoginElement retElement = ReturnWebLoginElement.Factory.newInstance();

    retElement.setWebUserNameElement(&quot;joe sixpack&quot;);
    retElement.setSoapSessionIdElement(&quot;some_random_string&quot;);
    System.out.println(&quot;validate retElement: &quot; + retElement.validate());

    retDoc.setReturnWebLoginElement(retElement);
    System.out.println(&quot;validate retDoc: &quot; + retDoc.validate());

    System.out.println(&quot;LoginServiceSkeleton.webLogin returning...&quot;);

    return retDoc;

    }
    }
</pre></div>

<p>The next steps assume the axis2.war has been deployed and has
expanded in a servlet container.</p>

<p>Run the 'jar_wsdl' ant task from the example build.xml (&gt;ant
jar_wsdl), which generates a jar file axis2_example_wsdl.jar in the
'bin/lib' directory. This jar will be used to compile the client,
and also will be placed in the servlet container.</p>

<p>Next, run the 'aar' ant task from the example build.xml (&gt;ant
aar), which generates the deployable axis2 Web service. Place
dist/LoginEndpoint.aar into axis2/WEB-INF/services . Place
lib/axis2_example_wsdl.jar into axis2/WEB-INF/lib . Verify the
happy axis page loaded the services correctly - there should be the
service 'LoginEndpoint' with the available operation 'webLogin'
displayed.</p>

<p>The last step is to create and run the client. In the src
directory create the file org.client.LoginClient.java, with the
contents below:</p>

<div>
<pre class="code">
package org.client;

    import org.apache.axis2.AxisFault;

    import login.types.ReturnWebLoginElementDocument;
    import login.types.ReturnWebLoginElementDocument.*;
    import login.types.WebLoginElementDocument;
    import login.types.WebLoginElementDocument.*;
    import org.example.types.LoginServiceStub;

    /**
    * Login.
    *
    */
    public class LoginClient {

    public static void main(String[] args) {
    try {

    System.out.println(&quot;webLogin, firing...&quot;);
    LoginServiceStub stub = new LoginServiceStub();

    WebLoginElementDocument webLoginElementDocument
    = WebLoginElementDocument.Factory.newInstance();
    WebLoginElement webLoginElement =
    WebLoginElement.Factory.newInstance();
    webLoginElement.setUserNameElement(&quot;joe&quot;);
    webLoginElement.setUserPasswordElement(&quot;sixpack&quot;);

    webLoginElementDocument.setWebLoginElement(webLoginElement);

    System.out.println(&quot;validate: &quot; + webLoginElement.validate());
    stub.webLogin(webLoginElementDocument);

    ReturnWebLoginElementDocument returnWebLoginElementDocument =
    stub.webLogin(webLoginElementDocument);

    System.out.println(&quot;Client returned&quot;);

    ReturnWebLoginElementDocument.ReturnWebLoginElement
    retElement = returnWebLoginElementDocument.getReturnWebLoginElement();

    System.out.println(&quot;WebUserName: &quot; + retElement.getWebUserNameElement());
    System.out.println(&quot;SOAPSessionId: &quot; + retElement.getSoapSessionIdElement());
    System.out.println(&quot;webLogin, completed!!!&quot;);

    } catch (AxisFault axisFault) {
    axisFault.printStackTrace();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    }
</pre></div>

<p>Now run the ant task 'runLogin' (&gt;ant runLogin). The
following output should appear:</p>

<div>
<pre class="code">
runLogin:
    [echo] running the webLogin client
    [java] webLogin, firing...
    [java] validate: true
    [java] Client returned
    [java] WebUserName: joe sixpack
    [java] SOAPSessionId: some_random_string
    [java] webLogin, completed!!!
</pre></div>
<a name="appendix" id="appendix"></a>
</div>
<div class="section">
<h2><a name="Appendix"></a>Appendix</h2>

<ul>

<li>Eclipse reference - <a class="externalLink" href="http://www.eclipse.org/">http://www.eclipse.org/</a></li>

<li>Custom Ant Tasks - <a class="externalLink" href="http://ant.apache.org/manual/develop.html">http://ant.apache.org/manual/develop.html</a></li>
</ul>

</html>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2004&#x2013;2018
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>