You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ch...@apache.org on 2006/11/13 10:11:55 UTC

svn commit: r474200 - /webservices/axis2/branches/java/1_1/xdocs/tools/1_1/CodegenToolReference.html

Author: chatra
Date: Mon Nov 13 01:11:55 2006
New Revision: 474200

URL: http://svn.apache.org/viewvc?view=rev&rev=474200
Log:
making titles consistent

Modified:
    webservices/axis2/branches/java/1_1/xdocs/tools/1_1/CodegenToolReference.html

Modified: webservices/axis2/branches/java/1_1/xdocs/tools/1_1/CodegenToolReference.html
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/xdocs/tools/1_1/CodegenToolReference.html?view=diff&rev=474200&r1=474199&r2=474200
==============================================================================
--- webservices/axis2/branches/java/1_1/xdocs/tools/1_1/CodegenToolReference.html (original)
+++ webservices/axis2/branches/java/1_1/xdocs/tools/1_1/CodegenToolReference.html Mon Nov 13 01:11:55 2006
@@ -1,878 +1,878 @@
-<html>
-<head>
-    <meta http-equiv="content-type" content="">
-    <title>Code Generator Tool- Command Line and Ant Task</title>
-    <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
-</head>
-
-<body lang="en">
-<h1>Code Generator Tool - 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="http://ws.apache.org/axis2/download.cgi">Axis2 Binary
-    Distribution</a>.</p>
-
-<h2>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"></a>
-
-<h2>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 binary distribution)</p>
-<a name="cmdline"></a>
-
-<h2>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"></a>
-
-<h3>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="1" cellpadding="0" cellspacing="0"
-       style="border-collapse: collapse" width="100%" id="AutoNumber1">
-<tbody>
-<tr>
-    <td width="20%"><strong>Short Option</strong></td>
-    <td width="20%"><strong>Long Option</strong></td>
-    <td width="60%"><strong>Description</strong></td>
-    <td></td>
-</tr>
-<tr>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-</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"></a>
-
-<h2>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"></a>
-
-<h3>Ant Task Reference</h3>
-
-<table border="1" cellpadding="0" cellspacing="0"
-       style="border-collapse: collapse" width="100%" id="AutoNumber2">
-<tbody>
-<tr>
-    <td>wsdlfilename</td>
-    <td>WSDL file location. Maps to the -uri option of the command line
-        tool.</td>
-</tr>
-<tr>
-    <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>
-    <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>
-    <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>
-    <td>databindingName</td>
-    <td>Data binding framework name. Maps to the -d
-        option of the command line tool. Possible values include "adb", "xmlbeans", "jibx".</td>
-</tr>
-<tr>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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>
-    <td>namespaceToPackages</td>
-    <td>A list of namespace to package mappings.</td>
-</tr>
-<tr>
-    <td>serverSideInterface</td>
-    <td>Flag stating whether to generate an interface for the server side
-        skeleton.</td>
-</tr>
-<tr>
-    <td>repositoryPath</td>
-    <td>Sets the repository path to be used. Maps to the -r option of
-        the command line tool. </td>
-</tr>
-<tr>
-    <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>
-    <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>
-    <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>
-    <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>
-    <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"></a>
-
-<h3>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 "CombinedService.wsdl"
-    with the name of your wsdl file in the following script.</p>
-<pre>1 &lt;?xml version="1.0"?&gt;
-    2 &lt;project name="CodegenExample" default="main" basedir="."&gt;
-    3
-    4 &lt;path id="example.classpath"&gt;
-    5 &lt;fileset dir="classes"&gt;
-    6 &lt;include name="**/*.jar" /&gt;
-    7 &lt;/fileset&gt;
-    8 &lt;/path&gt;
-    9
-    10 &lt;target name="declare" &gt;
-    11 &lt;taskdef name="codegen"
-    12 classname="org.apache.axis2.tool.ant.AntCodegenTask"
-    13 classpathref="example.classpath"/&gt;
-    15 &lt;/target&gt;
-    16
-    17 &lt;target name="main" depends="declare"&gt;
-    18 &lt;codegen
-    19 wsdlfilename="C:\test\wsdl\CombinedService.wsdl"
-    20 output="C:\output"
-    21 serverside="true"
-    22 generateservicexml="true"/&gt;
-    23 &lt;/target&gt;
-    24
-    25 &lt;/project&gt;</pre>
-
-<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 "codegen" 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 "main" 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 "codegen" 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>axis-*.jar (from the Axis2 distribution)</li>
-    <li>wsdl4j-1.5.1.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-1.1.jar and XmlSchema-1.1.jar (from the
-        Axis2 distribution)</li>
-    <li>axiom-api-1.1.1.jar and axiom-impl-1.1.1.jar (from the Axis2
-        distribution)</li>
-    <li>activation-1.1.jar (from the Axis2 distribution)</li>
-    <li>astx-asl0-3.0.1.jar (from the Axis2 distribution)</li>
-</ul>
-<a name="invoking"></a>
-
-<h3>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>
-<pre class="code">&lt;!DOCTYPE project&gt;
-
-&lt;project name="wsdl2java-example" default="usage" basedir="."&gt;
-
-&lt;property name="project-name" value="wsdl2java-example"/&gt;
-&lt;property file="build.properties"/&gt;
-
-&lt;property name="build" value="build"/&gt;
-&lt;property name="src" value="src"/&gt;
-&lt;property name="build.classes" value="build/classes" /&gt;
-
-&lt;path id="axis.classpath"&gt;
-&lt;pathelement location="build/classes" /&gt;
-&lt;fileset dir="${axis.home}/lib"&gt;
-&lt;include name="**/*.jar" /&gt;
-&lt;/fileset&gt;
-&lt;pathelement location="${build.classes}" /&gt;
-&lt;/path&gt;
-
-&lt;path id="axis_client.classpath"&gt;
-&lt;pathelement location="build/classes" /&gt;
-&lt;fileset dir="${axis.home}"&gt;
-&lt;include name="**/*.jar" /&gt;
-&lt;/fileset&gt;
-&lt;fileset dir="lib"&gt;
-&lt;include name="*.jar" /&gt;
-&lt;/fileset&gt;
-&lt;pathelement location="${build.classes}" /&gt;
-&lt;/path&gt;
-
-&lt;target name="usage" description="Build file usage info (default task)"&gt;
-&lt;echo message=" " /&gt;
-&lt;echo message="${project-name} " /&gt;
-&lt;echo message="-------------------------------------------------------" /&gt;
-&lt;echo message=" " /&gt;
-&lt;echo message="Available Targets:" /&gt;
-&lt;echo message=" " /&gt;
-&lt;echo message=" Compiling:" /&gt;
-&lt;echo message=" compile - Compiles the WSDL2Java source code" /&gt;
-&lt;echo message=" " /&gt;
-&lt;echo message=" Compiling client:" /&gt;
-&lt;echo message=" compile_client - Compiles the client source code" /&gt;
-&lt;echo message=" " /&gt;
-&lt;echo message=" Cleaning up:" /&gt;
-&lt;echo message=" clean - Delete class files" /&gt;
-&lt;echo message=" " /&gt;
-&lt;echo message=" WSDL:" /&gt;
-&lt;echo message=" wsdl2java - Generate source from WSDL" /&gt;
-&lt;echo message=" " /&gt;
-&lt;echo message=" AAR:" /&gt;
-&lt;echo message=" aar - Generate an .aar for deployment into WEB-INF/services" /&gt;
-&lt;echo message=" " /&gt;
-&lt;echo message=" Executing:" /&gt;
-&lt;echo message=" runLogin - Execute the runLogin client" /&gt;
-&lt;/target&gt;
-
-&lt;target name="prepare" &gt;
-&lt;mkdir dir="${build.classes}" /&gt;
-&lt;/target&gt;
-
-&lt;target name="clean" &gt;
-&lt;delete dir="${build}" /&gt;
-&lt;delete dir="${dist}" /&gt;
-&lt;/target&gt;
-
-&lt;target name="compile"&gt;
-&lt;echo message="Compiling wsdl2 files"/&gt;
-
-&lt;javac
-srcdir="output"
-destdir="${build.classes}"
-deprecation="true"
-failonerror="true" debug="true"&gt;
-
-&lt;classpath refid="axis.classpath"/&gt;
-&lt;/javac&gt;
-
-&lt;/target&gt;
-
-&lt;target name="wsdl2java" depends="clean,prepare"&gt;
-&lt;delete dir="output" /&gt;
-&lt;java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true"&gt;
-&lt;classpath refid="axis.classpath"/&gt;
-&lt;arg value="-d"/&gt;
-&lt;arg value="xmlbeans"/&gt;
-&lt;arg value="-uri"/&gt;
-&lt;arg file="wsdl/LoginEndpoint.wsdl"/&gt;
-&lt;arg value="-ss"/&gt;
-&lt;arg value="-g"/&gt;
-&lt;arg value="-sd"/&gt;
-&lt;arg value="-o"/&gt;
-&lt;arg file="output"/&gt;
-&lt;arg value="-p"/&gt;
-&lt;arg value="org.example.types"/&gt;
-&lt;/java&gt;
-
-&lt;!-- Move the schema folder to classpath--&gt;
-&lt;move todir="${build.classes}"&gt;
-&lt;fileset dir="output/resources"&gt;
-&lt;include name="**/*schema*/**/*.class"/&gt;
-&lt;include name="**/*schema*/**/*.xsb"/&gt;
-&lt;/fileset&gt;
-&lt;/move&gt;
-
-&lt;/target&gt;
-
-&lt;target name="jar_wsdl" depends="compile"&gt;
-&lt;jar jarfile="lib/axis2_example_wsdl.jar" &gt;
-&lt;fileset dir="${build.classes}" /&gt;
-&lt;/jar&gt;
-&lt;/target&gt;
-
-&lt;!-- build an .aar file for axis2 web services --&gt;
-&lt;target name="aar" depends="compile"&gt;
-&lt;delete dir="${build.classes}/META-INF" /&gt;
-&lt;mkdir dir="${build.classes}/META-INF" /&gt;
-&lt;copy todir="${build.classes}/META-INF" &gt;
-&lt;fileset dir="output/resources" &gt;
-&lt;!-- axis2 web services definitions file --&gt;
-&lt;include name="services.xml"/&gt;
-&lt;/fileset&gt;
-&lt;fileset dir="wsdl" &gt;
-&lt;include name="LoginEndpoint.wsdl"/&gt;
-&lt;/fileset&gt;
-&lt;/copy&gt;
-&lt;jar jarfile="dist/LoginEndpoint.aar" &gt;
-&lt;fileset dir="${build.classes}" /&gt;
-&lt;/jar&gt;
-&lt;/target&gt;
-
-&lt;target name="compile_client"&gt;
-&lt;echo message="Compiling client files"/&gt;
-
-&lt;javac
-srcdir="src"
-destdir="${build.classes}"
-deprecation="true"
-failonerror="true" debug="true"&gt;
-
-&lt;classpath refid="axis.classpath"/&gt;
-&lt;/javac&gt;
-
-&lt;/target&gt;
-
-&lt;target name="runLogin" depends="prepare,compile_client" description="run simple Login client"&gt;
-&lt;java classname="org.client.LoginClient" &gt;
-&lt;classpath refid="axis_client.classpath"/&gt;
-&lt;/java&gt;
-&lt;/target&gt;
-
-&lt;/project&gt;</pre>
-
-<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>
-<pre class="code">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-
-    &lt;definitions name="LoginService" targetNamespace="http://login" xmlns:tns="http://login"
-    xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://login/types"&gt;
-
-    &lt;types&gt;
-    &lt;schema targetNamespace="http://login/types" xmlns:tns="http://login/types"
-    xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
-    xmlns="http://www.w3.org/2001/XMLSchema"&gt;
-    &lt;import namespace="http://schemas.xmlsoap.org/soap/encoding/"/&gt;
-    &lt;element name="returnWebLoginElement"&gt;
-    &lt;complexType&gt;
-    &lt;sequence&gt;
-
-    &lt;element ref="tns:soap_session_idElement"/&gt;
-    &lt;element ref="tns:web_user_nameElement"/&gt;
-    &lt;/sequence&gt;
-    &lt;/complexType&gt;
-    &lt;/element&gt;
-    &lt;element name="webLoginElement"&gt;
-
-    &lt;complexType&gt;
-    &lt;sequence&gt;
-    &lt;element ref="tns:user_nameElement"/&gt;
-    &lt;element ref="tns:user_passwordElement"/&gt;
-    &lt;/sequence&gt;
-    &lt;/complexType&gt;
-
-    &lt;/element&gt;
-    &lt;element name="user_nameElement" type="xsd:string"/&gt;
-    &lt;element name="user_passwordElement" type="xsd:string"/&gt;
-    &lt;element name="soap_session_idElement" type="xsd:string"/&gt;
-    &lt;element name="web_user_nameElement" type="xsd:string"/&gt;
-    &lt;/schema&gt;&lt;/types&gt;
-
-    &lt;message name="LoginEndpoint_webLogin"&gt;
-    &lt;part name="parameters" element="ns2:webLoginElement"/&gt;
-    &lt;/message&gt;
-    &lt;message name="LoginEndpoint_webLoginResponse"&gt;
-    &lt;part name="result" element="ns2:returnWebLoginElement"/&gt;
-    &lt;/message&gt;
-
-    &lt;portType name="LoginEndpoint"&gt;
-    &lt;operation name="webLogin"&gt;
-    &lt;input message="tns:LoginEndpoint_webLogin" name="LoginEndpoint_webLogin"/&gt;
-    &lt;output message="tns:LoginEndpoint_webLoginResponse" name="LoginEndpoint_webLoginResponse"/&gt;
-    &lt;/operation&gt;
-    &lt;/portType&gt;
-
-    &lt;binding name="LoginEndpointBinding" type="tns:LoginEndpoint"&gt;
-    &lt;soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/&gt;
-    &lt;operation name="webLogin"&gt;
-    &lt;soap:operation soapAction="webLogin"/&gt;
-    &lt;input name="LoginEndpoint_webLogin"&gt;
-    &lt;soap:body use="literal"/&gt;
-
-    &lt;/input&gt;
-    &lt;output name="LoginEndpoint_webLoginResponse"&gt;
-    &lt;soap:body use="literal"/&gt;
-    &lt;/output&gt;
-    &lt;/operation&gt;
-    &lt;/binding&gt;
-
-    &lt;service name="LoginService"&gt;
-    &lt;port name="LoginEndpointPort" binding="tns:LoginEndpointBinding"&gt;
-    &lt;soap:address location="http://localhost:8080/axis2/services/LoginService"/&gt;&lt;/port&gt;
-    &lt;/service&gt;&lt;/definitions&gt;</pre>
-
-<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><em><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></em></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>
-<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>
-
-<p>Replace the contents of this file with the following, which uses the
-    complex types generated by WSDL2Java and the example wsdl file:</p>
-<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("LoginServiceSkeleton.webLogin reached successfully!");
-
-    // Get parameters passed in
-    WebLoginElement webLoginElement = webLoginElementDocument.getWebLoginElement();
-    String userName = webLoginElement.getUserNameElement();
-    String password = webLoginElement.getUserPasswordElement();
-    System.out.println("LoginServiceSkeleton.webLogin userName: " + userName);
-    System.out.println("LoginServiceSkeleton.webLogin password: " + password);
-
-    // input paramaters would be used here
-
-    // prepare output
-    ReturnWebLoginElementDocument retDoc =
-    ReturnWebLoginElementDocument.Factory.newInstance();
-
-    ReturnWebLoginElement retElement = ReturnWebLoginElement.Factory.newInstance();
-
-    retElement.setWebUserNameElement("joe sixpack");
-    retElement.setSoapSessionIdElement("some_random_string");
-    System.out.println("validate retElement: " + retElement.validate());
-
-    retDoc.setReturnWebLoginElement(retElement);
-    System.out.println("validate retDoc: " + retDoc.validate());
-
-    System.out.println("LoginServiceSkeleton.webLogin returning...");
-
-    return retDoc;
-
-    }
-    }</pre>
-
-<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>
-<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("webLogin, firing...");
-    LoginServiceStub stub = new LoginServiceStub();
-
-    WebLoginElementDocument webLoginElementDocument
-    = WebLoginElementDocument.Factory.newInstance();
-    WebLoginElement webLoginElement =
-    WebLoginElement.Factory.newInstance();
-    webLoginElement.setUserNameElement("joe");
-    webLoginElement.setUserPasswordElement("sixpack");
-
-    webLoginElementDocument.setWebLoginElement(webLoginElement);
-
-    System.out.println("validate: " + webLoginElement.validate());
-    stub.webLogin(webLoginElementDocument);
-
-    ReturnWebLoginElementDocument returnWebLoginElementDocument =
-    stub.webLogin(webLoginElementDocument);
-
-    System.out.println("Client returned");
-
-    ReturnWebLoginElementDocument.ReturnWebLoginElement
-    retElement = returnWebLoginElementDocument.getReturnWebLoginElement();
-
-    System.out.println("WebUserName: " + retElement.getWebUserNameElement());
-    System.out.println("SOAPSessionId: " + retElement.getSoapSessionIdElement());
-    System.out.println("webLogin, completed!!!");
-
-    } catch (AxisFault axisFault) {
-    axisFault.printStackTrace();
-    } catch (Exception ex) {
-    ex.printStackTrace();
-    }
-    }
-    }</pre>
-
-<p>Now run the ant task 'runLogin' (&gt;ant runLogin). The following output
-    should appear:</p>
-<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>
-<a name="appendix"></a>
-
-<h2>Appendix</h2>
-<ul>
-    <li>Eclipse reference - <a href="http://www.eclipse.org/">
-        http://www.eclipse.org/</a></li>
-    <li>Custom Ant Tasks - <a href="http://ant.apache.org/manual/develop.html">
-        http://ant.apache.org/manual/develop.html</a></li>
-</ul>
-
-<p></p>
-
-<p></p>
-
-<p></p>
-
-<p></p>
-
-<p></p>
-</body>
-</html>
+<html>
+<head>
+    <meta http-equiv="content-type" content="">
+    <title>Code Generator Tool Guide for Command Line and Ant Task</title>
+    <link href="../../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
+</head>
+
+<body lang="en">
+<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="http://ws.apache.org/axis2/download.cgi">Axis2 Binary
+    Distribution</a>.</p>
+
+<h2>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"></a>
+
+<h2>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 binary distribution)</p>
+<a name="cmdline"></a>
+
+<h2>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"></a>
+
+<h3>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="1" cellpadding="0" cellspacing="0"
+       style="border-collapse: collapse" width="100%" id="AutoNumber1">
+<tbody>
+<tr>
+    <td width="20%"><strong>Short Option</strong></td>
+    <td width="20%"><strong>Long Option</strong></td>
+    <td width="60%"><strong>Description</strong></td>
+    <td></td>
+</tr>
+<tr>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+</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"></a>
+
+<h2>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"></a>
+
+<h3>Ant Task Reference</h3>
+
+<table border="1" cellpadding="0" cellspacing="0"
+       style="border-collapse: collapse" width="100%" id="AutoNumber2">
+<tbody>
+<tr>
+    <td>wsdlfilename</td>
+    <td>WSDL file location. Maps to the -uri option of the command line
+        tool.</td>
+</tr>
+<tr>
+    <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>
+    <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>
+    <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>
+    <td>databindingName</td>
+    <td>Data binding framework name. Maps to the -d
+        option of the command line tool. Possible values include "adb", "xmlbeans", "jibx".</td>
+</tr>
+<tr>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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>
+    <td>namespaceToPackages</td>
+    <td>A list of namespace to package mappings.</td>
+</tr>
+<tr>
+    <td>serverSideInterface</td>
+    <td>Flag stating whether to generate an interface for the server side
+        skeleton.</td>
+</tr>
+<tr>
+    <td>repositoryPath</td>
+    <td>Sets the repository path to be used. Maps to the -r option of
+        the command line tool. </td>
+</tr>
+<tr>
+    <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>
+    <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>
+    <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>
+    <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>
+    <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"></a>
+
+<h3>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 "CombinedService.wsdl"
+    with the name of your wsdl file in the following script.</p>
+<pre>1 &lt;?xml version="1.0"?&gt;
+    2 &lt;project name="CodegenExample" default="main" basedir="."&gt;
+    3
+    4 &lt;path id="example.classpath"&gt;
+    5 &lt;fileset dir="classes"&gt;
+    6 &lt;include name="**/*.jar" /&gt;
+    7 &lt;/fileset&gt;
+    8 &lt;/path&gt;
+    9
+    10 &lt;target name="declare" &gt;
+    11 &lt;taskdef name="codegen"
+    12 classname="org.apache.axis2.tool.ant.AntCodegenTask"
+    13 classpathref="example.classpath"/&gt;
+    15 &lt;/target&gt;
+    16
+    17 &lt;target name="main" depends="declare"&gt;
+    18 &lt;codegen
+    19 wsdlfilename="C:\test\wsdl\CombinedService.wsdl"
+    20 output="C:\output"
+    21 serverside="true"
+    22 generateservicexml="true"/&gt;
+    23 &lt;/target&gt;
+    24
+    25 &lt;/project&gt;</pre>
+
+<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 "codegen" 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 "main" 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 "codegen" 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>axis-*.jar (from the Axis2 distribution)</li>
+    <li>wsdl4j-1.5.1.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-1.1.jar and XmlSchema-1.1.jar (from the
+        Axis2 distribution)</li>
+    <li>axiom-api-1.1.1.jar and axiom-impl-1.1.1.jar (from the Axis2
+        distribution)</li>
+    <li>activation-1.1.jar (from the Axis2 distribution)</li>
+    <li>astx-asl0-3.0.1.jar (from the Axis2 distribution)</li>
+</ul>
+<a name="invoking"></a>
+
+<h3>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>
+<pre class="code">&lt;!DOCTYPE project&gt;
+
+&lt;project name="wsdl2java-example" default="usage" basedir="."&gt;
+
+&lt;property name="project-name" value="wsdl2java-example"/&gt;
+&lt;property file="build.properties"/&gt;
+
+&lt;property name="build" value="build"/&gt;
+&lt;property name="src" value="src"/&gt;
+&lt;property name="build.classes" value="build/classes" /&gt;
+
+&lt;path id="axis.classpath"&gt;
+&lt;pathelement location="build/classes" /&gt;
+&lt;fileset dir="${axis.home}/lib"&gt;
+&lt;include name="**/*.jar" /&gt;
+&lt;/fileset&gt;
+&lt;pathelement location="${build.classes}" /&gt;
+&lt;/path&gt;
+
+&lt;path id="axis_client.classpath"&gt;
+&lt;pathelement location="build/classes" /&gt;
+&lt;fileset dir="${axis.home}"&gt;
+&lt;include name="**/*.jar" /&gt;
+&lt;/fileset&gt;
+&lt;fileset dir="lib"&gt;
+&lt;include name="*.jar" /&gt;
+&lt;/fileset&gt;
+&lt;pathelement location="${build.classes}" /&gt;
+&lt;/path&gt;
+
+&lt;target name="usage" description="Build file usage info (default task)"&gt;
+&lt;echo message=" " /&gt;
+&lt;echo message="${project-name} " /&gt;
+&lt;echo message="-------------------------------------------------------" /&gt;
+&lt;echo message=" " /&gt;
+&lt;echo message="Available Targets:" /&gt;
+&lt;echo message=" " /&gt;
+&lt;echo message=" Compiling:" /&gt;
+&lt;echo message=" compile - Compiles the WSDL2Java source code" /&gt;
+&lt;echo message=" " /&gt;
+&lt;echo message=" Compiling client:" /&gt;
+&lt;echo message=" compile_client - Compiles the client source code" /&gt;
+&lt;echo message=" " /&gt;
+&lt;echo message=" Cleaning up:" /&gt;
+&lt;echo message=" clean - Delete class files" /&gt;
+&lt;echo message=" " /&gt;
+&lt;echo message=" WSDL:" /&gt;
+&lt;echo message=" wsdl2java - Generate source from WSDL" /&gt;
+&lt;echo message=" " /&gt;
+&lt;echo message=" AAR:" /&gt;
+&lt;echo message=" aar - Generate an .aar for deployment into WEB-INF/services" /&gt;
+&lt;echo message=" " /&gt;
+&lt;echo message=" Executing:" /&gt;
+&lt;echo message=" runLogin - Execute the runLogin client" /&gt;
+&lt;/target&gt;
+
+&lt;target name="prepare" &gt;
+&lt;mkdir dir="${build.classes}" /&gt;
+&lt;/target&gt;
+
+&lt;target name="clean" &gt;
+&lt;delete dir="${build}" /&gt;
+&lt;delete dir="${dist}" /&gt;
+&lt;/target&gt;
+
+&lt;target name="compile"&gt;
+&lt;echo message="Compiling wsdl2 files"/&gt;
+
+&lt;javac
+srcdir="output"
+destdir="${build.classes}"
+deprecation="true"
+failonerror="true" debug="true"&gt;
+
+&lt;classpath refid="axis.classpath"/&gt;
+&lt;/javac&gt;
+
+&lt;/target&gt;
+
+&lt;target name="wsdl2java" depends="clean,prepare"&gt;
+&lt;delete dir="output" /&gt;
+&lt;java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true"&gt;
+&lt;classpath refid="axis.classpath"/&gt;
+&lt;arg value="-d"/&gt;
+&lt;arg value="xmlbeans"/&gt;
+&lt;arg value="-uri"/&gt;
+&lt;arg file="wsdl/LoginEndpoint.wsdl"/&gt;
+&lt;arg value="-ss"/&gt;
+&lt;arg value="-g"/&gt;
+&lt;arg value="-sd"/&gt;
+&lt;arg value="-o"/&gt;
+&lt;arg file="output"/&gt;
+&lt;arg value="-p"/&gt;
+&lt;arg value="org.example.types"/&gt;
+&lt;/java&gt;
+
+&lt;!-- Move the schema folder to classpath--&gt;
+&lt;move todir="${build.classes}"&gt;
+&lt;fileset dir="output/resources"&gt;
+&lt;include name="**/*schema*/**/*.class"/&gt;
+&lt;include name="**/*schema*/**/*.xsb"/&gt;
+&lt;/fileset&gt;
+&lt;/move&gt;
+
+&lt;/target&gt;
+
+&lt;target name="jar_wsdl" depends="compile"&gt;
+&lt;jar jarfile="lib/axis2_example_wsdl.jar" &gt;
+&lt;fileset dir="${build.classes}" /&gt;
+&lt;/jar&gt;
+&lt;/target&gt;
+
+&lt;!-- build an .aar file for axis2 web services --&gt;
+&lt;target name="aar" depends="compile"&gt;
+&lt;delete dir="${build.classes}/META-INF" /&gt;
+&lt;mkdir dir="${build.classes}/META-INF" /&gt;
+&lt;copy todir="${build.classes}/META-INF" &gt;
+&lt;fileset dir="output/resources" &gt;
+&lt;!-- axis2 web services definitions file --&gt;
+&lt;include name="services.xml"/&gt;
+&lt;/fileset&gt;
+&lt;fileset dir="wsdl" &gt;
+&lt;include name="LoginEndpoint.wsdl"/&gt;
+&lt;/fileset&gt;
+&lt;/copy&gt;
+&lt;jar jarfile="dist/LoginEndpoint.aar" &gt;
+&lt;fileset dir="${build.classes}" /&gt;
+&lt;/jar&gt;
+&lt;/target&gt;
+
+&lt;target name="compile_client"&gt;
+&lt;echo message="Compiling client files"/&gt;
+
+&lt;javac
+srcdir="src"
+destdir="${build.classes}"
+deprecation="true"
+failonerror="true" debug="true"&gt;
+
+&lt;classpath refid="axis.classpath"/&gt;
+&lt;/javac&gt;
+
+&lt;/target&gt;
+
+&lt;target name="runLogin" depends="prepare,compile_client" description="run simple Login client"&gt;
+&lt;java classname="org.client.LoginClient" &gt;
+&lt;classpath refid="axis_client.classpath"/&gt;
+&lt;/java&gt;
+&lt;/target&gt;
+
+&lt;/project&gt;</pre>
+
+<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>
+<pre class="code">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+    &lt;definitions name="LoginService" targetNamespace="http://login" xmlns:tns="http://login"
+    xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://login/types"&gt;
+
+    &lt;types&gt;
+    &lt;schema targetNamespace="http://login/types" xmlns:tns="http://login/types"
+    xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns="http://www.w3.org/2001/XMLSchema"&gt;
+    &lt;import namespace="http://schemas.xmlsoap.org/soap/encoding/"/&gt;
+    &lt;element name="returnWebLoginElement"&gt;
+    &lt;complexType&gt;
+    &lt;sequence&gt;
+
+    &lt;element ref="tns:soap_session_idElement"/&gt;
+    &lt;element ref="tns:web_user_nameElement"/&gt;
+    &lt;/sequence&gt;
+    &lt;/complexType&gt;
+    &lt;/element&gt;
+    &lt;element name="webLoginElement"&gt;
+
+    &lt;complexType&gt;
+    &lt;sequence&gt;
+    &lt;element ref="tns:user_nameElement"/&gt;
+    &lt;element ref="tns:user_passwordElement"/&gt;
+    &lt;/sequence&gt;
+    &lt;/complexType&gt;
+
+    &lt;/element&gt;
+    &lt;element name="user_nameElement" type="xsd:string"/&gt;
+    &lt;element name="user_passwordElement" type="xsd:string"/&gt;
+    &lt;element name="soap_session_idElement" type="xsd:string"/&gt;
+    &lt;element name="web_user_nameElement" type="xsd:string"/&gt;
+    &lt;/schema&gt;&lt;/types&gt;
+
+    &lt;message name="LoginEndpoint_webLogin"&gt;
+    &lt;part name="parameters" element="ns2:webLoginElement"/&gt;
+    &lt;/message&gt;
+    &lt;message name="LoginEndpoint_webLoginResponse"&gt;
+    &lt;part name="result" element="ns2:returnWebLoginElement"/&gt;
+    &lt;/message&gt;
+
+    &lt;portType name="LoginEndpoint"&gt;
+    &lt;operation name="webLogin"&gt;
+    &lt;input message="tns:LoginEndpoint_webLogin" name="LoginEndpoint_webLogin"/&gt;
+    &lt;output message="tns:LoginEndpoint_webLoginResponse" name="LoginEndpoint_webLoginResponse"/&gt;
+    &lt;/operation&gt;
+    &lt;/portType&gt;
+
+    &lt;binding name="LoginEndpointBinding" type="tns:LoginEndpoint"&gt;
+    &lt;soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/&gt;
+    &lt;operation name="webLogin"&gt;
+    &lt;soap:operation soapAction="webLogin"/&gt;
+    &lt;input name="LoginEndpoint_webLogin"&gt;
+    &lt;soap:body use="literal"/&gt;
+
+    &lt;/input&gt;
+    &lt;output name="LoginEndpoint_webLoginResponse"&gt;
+    &lt;soap:body use="literal"/&gt;
+    &lt;/output&gt;
+    &lt;/operation&gt;
+    &lt;/binding&gt;
+
+    &lt;service name="LoginService"&gt;
+    &lt;port name="LoginEndpointPort" binding="tns:LoginEndpointBinding"&gt;
+    &lt;soap:address location="http://localhost:8080/axis2/services/LoginService"/&gt;&lt;/port&gt;
+    &lt;/service&gt;&lt;/definitions&gt;</pre>
+
+<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><em><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></em></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>
+<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>
+
+<p>Replace the contents of this file with the following, which uses the
+    complex types generated by WSDL2Java and the example wsdl file:</p>
+<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("LoginServiceSkeleton.webLogin reached successfully!");
+
+    // Get parameters passed in
+    WebLoginElement webLoginElement = webLoginElementDocument.getWebLoginElement();
+    String userName = webLoginElement.getUserNameElement();
+    String password = webLoginElement.getUserPasswordElement();
+    System.out.println("LoginServiceSkeleton.webLogin userName: " + userName);
+    System.out.println("LoginServiceSkeleton.webLogin password: " + password);
+
+    // input paramaters would be used here
+
+    // prepare output
+    ReturnWebLoginElementDocument retDoc =
+    ReturnWebLoginElementDocument.Factory.newInstance();
+
+    ReturnWebLoginElement retElement = ReturnWebLoginElement.Factory.newInstance();
+
+    retElement.setWebUserNameElement("joe sixpack");
+    retElement.setSoapSessionIdElement("some_random_string");
+    System.out.println("validate retElement: " + retElement.validate());
+
+    retDoc.setReturnWebLoginElement(retElement);
+    System.out.println("validate retDoc: " + retDoc.validate());
+
+    System.out.println("LoginServiceSkeleton.webLogin returning...");
+
+    return retDoc;
+
+    }
+    }</pre>
+
+<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>
+<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("webLogin, firing...");
+    LoginServiceStub stub = new LoginServiceStub();
+
+    WebLoginElementDocument webLoginElementDocument
+    = WebLoginElementDocument.Factory.newInstance();
+    WebLoginElement webLoginElement =
+    WebLoginElement.Factory.newInstance();
+    webLoginElement.setUserNameElement("joe");
+    webLoginElement.setUserPasswordElement("sixpack");
+
+    webLoginElementDocument.setWebLoginElement(webLoginElement);
+
+    System.out.println("validate: " + webLoginElement.validate());
+    stub.webLogin(webLoginElementDocument);
+
+    ReturnWebLoginElementDocument returnWebLoginElementDocument =
+    stub.webLogin(webLoginElementDocument);
+
+    System.out.println("Client returned");
+
+    ReturnWebLoginElementDocument.ReturnWebLoginElement
+    retElement = returnWebLoginElementDocument.getReturnWebLoginElement();
+
+    System.out.println("WebUserName: " + retElement.getWebUserNameElement());
+    System.out.println("SOAPSessionId: " + retElement.getSoapSessionIdElement());
+    System.out.println("webLogin, completed!!!");
+
+    } catch (AxisFault axisFault) {
+    axisFault.printStackTrace();
+    } catch (Exception ex) {
+    ex.printStackTrace();
+    }
+    }
+    }</pre>
+
+<p>Now run the ant task 'runLogin' (&gt;ant runLogin). The following output
+    should appear:</p>
+<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>
+<a name="appendix"></a>
+
+<h2>Appendix</h2>
+<ul>
+    <li>Eclipse reference - <a href="http://www.eclipse.org/">
+        http://www.eclipse.org/</a></li>
+    <li>Custom Ant Tasks - <a href="http://ant.apache.org/manual/develop.html">
+        http://ant.apache.org/manual/develop.html</a></li>
+</ul>
+
+<p></p>
+
+<p></p>
+
+<p></p>
+
+<p></p>
+
+<p></p>
+</body>
+</html>



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