<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2017-05-06 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20170506" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Axis2 Reference Guide</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>
      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://www.apache.org/" id="bannerLeft"><img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Axis2"/></a></div>
        <div class="pull-right"><a href=".././" id="bannerRight"><img src="../images/axis.jpg" /></a></div>
        <div class="clear"><hr/></div>
      </div>

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

<div class="source">
<div class="source"><pre class="prettyprint">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.
                               -Eiu (for ADB) - Ignore Unexpected elements instead of throwing ADBException
                               -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></div></div></div>
<div class="section">
<h2><a name="Java2WSDL_Reference"></a>Java2WSDL Reference</h2>

<div class="source">
<div class="source"><pre class="prettyprint">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;one or more soap addresses&gt;         location URIs, comma-delimited
      -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&gt;] [&lt;java package&gt;,&lt;namespace&gt;]
                                              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
      -dne                                    disallow nillable elements in the generated schema
      -doe                                    disallow optional elements in the generated schema
      -disableSOAP11                          disable binding generation for SOAP 1.1
      -disableSOAP12                          disable binding generation for SOAP 1.2
      -disableREST                            disable binding generation for REST

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