<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2016-05-02 
 | Rendered using Apache Maven Fluido Skin 1.4
-->
<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="20160502" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Axis2 Plug-in Guide for IntelliJ IDEA</title>
    <link rel="stylesheet" href="../../css/apache-maven-fluido-1.4.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.4.min.js"></script>

    
    <meta name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" /><meta http-equiv="content-type" content="text/html; charset=us-ascii" /><meta content="text/html; charset=iso-8859-1" /><meta name="generator" content="Bluefish 1.0.6" />              </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: 2016-05-02
                      <span class="divider">|</span>
                   </li>
                  <li id="projectVersion">Version: 1.7.2
                          <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 Plug-in Guide for IntelliJ IDEA</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>
              </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. --><html xmlns="http://www.w3.org/1999/xhtml">


<h1>Axis2 Plug-in Guide for IntelliJ IDEA</h1>

<p>This document explains the installation and usage of Axis2
plug-in for IntelliJ IDEA.</p>

<p><a href="../../download.html">[Download
Plug-in]</a></p>

<div class="section">
<h2><a name="Content"></a>Content</h2>

<ul>

<li><a href="#intro">Introduction</a></li>

<li><a href="#installation">Installation</a></li>

<li><a href="#WSDL2Java_Code_Generation">WSDL2Java Code
Generation</a></li>

<li><a href="#Create_Service_Archive">Create a Service Archive</a>

<ul>

<li><a href="#sub12">Sub Wizard 1 &amp; Sub Wizard 2</a></li>

<li><a href="#sub3">Sub Wizard 3</a></li>
</ul>
</li>
</ul>
<a name="intro" id="intro"></a>

<div class="section">
<h2><a name="Introduction"></a>Introduction</h2>

<p>The Axis2 plug-in for IntelliJ IDEA helps users to create
service archives which can be deployed in Axis2, and generate java
classes files from WSDL files. The following section describes the
installation procedure followed by the usage of the plug-in.</p>

<p><b>Note:</b> This plug-in is made up with IDEA Open API which will be
compatible with idea version since build 4121. The plugin also be
compatible with all the builds after build number 4121 and also the
java version should be 1.4 or higher. The provided screen shots may
slightly differ with what the user would actually see but the
functionality has not been changed.</p>
<a name="installation" id="installation"></a>

<div class="section">
<h2><a name="Installation"></a>Installation</h2>

<p>First <a href="../../download.html">download</a> the
plug-in which is a zipped file, and extract it into plugins
directory which is located in the directory where IDEA is
installed. If a previous version of the plug-in resides in this
directory you will have to delete it prior to extracting the new
zip file. If you have extracted the file correctly you would see a
directory called axis2-idea-plugin.</p>

<p>Next step is to restart IDEA so that the changes can take place.
If the plug-in has been installed correctly, you will see following
icons in IDEA when it is restarted.</p>

<p><img src="images/idea-icons.jpg" alt="Figure 1" /></p>

<p>Also if you right-click on the IDEA editor you would see a link
to the same plug-in.</p>

<p><img src="images/idea-popup.jpg" alt="Figure2" /></p>

<p>When you click on either one of them, a window (Page 1) will
appear asking you to select one of the following two options.</p>

<ol style="list-style-type: decimal">

<li><a href="#Create_Service_Archive">Create a service
archive</a></li>

<li><a href="#WSDL2Java_Code_Generation">WSDL2Java code
generation</a></li>
</ol>

<p><b>Page 1:</b></p>

<p><img src="images/fig1.jpg" alt="Figure3" /></p>

<p>If you want to create a service archive obviously you must
select &quot;Create a service archive&quot; option. Like wise, if u want to
generate java class file from a WSDL file you must select the radio
button option &quot;WSDL2Java code generation&quot;.</p>

<div class="section">
<h2><a name="WSDL2Java_Code_Generation" id="WSDL2Java_Code_Generation">WSDL2Java Code Generation</a></h2>

<p>Select &quot;WSDL2Java code generation&quot; and click on the button &quot;OK&quot;
to generate code from a WSDL file. Then the following window will
appear.</p>

<p><b>WSDL2Java Page 2:</b></p>

<p><img src="images/fig2.jpg" alt="Figure4" /></p>

<p>Once the WSDL file is selected you will be able to move onto the
next page. The &quot;Browse&quot; button can be used to easily browse for a
file rather than having to type the whole path.</p>

<p>Once the WSDL file is selected, click on the &quot;Next&quot; button which
will take you to the page below.</p>

<p><b>WSDL2Java Page 3:</b></p>

<p>This page gives the user the option of selecting default or
custom code generation options. There are three default code
generation options in all. The first enables the user to generate
both client and server code under default configurations while the
second generates just the client side under default configurations.
The third option generates server side code under default
configurations.</p>

<p><b>Note:</b></p>

<ul>

<li>When client side code is generated under default configurations
it generates the stub, compiles it, packages it as a jar (the name
of the jar will be &lt;service name &gt;-jar) places it in a lib
folder (If there is no lib folder, it is created) under the IDEA
project that is opened. This jar that's generated will also be
added as a project library to the current active IDEA project.</li>

<li>When server code is generated under default configurations it
generates the server side code and also generates a default
service.xml. The user will then be taken to page 5.</li>

<li>When both server and client side is generated under default
configurations the client stub is added are a jar to the current
IDEA project and the user is taken to page 5.</li>
</ul>

<p><img src="images/fig19.jpg" alt="Figure5" /></p>

<p><b>WSDL2Java Page 4:</b></p>

<p><b>Codegen options</b> are to be selected here. By far
this is the most important page in this wizard, which determines
the characteristics of the code being generated.</p>

<p><img src="images/fig18.jpg" alt="Figure5" /></p>

<p><b>Here's some information on the options for
selection:</b></p>

<ul>

<li>Output language can be Java, C#. But we have not fully tested
C# codegeneration, therefore, it is better to select Java as output
language.</li>

<li>If the WSDL comprises of several services, the user can select
the service for which the code should be generated for.</li>

<li>If the WSDL comprises of several ports for a particullar
service, the user can select the port which the code should be
generated for.</li>

<li>The default data binding type is adb (Axis2 Data Binding).
Although the tool is capable of providing XML beans, due to class
loading issues in XML beans, current implementation only generate
code with OM and ADB.</li>

<li>As for the package name of the generated code, you can set the
name as you wish.</li>

<li>Users can select the one out of the three options- &quot;Generate
Client Side&quot;, &quot;Generate Server Side&quot; and &quot;Generate All&quot;. The user
will be able to select further options based on his options
selected here. These sub options are explained below.</li>

<li style="list-style: none; display: inline">

<ul>

<li>If user selects &quot;Generate Client Side&quot;, he can further select
the service invocation style. Since Axis2 supports both synchronous
and asynchronous client programming model, the tool has provided a
way to selecting the invocation style.</li>

<li>If user selects &quot;Generate Server Side&quot;, he can also generate a
default service XML file. If the user selects &quot;Generate an
interface for skeleton&quot; option then it only generates an interface
for the server side. If so the user has to implement this
interface. If this option is not selected, the skeleton class is
generated, which the user can fill in later on.</li>

<li>If user selects &quot;Generate All&quot; option, then all the classes
will be generated in the referenced schemas by the WSDL
irrespective of elements referred by the WSDL, along with the
client side code.</li>
</ul>
</li>

<li>The dafault behaviour of the code generator is to map
namespaces to package names logically, but if the user wishes to
change the package names of the generated classes, he can do so by
changing the values in the Namespace to Packagename mapping
table.</li>
</ul>

<p>With these enhanced options novices need not worry about the
options that can be set as the default options cover the most
common cases. Advanced users will find it very easy to turn the
knobs using the custom generation option.</p>

<p><b>WSDL2Java Page 5:</b></p>

<p><img src="images/fig3.jpg" alt="Figure6" /></p>

<p>Here uses have the option of adding the generated code directly
to their working IDEA project or choose a custom location. If the
user decides to add it to the current IDEA project he/she will have
to choose the module and the source directory that the code should
be generated to.</p>

<p>Alternatively the user can browse and select the output
location/path (the location at which the code is to be generated)
using the &quot;Browse&quot; button. Because of the &quot;Browse&quot; button you do
not need to type in the output file path.</p>

<p><img src="images/fig4.jpg" alt="Fig4" /></p>

<p>Once an output location is selected you can click on &quot;Finish&quot;
button which will generate the java class file. If code generation
is successful then a message box will appear acknowledging this
fact a shown above.</p>

<p><a name="Create_Service_Archive" id="Create_Service_Archive"></a></p>

<div class="section">
<h2><a name="Create_a_Service_Archive"></a>Create a Service Archive</h2>

<p>Select the &quot;Create a service archive&quot; radio button on Page 1 of
Axis2 IDEA plug-in wizard.</p>

<p><b>Page 1:</b></p>

<p><img src="images/fig1.jpg" alt="Fig5" /></p>

<p><b>Service Archive Page 2:</b></p>

<p>The page below will appear asking the user to select the archive
type</p>

<p><img src="images/fig6.jpg" alt="fig6" /></p>

<p>In Axis2, the user can deploy a single service or a service
group. Therefore, you can select either &quot;Single service archive&quot; or
&quot;Service group archive&quot; for the archive type you want to
create.</p>

<p>If you already have a services.xml you can skip some of the
steps in the wizard by selecting the radio button option &quot;I already
have services.xml&quot; and clicking on &quot;Next&quot; button. If you do not
have the services.xml, select the radio button option &quot;Generate
services.xml&quot; and click on the &quot;Next&quot; button, in which case the
tool will create the services.xml for you.</p>

<p>Depending on the options you selected on this page there can be
three sub wizards:</p>

<ol style="list-style-type: decimal">

<li><a href="#sub12">Sub wizard 1</a> (Generate single service and
its services.xml)</li>

<li><a href="#sub12">Sub wizard 2</a> (Generate service group and
its services.xml)</li>

<li><a href="#sub3">Sub wizard 3</a> (Generate service/service
group using already existing services.xml)</li>
</ol>

<p>1 &amp; 2 follow the same set of steps except for some looping
mechanism in the middle of the wizard.</p>
<a name="sub12" id="sub12"></a>

<div class="section">
<h3><a name="Sub_Wizard_1_and_Sub_Wizard_2"></a>Sub Wizard 1 and Sub Wizard 2</h3>

<p><b>Service Archive (sub wizards 1 &amp; 2) Page
3:</b></p>

<p>From this page you have to select the location of the service
classes directory (the location of the compiled classes). You do
not need to type path, simply browse and select.</p>

<p><img src="images/fig7.jpg" alt="fig7" /></p>

<p>When you click on &quot;Next&quot; button, wizard will move to the page
below</p>

<p><b>Service Archive (sub wizards 1 &amp; 2) Page
4:</b></p>

<p>Here you select service specific external libraries (third party
libraries) and service WSDL files. If you want to add multiple WSDL
files to a single service type you can do that as well.</p>

<p><img src="images/fig8.jpg" alt="fig8" /></p>

<p>To add libraries first click on the browse button to browse for
library files and then click on the &quot;Add&quot; button. Once added the
selected file will appear in the list box.</p>

<p>To add WSDLs, first click on the browse button to browse for
WSDL file and then click the &quot;Add&quot; button to add the file to the
list.</p>

<p>After adding external libraries and service WSDL files click on
the &quot;Next&quot; button to move to next page.</p>

<p><b>Service Archive (sub wizards 1 &amp; 2) Page
5:</b></p>

<p>This page allows you to select service implementation class. In
the case of service group, same page will be looped to select
multiple service implementation classes. This process is explained
in detail below.</p>

<p>Select a service implementation class by browsing and clicking
on the &quot;Load&quot; button to load all the public methods in that class,
after which you can select the methods that you want to publish
using the check boxes.</p>

<p><b>Note :</b> If you do not select the correct class
path from the &quot;Class location selection&quot; window, the public methods
which are available in the selected class file will not be
loaded.</p>

<p><img src="images/fig10.jpg" alt="fig10" /></p>

<p>In &quot;Service Name&quot; text box you can type the name of the service
you want, but remember that the service name should be unique
throughout the system.</p>

<p>When you have completed this particular service click on the
button &quot;Next&quot;. In the case of a service group when you click on the
&quot;Next&quot; button for that particular service the following dialog box
will appear with option to add more service(s) to a service
group.</p>

<p><img src="images/fig11.jpg" alt="fig11" /></p>

<p>If you click on &quot;Yes&quot;, you have to follow the same procedure to
add some other service(s) to service group.</p>

<p>If you click on &quot;No&quot;, the button &quot;Next&quot; will be enabled and you
can go to next page.</p>

<p><a name="Note" id="Note"><b><i>Note: From this point
onwards the steps are similar to all the sub
wizards.</i></b></a></p>

<p><b>Service Archive (sub wizards 1 &amp; 2) Page
6:</b></p>

<p>This page displays the services.xml file, either the one given
by you (in the case of I already have services.xml)
or the one generated by the system (in the case of &quot;generate
services.xml&quot;)</p>

<p><img src="images/fig12.jpg" alt="fig12" /></p>

<p>This page is editable and provide a way to add parameters and
module references to any level.</p>

<p><b>Note :</b> When you click on either the
&quot;+Parameter&quot; or the &quot;+ModuleRef&quot; buttons remember that
corresponding text will be added to the current mouse position.
Therefore, click on the location you want to add the parameter or
module references and then click relevant button (+Parameter or
+ModuleRef).</p>

<p><b>+Parameter button:</b></p>

<p>If you click on the &quot;+Parameter&quot; button a window will appear
asking to give parameter name and parameter value.</p>

<p><img src="images/fig13.jpg" alt="fig13" /></p>

<p>Note that you can also manually add parameters (without clicking
on the &quot;+Parameter&quot; button ) to any where in the document as you
wish.</p>

<p><b>+ModuleRef button:</b></p>

<p>Likewise, adding module references can be done by clicking on
the &quot;+ModuleRef&quot; button in the page. You have to type the name of
the module to be engaged as shown in the following figure.</p>

<p><img src="images/fig14.jpg" alt="fig14" /></p>

<p>When you complete this page press the &quot;Next&quot; button to go to
final page.</p>

<p><b>Service Archive (sub wizards 1 &amp; 2) Page
7:</b></p>

<p><img src="images/fig15.jpg" alt="fig15" /></p>

<p>Next step is to select output file location, the location in
which archive file should be created.</p>

<p>In the &quot;Archive Name&quot; text box, type the name of the archive
file you want to place. This name will finally become the service
group name.</p>

<p><b>Note :</b> Do not include file extension when you
type archive name. System will generate that for you.</p>

<p>When you are done, click the &quot;Finish&quot; button. If everything has
been done successfully you will see following message.</p>

<p><img src="images/fig16.jpg" alt="fig16" /></p>

<p><b><i>Note: Pages 6 &amp; 7 of sub wizards 1 &amp; 2 are
common to sub wizard 3 from its page 3 onwards.</i></b></p>
<a name="sub3" id="sub3"></a>
</div>
<div class="section">
<h3><a name="Sub_Wizard_3"></a>Sub Wizard 3</h3>

<p>In the case where services.xml is already available, the steps
are as follows:</p>

<p><b>Service Archive (sub wizard 3) Page 3:</b></p>

<p><img src="images/fig17.jpg" alt="fig17" /></p>

<p>This page allows you to select both location of services.xml and
the location of service classes directory. Click on the &quot;Select&quot;
buttons and browse the file system to find required document and
location.</p>

<p>Click on the &quot;Next&quot; button which will take you to a page which
allows you to add third party libraries and WSDL's in the same
manner as &quot;Sub Wizard 1 &amp; Sub Wizard 2&quot; section's <a href="#Note">Page 6 - Edit service descriptors</a>. Note that Sub Wizard
3 from this point takes the same pages as 6 to 7 of Sub Wizards 1
&amp; 2.</p>
</div>
</html>
                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
                      <div class="row-fluid">
                                      <p >Copyright &copy;                    2004&#x2013;2016
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All rights reserved.      
                    
      </p>
                </div>

        
                </div>
    </footer>
        </body>
</html>