<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at Apr 17, 2012 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Apache Axis2 - 
        Service Archive Generator Wizard Guide for Eclipse Plug-in</title>
    <style type="text/css" media="all">
      @import url("../../css/maven-base.css");
      @import url("../../css/maven-theme.css");
      @import url("../../css/site.css");
    </style>
    <link rel="stylesheet" href="../../css/print.css" type="text/css" media="print" />
    <meta name="Date-Revision-yyyymmdd" content="20120417" />
    <meta http-equiv="Content-Language" content="en" />
        
  </head>
  <body class="composite">
    <div id="banner">
                  <a href="http://www.apache.org/" id="bannerLeft">
                                        <img src="http://www.apache.org/images/asf_logo_wide.png" alt="Apache Axis2" />
                </a>
                        <a href="" id="bannerRight">
                                                <img src="../../images/axis.jpg" alt="Apache Axis2" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
        
                <div class="xleft">
        <span id="publishDate">Last Published: 2012-04-17</span>
                  &nbsp;| <span id="projectVersion">Version: 1.6.2</span>
                      </div>
            <div class="xright">                    <a href="../../index.html" title="Axis2/Java">Axis2/Java</a>
            |
                        <a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a>
              
        
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
        
                                <h5>Axis2/Java</h5>
                  <ul>
                  <li class="none">
                          <a href="../../index.html" title="Home">Home</a>
            </li>
          </ul>
                       <h5>Downloads</h5>
                  <ul>
                  <li class="none">
                          <a href="../../download.cgi" title="Releases">Releases</a>
            </li>
                  <li class="none">
                          <a href="../../modules/index.html" title="Modules">Modules</a>
            </li>
                  <li class="none">
                          <a href="../../tools/index.html" title="Tools">Tools</a>
            </li>
          </ul>
                       <h5>Documentation</h5>
                  <ul>
                  <li class="none">
                          <a href="../../docs/toc.html" title="Table of Contents">Table of Contents</a>
            </li>
                  <li class="none">
                          <a href="../../docs/installationguide.html" title="Installation Guide">Installation Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/quickstartguide.html" title="QuickStart Guide">QuickStart Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/userguide.html" title="User Guide">User Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/jaxws-guide.html" title="JAXWS Guide">JAXWS Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/pojoguide.html" title="POJO Guide">POJO Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/spring.html" title="Spring Guide">Spring Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/webadminguide.html" title="Web Administrator's Guide">Web Administrator's Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/migration.html" title="Migration Guide (from Axis1)">Migration Guide (from Axis1)</a>
            </li>
          </ul>
                       <h5>Resources</h5>
                  <ul>
                  <li class="none">
                          <a href="../../faq.html" title="FAQ">FAQ</a>
            </li>
                  <li class="none">
                          <a href="../../articles.html" title="Articles">Articles</a>
            </li>
                  <li class="none">
                          <a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki">Wiki</a>
            </li>
                  <li class="none">
                          <a href="../../refLib.html" title="Reference Library">Reference Library</a>
            </li>
                  <li class="none">
                          <a href="../../api/index.html" title="Online Java Docs">Online Java Docs</a>
            </li>
          </ul>
                       <h5>Get Involved</h5>
                  <ul>
                  <li class="none">
                          <a href="../../overview.html" title="Overview">Overview</a>
            </li>
                  <li class="none">
                          <a href="../../svn.html" title="Checkout the Source">Checkout the Source</a>
            </li>
                  <li class="none">
                          <a href="../../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                  <li class="none">
                          <a href="../../release-process.html" title="Release Process">Release Process</a>
            </li>
                  <li class="none">
                          <a href="../../guidelines.html" title="Developer Guidelines">Developer Guidelines</a>
            </li>
                  <li class="none">
                          <a href="../../siteHowTo.html" title="Build the Site">Build the Site</a>
            </li>
          </ul>
                       <h5>Project Information</h5>
                  <ul>
                  <li class="none">
                          <a href="../../team-list.html" title="Project Team">Project Team</a>
            </li>
                  <li class="none">
                          <a href="../../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
            </li>
                  <li class="none">
                          <a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code">Source Code</a>
            </li>
                  <li class="none">
                          <a href="../../thanks.html" title="Acknowledgements">Acknowledgements</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License">License</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">Security</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="../../images/logos/maven-feather.png" />
      </a>
                   
        
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <!-- ~ 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>Service Archive Generator Wizard Guide for Eclipse Plug-in</h1>
        <p>This document will guide you through the installation and usage
        of the archive generator Eclipse plug-in.</p>
        <p><a href="../index.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></li><li><a href="#Appendix">Appendix</a></li></ul>
        <div class="section"><h2>Introduction<a name="Introduction"></a></h2>
            <p>As part of the Axis2 tool set, the service archive generator is
            an important tool that allows the generation of service archives
            (&quot;aar&quot; file or a &quot;jar&quot; files) that can be deployed as a web
            services to the Axis2.</p>
        </div>
        <div class="section"><h2>Installation<a name="Installation"></a></h2>
            <p>
                Installation instructions for the plugin can be found
                <a href="plugin-installation.html">here</a>.
            </p>
        </div>
        <div class="section"><h2>Operation<a name="Operation"></a></h2>
            <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 align="center"><img src="images/ServiceWizardSelection.jpg" alt="ServiceWizardSelection" /></p>
            <p>Selecting the wizard and pressing the &quot;Next&quot; button will start
            the service generator wizard. Following is the first page of the
            wizard.</p>
            <p><b>Page 1:</b></p>
            <p align="center"><img src="images/ServicePage1.jpg" alt="ServicePage1" /></p>
            <p>Once the class file folder(which should be a folder in the
            file system) is browsed and selected, the &quot;Next&quot; button will be
            enabled and you can move to the next page. Note that you have the
            option of either including all the files or the class files only of
            the folder on page 1.</p>
            <p><b>Page 2:</b></p>
            <p>Page 2 of the wizard as seen below requires you to locate/browse
            the WSDL file. If you do not wish to add a WSDL file to the service
            archive, select skip WSDL, else you can select the location of the
            WSDL file by selecting the select WSDL option.</p>
            <p align="center"><img src="images/service_page2.jpg" alt="service_page2" /></p>
            <p><b>Page 3:</b></p>
            <p>Select the services.xml file on this wizard page by browsing or
            select the option of generating service xml automatically, after
            which you can click &quot;Next&quot; button to go to the next page. Notice
            how the browsing option disables when the &quot;Generate service xml
            automatically&quot; check box is ticked.</p>
            <p align="center"><img src="images/service_page3.jpg" alt="service_page3" /></p>
            <!-- <p>Note that The service XML file can be generated if needed. To proceed
            to the service generation page, check the "generate automatically" checkbox. </p>
            <p align="center"><img border="0" src="service_page3_hl.jpg"></p>
            
            <p>If the automatic mode is not selected then the wizard
            will directly jump to the library selection page. However if the automatic mode is selected the wizard will show the
            following page</p>
            <p align="center"><img border="0" src="service_page4_plain.JPG" width="500" height="500"></p>
            <p>This is a somewhat complicated page. The service name textbox should include the name of the service that you
            wish to give this service. 
            For the implementation class type in the fully qualified class name and hit the load button to view the operations</p>
            <p align="center"><img border="0" src="service_page4_load.JPG" ></p>
            <p> The loaded operations should be displayed in a table. Once this is displayed you can filter the methods by selecting/deselecting the methods using the checkbox at each row.</p>
            <p align="center"><img border="0" src="service_page4_table.JPG" width="500" height="500"></p>
            <p>Further filtering can be achieved by using the "search declared methods" only checkbox</p>
            <p align="center"><img border="0" src="service_page4_search_declared.JPG" ></p>
            <p>Once the method selection is complete the wizard has enough information to generate a basic services.xml file. If further customization is required, there's no choice but to manually edit it!</p> -->
            <p><b>Page 4:</b></p>
            <!-- START -->
            <p>The next step is to add the libraries. The library addition page
            looks like this :</p>
            <p align="center"><img src="images/service_page5.jpg" alt="service_page5" /></p>
            <p>The library name (with full path) can be either typed on the
            text box or browsed for using the &quot;Browse&quot; button.</p>
            <p align="center"><img src="images/service_page5_browsed.jpg" alt="service_page5_browsed" /></p>
            <p>Once there is a library name with full path on the text box, hit
            the &quot;Add&quot; button to add the library to the list. Added libraries
            should be displayed in the &quot;Added libraries&quot; list box. This way you
            can add as many external libraries as you wish. See the screen
            shots below.</p>
            <p align="center"><img src="images/service_page5_hl.jpg" alt="service_page5_hl" /></p>
            <p align="center"><img src="images/service_page5_added.jpg" alt="service_page5_added" /></p>
            <p>If any added library needs to be removed, highlight it or in
            other words, select it from the &quot;Added libraries&quot; list and hit on
            the &quot;Remove&quot; button as shown below. Click on the &quot;Next&quot; button to
            proceed to the last page of the wizard if the user did not select
            to auto generate the services.xml file. If user select to auto
            generate the services.xml file then the services.xml option page
            will be displayed.</p>
            <p align="center"><img src="images/service_page5_remove.jpg" alt="service_page5_remove" /></p>
            <p><b>Page 5:</b></p>
            <p>This page only appears if the user select to generate the
            services.xml at page 3 of the wizard. If the user have selected a
            services.xml then the user will be directed to the last page of the
            wizard.</p>
            <p>After entering the correct service name and valid fully
            qualified class name, try to load the existing methods of that
            class by clicking the load button.</p>
            <p align="center"><img src="images/service_page4_load.jpg" alt="service_page4_load" /></p>
            <p>If successfully loaded the user will be presented with a table
            at the bottom of the page with the details of the loaded class. By
            checking and unchecking the user can select the necessary methods
            to include in the services.xml</p>
            <p align="center"><img src="images/service_page4_table.jpg" alt="service_page4_table" /></p>
            <p>By clicking on the search declared method only check box, the
            user can remove the inherited methods from the class. Click on the
            &quot;Next&quot; button to proceed to the last page of the wizard</p>
            <p align="center"><img src="images/service_page4_search_declared.jpg" alt="service_page4_search_declared" /></p>
            <p><b>Page 6:</b></p>
            <p>The last page of the wizard asks for the output file location
            and the output archive file name. To be able to finish the wizard,
            user must enter valid output file location and output file
            name.</p>
            <p align="center"><img src="images/service_page6.jpg" alt="service_page6" /></p>
            <p>Once all the parameters are filled, hit the &quot;Finish&quot; button to
            complete the wizard and generate the service archive.</p>
            <p align="center"><img src="images/success_msg.jpg" alt="success_msg" /></p>
            <p>If you see the above message, then you've successfully generated
            the service archive! This service archive can be hot deployed
            (deployed at run time) to the axis2</p>
        </div>
        <div class="section"><h2>Appendix<a name="Appendix"></a></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 class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">Copyright &#169;                    2004-2012
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
        
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
