<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 at 2022-07-14 
 | 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="20220714" />
    <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: 2022-07-14<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.8.2<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>
    <li><a href="../release-notes/1.8.0.html" title="1.8.0"><span class="none"></span>1.8.0</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="../git.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>
<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>
<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>
<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>
<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%" align="left"><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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left">-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%" align="left"></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%" align="left"></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%" align="left"></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>
</section><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>
<section>
<h3><a name="Ant_Task_Reference"></a>Ant Task Reference</h3>

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

<tr class="a">

<td align="left">wsdlfilename</td>

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

<tr class="b">

<td align="left">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 align="left">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 align="left">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 align="left">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;,&quot;jaxbri&quot;.</td>
</tr>

<tr class="b">

<td align="left">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 align="left">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 align="left">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 align="left">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 align="left">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 align="left">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 align="left">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 align="left">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 align="left">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 align="left">namespaceToPackages</td>

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

<tr class="b">

<td align="left">serverSideInterface</td>

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

<tr class="a">

<td align="left">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 align="left">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 align="left">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 align="left">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 align="left">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 align="left">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>
</section><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><code>&gt;ant</code> or <code>&gt;ant main</code></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>
</section><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>
</section><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;2022
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>