<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" />
<meta http-equiv="content-type" content="" />
<title>Axis2 Reference Guide</title>
<link href="../css/axis-docs.css" rel="stylesheet" type="text/css"
media="all" />
</head>
<body lang="en-US" dir="ltr" xml:lang="en-US">
<a name="_Toc96697849" id="_Toc96697849"></a>
<h1 align="center">Axis2 Reference Guide</h1>
<a name="wsdl2code" id="wsdl2code"></a>
<h2>WSDL2Java Reference</h2>
<pre>
NAME
       wsdl2java.sh or wsdl2java.bat - Generates java code according to a given WSDL file to handle Web service invocation.
       These scripts can be found under the bin directory of the Axis2 distribution.

SYNOPSIS
       wsdl2java.sh [OPTION]... -uri &lt;Location of WSDL&gt;

DESCRIPTION
       Given a WSDL file, this generates java code to handle Web service invocations.

      -o &lt;path&gt;          Specify a directory path for the generated code.
      -a                       Generate async style code only (Default: off).
      -s                       Generate sync style code only (Default: off). Takes precedence over -a.
      -p &lt;pkg1&gt;          Specify a custom package name for the generated code.
      -l &lt;language&gt;      Valid languages are java and c (Default: java).
      -t                       Generate a test case for the generated code.
      -ss                      Generate server side code (i.e. skeletons) (Default: off).
      -sd                      Generate service descriptor (i.e. services.xml). (Default: off). Valid with -ss.
      -d &lt;databinding&gt;   Valid databinding(s) are adb, xmlbeans, jibx and jaxbri (Default: adb).
      -g                       Generates all the classes. Valid only with -ss.
      -pn &lt;port_name&gt;    Choose a specific port when there are multiple ports in the wsdl.
      -sn &lt;service_name&gt; Choose a specific service when there are multiple services in the wsdl.
      -u                       Unpacks the databinding classes
      -r &lt;path&gt;          Specify a repository against which code is generated.
      -ns2p ns1=pkg1,ns2=pkg2  Specify a custom package name for each namespace specified in the wsdls schema.
      -ssi                     Generate an interface for the service implementation (Default: off).
      -wv &lt;version&gt;      WSDL Version. Valid Options : 2, 2.0, 1.1
      -S                       Specify a directory path for generated source
      -R                       Specify a directory path for generated resources
      -em                      Specify an external mapping file
      -f                       Flattens the generated files
      -uw                      Switch on un-wrapping.
      -xsdconfig &lt;file path&gt;   Use XMLBeans .xsdconfig file. Valid only with -d xmlbeans.
      -ap                      Generate code for all ports
      -or                      Overwrite the existing classes
      -b                       Generate Axis 1.x backword compatible code.
      -sp                      Suppress namespace prefixes (Optimzation that reduces size of soap request/response)
      -E&lt;key&gt; &lt;value&gt;          Extra configuration options specific to certain databindings. Examples:
                               -Ebindingfile &lt;path&gt;                   (for jibx) - specify the file path for the binding file
                               -Etypesystemname &lt;my_type_system_name&gt; (for xmlbeans) - override the randomly generated type system name
                               -Ejavaversion 1.5                      (for xmlbeans) - generates Java 1.5 code (typed lists instead of arrays)
                               -Emp &lt;package name&gt; (for ADB) - extension mapper package name
                               -Eosv (for ADB) - turn off strict validation.
                               -Ewdc (for xmlbeans) - Generate code with a dummy schema. if someone use this option
                                  they have to generate the xmlbeans code seperately with the scomp command comes with the
                                  xmlbeans distribution and replace the Axis2 generated classes with correct classes
      --noBuildXML             Dont generate the build.xml in the output directory
      --noWSDL                 Dont generate WSDLs in the resources directory
      --noMessageReceiver      Dont generate a MessageReceiver in the generated sources
      --http-proxy-host        Proxy host address if you are behind a firewall
      --http-proxy-port        Proxy prot address if you are behind a firewall
      -ep                      Exclude packages - these packages are deleted after codegeneration
    
EXAMPLES
       wsdl2java.sh -uri ../samples/wsdl/Axis2SampleDocLit.wsdl
       wsdl2java.sh -uri ../samples/wsdl/Axis2SampleDocLit.wsdl -ss -sd 
       wsdl2java.sh -uri ../samples/wsdl/Axis2SampleDocLit.wsdl -ss -sd -d xmlbeans -o ../samples -p org.apache.axis2.userguide
</pre>
<a name="wsdl2java" id="wsdl2java"></a>
<h2>Java2WSDL Reference</h2>
<pre>
NAME
       Java2WSDL.sh or Java2WSDL.bat - Generates the appropriate WSDL file for a given java class.
       These scripts can be found under the bin directory of the Axis2 distribution.

SYNOPSIS
       Java2WSDL.sh [OPTION]... -cn &lt;fully qualified class name&gt;

DESCRIPTION
       Given a java class generates a WSDL file for the given java class. 

      -o &lt;output location&gt;                    output directory
      -of &lt;output file name&gt;                  output file name for the WSDL
      -sn &lt;service name&gt;                      service name
      -l &lt;soap address&gt;                       address of the port for the WSDL
      -cp &lt;class path uri&gt;                    list of classpath entries - (urls)
      -tn &lt;target namespace&gt;                  target namespace for service
      -tp &lt;target namespace prefix&gt;           target namespace prefix for service
      -stn &lt;schema target namespace&gt;          target namespace for schema
      -stp &lt;schema target namespace prefix&gt;   target namespace prefix for schema
      -st &lt;binding style&gt;                     style for the WSDL
      -u &lt;binding use&gt;                        use for the WSDL
      -nsg &lt;class name&gt;                       fully qualified name of a class that implements NamespaceGenerator
      -sg &lt;class name&gt;                        fully qualified name of a class that implements SchemaGenerator
      -p2n [&lt;java package&gt;,&lt;namespace] [&lt;java package&gt;,&lt;namespace]...
                                              java package to namespace mapping for argument and return types
      -p2n [all, &lt;namespace&gt;]                 to assign all types to a single namespace
      -efd &lt;qualified/unqualified&gt;            setting for elementFormDefault (defaults to qualified)
      -afd &lt;qualified/unqualified&gt;            setting for attributeFormDefault (defaults to qualified)
      -xc class1 -xc class2...                extra class(es) for which schematype must be generated.
      -wv &lt;1.1/2.0&gt;                           wsdl version - defaults to 1.1 if not specified
      -dlb                                    generate schemas conforming to doc/lit/bare style
    
EXAMPLES
       Java2WSDL.sh -cn ../samples/test/searchTool.Search
       Java2WSDL.sh -cn ../samples/test/searchTool.Search -sn search
       Java2WSDL.sh -cn ../samples/test/searchTool.Search -u -sn search
       Java2WSDL.sh -cn ../samples/test/searchTool.Search -sn search -o ../samples/test/wsdl  
</pre>
</body>
</html>
