<!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; Code Generator Wizard Guide for Eclipse Plug-in</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 ">Code Generator Wizard Guide for Eclipse Plug-in</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" >

    
        <h1>Code Generator Wizard Guide for Eclipse Plug-in</h1>
        
<p>This document explains the usage of this code generator plug-in
        for Eclipse. In other words, this document will guide you through
        the operations of generating a WSDL file from a Java class and/or
        generating a Java class file from a WSDL file.</p>
        
<p><a href="../../download.html">[Download Plugin Tool]</a></p>
        
<ul>
<li><a href="#Introduction">Introduction</a></li>
<li><a href="#Installation">Installation</a></li>
<li><a href="#Operation">Operation</a>
<ul>
<li><a href="#WSDL2Java">WSDL2Java</a></li>
<li><a href="#Java2WSDL">Java2WSDL</a></li></ul></li>
<li><a href="#Appendix">Appendix</a></li></ul>
        
<div class="section">
<h2><a name="Introduction"></a>Introduction</h2>
            
<p>The Axis2 code generator comes built-in with an <a class="externalLink" href="http://www.eclipse.org">Eclipse</a> plug-in. This plug-in can be
            used to generate a WSDL file from a java class (Java2WSDL) and/or a
            java class file from a WSDL (WSDL2Java). First you need to install
            the plug-in. The instructions for the installation process are
            given below.</p>
        </div>
        
<div class="section">
<h2><a name="Installation"></a>Installation</h2>
            
<p>
                Installation instructions for the plugin can be found
                <a href="plugin-installation.html">here</a>.
            </p>
        </div>
        
<div class="section">
<h2><a name="Operation"></a>Operation</h2>
            
<div class="section">
<h3><a name="WSDL2Java"></a>WSDL2Java</h3>
                
<p>If the plug-in is properly installed you should see a new wizard
                under the &quot;New&quot; section.(use the File -&gt; New -&gt; Other or Ctrl
                + N )</p>
                
<p><img src="images/wsdl2java-screen0.png" alt="wsdl2java-screen0" /></p>
                
<p>Selecting the wizard and pressing the &quot;Next&quot; button will start
                the code generator wizard. Following is the first wizard page.</p>
                
<p><b>Page 1:</b></p>
                
<p><img src="images/wsdl2java-screen1.png" alt="wsdl2java-screen1" /></p>
                
<p>Selecting the &quot;Generate Java source code from WSDL file&quot; option
                and clicking &quot;Next&quot; leads to the following page.</p>
                
<p><b>WSDL2Java Page 2 :</b></p>
                
<p><img src="images/wsdl2java-screen2.png" alt="wsdl2java-screen2" /></p>
                
<p>To move on to the next page the WSDL file location must be
                given. The &quot;Browse&quot; button can be used to easily browse for a file
                rather than typing the whole path.</p>
                
<p><b>WSDL2Java Page 3 :</b></p>
                
<p>Once the WSDL file is selected, the next page will take you to
                the page from where <b>codegen options</b> are to be
                selected. By far this is the most important page in this wizard.
                This page determines the characteristics of the code being
                generated.</p>
                
<p>Novices need not worry about these options since the most common
                options are defaulted, but advanced users will find it very easy to
                turn the knobs using these options.</p>
                
<p><img src="images/wsdl2java-screen3.png" alt="wsdl2java-screen3" /></p>
                
<p>What advanced users can do is select custom from the select
                codegen options drop down list and then change/edit the fields that
                you need.</p>
                
<p><img src="images/wsdl2java-screen31.png" alt="wsdl2java-screen31" /></p>
                
<p>Once the options are selected, only the final step of the code
                generation is left which is the selection of the output file
                location.</p>
                
<p><b>WSDL2Java Page 4 :</b></p>
                
<p>Here you can select the output file path by typing or browsing
                using the &quot;Browse&quot; button. You have the option of browsing only
                eclipse workspace projects by selecting the &quot;Add the source to a
                project on current eclipse workspace&quot; radio button. Or else you
                have the option to save the codegen resutls to file system</p>
                
<p><img src="images/wsdl2java-screen4.png" alt="wsdl2java-screen4" /></p>
                
<p>Here also you have the option to add some value to the codegen
                results. If you have enabled the check box &quot;Add Axis2 libraries to
                the codegen result project&quot; then all other controls below will get
                enabled. What you can do is point the downloaded Axis2_HOME
                location via the &quot;Browse&quot; button. Then you can verify the
                availability of the Axis2 libs by clicking on the &quot;Check Libs&quot;
                button. If all goes well then you can add the axis 2 libs to the
                codegen results location. Another option is available to generate a
                jar file if the user needs to add the codegen results to a project
                as a compiled jar file to the selected locations lib directory.</p>
                
<p><img src="images/wsdl2java-screen41.png" alt="wsdl2java-screen41" /></p>
                
<p>When the output file location is selected, the &quot;Finish&quot; button
                will be enabled. Clicking the &quot;Finish&quot; button will generate the
                code and a message box will pop up acknowledging the success. Well
                Done! You've successfully completed Axis2 code generation.</p>
            </div>
            
<div class="section">
<h3><a name="Java2WSDL"></a>Java2WSDL</h3>
                
<p><b>Page 1:</b></p>
                
<p>For this operation you need to select the option which says
                &quot;Generate a WSDL from a Java source file&quot;</p>
                
<p><img src="images/java2wsdl-screen0.png" alt="java2wsdl-screen0" /></p>
                
<p>Then click the &quot;Next&quot; button which will lead to the next page
                below.</p>
                
<p><b>Java2WSDL Page 2:</b></p>
                
<p><img src="images/java2wsdl-screen1.png" alt="java2wsdl-screen1" /></p>
                
<p>In this page one needs to select the class to be exposed and the
                relevant jar files /classes to be loaded as the classpath. After
                the libraries have been set, the &quot;Test Class Loading&quot; button must
                be clicked in order to test whether the class is loadable. Unless
                the class loading is successful proceeding to the &quot;Next&quot; button
                will not be enabled.</p>
                
<p>Once the classloading is successful and &quot;Next&quot; button is clicked
                the page below will appear.</p>
                
<p><b>Java2WSDL Page 3:</b></p>
                
<p>This page allows the parameters to be modified by setting the
                options for the generator.</p>
                
<p><img src="images/java2wsdl-screen2.png" alt="java2wsdl-screen2" /></p>
                
<p><b>Java2WSDL Page 4:</b></p>
                
<p>Here you can select the output file path by typing or browsing
                using the &quot;Browse&quot; button. You have the option of browsing only
                Eclipse workspace projects by selecting the &quot;Add the source to a
                project on current eclipse workspace&quot; radio button . Or else you
                have the option to save the codegen resutls to file system. Once
                the output file location and the output WSDL file name is added you
                can click the &quot;Finish&quot; button to complete generation.</p>
                
<p><img src="images/java2wsdl-screen3.png" alt="java2wsdl-screen3" /></p>
                
<p>If a message box pops up acknowledging the success, then you've
                successfully completed the Java2WSDL code generation.</p>
            </div>
        </div>
        
<div class="section">
<h2><a name="Appendix"></a>Appendix</h2>
            
<ul>
            
<li>Eclipse reference - <a class="externalLink" href="http://www.eclipse.org/">http://www.eclipse.org/</a></li>
            
<li>Custom Ant Tasks - <a class="externalLink" href="http://ant.apache.org/manual/develop.html">http://ant.apache.org/manual/develop.html</a></li>
            </ul>
        </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>