<!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; Apache Axis2 Web Administrator's Guide</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="" />              </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 ">Apache Axis2 Web Administrator's 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>
              </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 class="active">
  
            <a href="#"><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 align="center">Apache Axis2 Web Administrator's Guide</h1>

<p>This document gives you detailed information on the
administration console of the Apache Axis2 Web application. Apache
Axis2 Administration is all about configuring Apache Axis2 at run
time, where the configuration is transient.</p>

<p><i>Send your feedback to: <a class="externalLink" href="mailto:java-dev@axis.apache.org?subject=[Axis2]">java-dev@axis.apache.org</a></i>.
(Subscription details are available on the <a href="../mail-lists.html">Axis2 site</a>.)
Kindly prefix every email subject with [Axis2].</p>

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

<ul>

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

<ul>

<li>

<p><a href="#login">Login into Administration Site</a></p>
</li>
</ul>
</li>

<li><a href="#adminoptions">Administration Options</a>

<ul>

<li>

<p><a href="#tools">Tools</a></p>

<ul>

<li><a href="#upservice">Upload Service</a></li>
</ul>
</li>

<li>

<p><a href="#syscomponents">System components</a></p>

<ul>

<li><a href="#heading1">Available services</a></li>

<li><a href="#servgroups">Available service groups</a></li>

<li><a href="#avmodules">Available modules</a></li>

<li><a href="#globalmodules">Globally engaged modules</a></li>

<li><a href="#phases">Available phases</a></li>
</ul>
</li>

<li>

<p><a href="#executionchains">Execution chains</a></p>

<ul>

<li><a href="#globalchains">Global chains</a></li>

<li><a href="#operationchains">Operation specific chains</a></li>
</ul>
</li>

<li>

<p><a href="#engaginmodule">Engage module</a></p>
</li>

<li><a href="#services">Services</a>

<ul>

<li><a href="#turnoffservice">Deactivate Service</a></li>

<li><a href="#turnonservice">Activate Service</a></li>

<li><a href="#editservicepara">Edit service parameters</a></li>
</ul>
</li>

<li>

<p><a href="#context">Contexts</a></p>

<ul>

<li><a href="#viewhierarchy">View Hierarchy</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<a name="Intro" id="Intro"></a>

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

<p>The Apache Axis2 Web application has three main sections:
'Services' lists all the available services deployed in this
server, 'Validate' checks the system to see whether all the
required libraries are in place and views the system information,
and 'Administration' is the Axis2 Web Administration module which
is the console for administering the Apache Axis2 installation.</p>

<p>The Axis2 Web Administration module provides a way to configure
Axis2 dynamically. It's important to note that this dynamic
configuration will NOT be persistent, i.e., if the servlet
container is restarted, then all the dynamic configuration changes
will be lost.</p>
<a name="login" id="login"></a>

<div class="section">
<h4><a name="Log_on_to_the_Administration_Site"></a>Log on to the Administration Site</h4>

<p>Once Apache Axis2 is successfully installed, the Web application
can be accessed (see <a href="installationguide.html">Installation
Guide</a> for instructions). From the <a href="#homepage">Axis2 Web
Application Home page</a> you can go to the Administration page by
clicking the 'Administration' link. The Login page shown below will
appear requesting the user name and password. The default user name
is 'admin' (without quotes) and default password is 'axis2'
(without quotes).</p>

<p align="center"><img src="images/adminlogin.jpg" alt="" /></p>

<p>You can change the user name and password values by changing the
following two parameters in the axis2.xml as required.</p>

<p align="center"><img src="images/parameters.jpg" alt="" /></p>

<p>If the log on is successful, you will see the screen below. This
is where you can view the configuration and the status of the
running system and dynamically configure it.</p>

<p align="center"><img src="images/admin.jpg" alt="" /></p>
<a name="adminoptions" id="adminoptions"></a>
</div></div>
<div class="section">
<h3><a name="Administration_Options"></a>Administration Options</h3>

<div style="margin-left: 2em"><a name="tools" id="tools"><b>Tools</b></a>

<ul>

<li><a href="#upservice">Upload Service</a></li>
</ul>
<a name="syscomponents" id="syscomponents"><b>System
components</b></a>

<ul>

<li><a href="#heading1">Available services</a></li>

<li><a href="#servgroups">Available service groups</a></li>

<li><a href="#avmodules">Available modules</a></li>

<li><a href="#globalmodules">Globally engaged modules</a></li>

<li><a href="#phases">Available phases</a></li>
</ul>
<a name="executionchains" id="executionchains"><b>Execution
chains</b></a>

<ul>

<li><a href="#globalchains">Global chains</a></li>

<li><a href="#operationchains">Operation specific chains</a></li>
</ul>
<b><a href="#engaginmodule">Engage module</a></b><br />

<ul>

<li>For all Services</li>

<li>For a Service Group</li>

<li>For a Service</li>

<li>For an Operation</li>
</ul>
<a name="services" id="services"><b>Services</b></a>

<ul>

<li><a href="#turnoffservice">Deactivate service</a></li>

<li><a href="#turnonservice">Activate service</a></li>

<li><a href="#editservicepara">Edit service parameters</a></li>
</ul>
<a name="context" id="context"><b>Contexts</b></a>

<ul>

<li><a href="#viewhierarchy">View Hierarchy</a></li>
</ul>
</div>
<a name="homepage" id="homepage"></a>
</div>
<div class="section">
<h3><a name="Apache_Axis2_Web_Application_Home_Page"></a>Apache Axis2 Web Application Home Page</h3>

<p align="center"><b><img src="images/clip_image006.jpg" alt="" /></b></p>
<a name="upservice" id="upservice"></a>
</div>
<div class="section">
<h3><a name="Upload_Services"></a>Upload Services</h3>

<p>You can upload packaged Apache Axis2 service archive files using
this page. This can be done in two simple steps:</p>

<ul>

<li>Browse to the location and select the axisService archive file
you wish to upload</li>

<li>Then click Upload</li>
</ul>

<p align="center"><img src="images/clip_image010.jpg" alt="" /></p>
<a name="heading1" id="heading1"></a>
</div>
<div class="section">
<h3><a name="Available_Services"></a>Available Services</h3>

<p>The functionality of the 'Available Services' option is almost
the same as the functionality of the 'Services' option on the Axis2
Web Application Home page, where it displays a list of deployed
services and their operations. As an additional feature, the
'Available Services' page lists details of modules that are engaged
to the deployed services and their operations on a global, service
or on an operation level.</p>

<p>Using the 'Disengage' link, you can disengage the corresponding
module as long as the module is not globally engaged (i.e., engaged
to all the services and operations).</p>

<p>Click on a specific service and it will give you the WSDL file
of that particular service.</p>

<p><b>Faulty services</b> of this system will also be
listed on this page. Click on a faulty service to view a page that
lists the exception stack trace of the exception, which caused the
service to be faulty.</p>

<p align="center"><img src="images/adminmain.jpg" alt="" /></p>
<a name="servgroups" id="servgroups"></a>
</div>
<div class="section">
<h3><a name="Available_Service_Groups"></a>Available Service Groups</h3>

<p>Service group is a logical collection of related services, and
the 'Available Service Groups' link will list all the available
service groups in the system.</p>

<p align="center"><img src="images/servicegroups.jpg" alt="" /></p>
<a name="avmodules" id="avmodules"></a>
</div>
<div class="section">
<h3><a name="Available_Modules"></a>Available Modules</h3>

<p>To view the available modules in the 'modules' directory of the
repository, click 'Available Modules'. This will show you all the
available modules in the system. Those modules can be engaged
dynamically.</p>

<p align="center"><img src="images/modules.jpg" alt="" /></p>
<br />
<a name="globalmodules" id="globalmodules"></a>
</div>
<div class="section">
<h3><a name="Globally_Engaged_Modules"></a>Globally Engaged Modules</h3>

<p>Click the 'Globally Engaged Modules' to view the globally
engaged modules, if any. If a module is engaged globally, then the
handlers that belong to that module will be executed irrespective
of the service.</p>
<a name="phases" id="phases"></a>
</div>
<div class="section">
<h3><a name="Available_Phases"></a>Available Phases</h3>

<p>The 'Available Phases' link will display all the available
phases. In Axis2, there are two levels of phases:</p>

<ul>

<li>System predefined phases (not allowed to be changed)</li>

<li>User defined phases</li>
</ul>

<p>The main difference between these two levels is that system
predefined phases will be invoked irrespective of the services,
while the user defined phases will be invoked when the dispatcher
finds the operation. Note that it is essential for module
developers and service writers to have a good understanding of
phases and phase ordering.</p>

<p align="center"><img src="images/viewphases.jpg" alt="" /></p>
<br />
<a name="globalchains" id="globalchains"></a>
</div>
<div class="section">
<h3><a name="Global_Chains"></a>Global Chains</h3>

<p>The 'Global Chains' link will display all the Global Execution
Chains. The most interesting feature of the Axis2 Web
Administration Module is that it provides a very basic method of
viewing the global phase list and handlers inside the phases
depending on both the phase and handler orders. This kind of
information is extremely useful in debugging the system, as there
is no other way to list out handlers in the global chains. If you
engage a new module, the new handlers will be added to the global
chains and will be displayed on this page.</p>

<p align="center"><img src="images/globalchain.jpg" alt="" /></p>
<br />
<a name="operationchains" id="operationchains"></a>
</div>
<div class="section">
<h3><a name="Operation_Specific_Chains"></a>Operation Specific Chains</h3>

<p>The 'Operation Specific Chains' link can be used to view the
handlers corresponding to a given service in the same order as it
is in the real execution chain.</p>

<p align="center"><img src="images/select_service_for_handler.jpg" alt="" /></p>
<br />

<p>Select the service of whose service handlers you wish to view
from the list, and click 'View' to view the handlers. The page
below shows the service handlers of the service
<i>version</i></p>

<p align="center"><img src="images/serviceHandlers.jpg" alt="" /></p>
<br />
<a name="engaginmodule" id="engaginmodule"></a>
</div>
<div class="section">
<h3><a name="Engaging_Modules"></a>Engaging Modules</h3>

<p>The 'Engaging Modules' link allows you to engage modules either
globally (to all services), to a service group, to a service, or to
an operation depending on the module implementation. If the module
was designed to engage the handlers globally, then the handlers in
the module can be included in any phase in the system. It can be
either a system predefined phase or a user defined phase.</p>

<p>On the other hand, if the module was implemented in such a way
that it is going to be deployed to a service or to an operation,
then the module cannot be included in any of the <a href="#phases">System Predefined Phases</a>. Thus it can only be
included in <a href="#phases">User Defined Phases</a>.</p>

<p>Immediately after engaging the module, you can see the status of
the engagement indicating whether it is engaged properly or
not.</p>

<p align="center"><img src="images/moduleengage.jpg" alt="" /></p>
<a name="turnoffservice" id="turnoffservice"></a>
</div>
<div class="section">
<h3><a name="Deactivate_Service"></a>Deactivate Service</h3>

<p>The 'Deactivate Service' link under the 'Services' list will
lead to the page below. The Deactivate service functionality
provides a way to remove unnecessary services from the running
system, but the removal is transient--which means that if you
restart the system, the service will be active.</p>

<p>To deactivate a service, select a service from the list, select
the 'Deactivate service' check box, and then click 'Deactivate'..
The 'Clear' button will clear the 'Deactivate service' check
box.</p>

<p align="center"><img src="images/inactivate.jpg" alt="" /></p>
<br />
<a name="turnonservice" id="turnonservice"></a>
</div>
<div class="section">
<h3><a name="Activate_Service"></a>Activate Service</h3>

<p>The 'Activate Service' link under the 'Services' list will lead
to the page below. The Activate service functionality provides a
way to activate services while the system is running, but the
activation is transient-- which means that if you restart the
system, the service will be inactive.</p>

<p>To activate a service, select a service from the list, select
the 'Activate Service' check box, then click 'Activate'. The
'Clear' button will clear the 'Activate service' check box.</p>

<p align="center"><img src="images/activate.jpg" alt="" /></p>
<br />
<a name="editservicepara" id="editservicepara"></a>
</div>
<div class="section">
<h3><a name="Edit_Service_Parameters"></a>Edit Service Parameters</h3>

<p>This functionality provides a way to change the parameters in a
service or its operations. These changes will be transient too,
which means if you restart the system, the changes will not be
reflected.</p>

<p>The 'Edit Parameters' link under the 'Services' list (on the
navigation bar) will link to the page where you can select the
services of which you want to edit the parameters. Once the service
is selected, click 'Edit Parameters'.. This will open the page
shown below.</p>

<p align="center"><img src="images/editserviecpara.jpg" alt="" /></p>
<br />
<a name="viewhierarchy" id="viewhierarchy"></a>
</div>
<div class="section">
<h3><a name="View_Hierarchy"></a>View Hierarchy</h3>

<p>By listing the current context hierarchy, the 'View Hierarchy'
link provides a means to look at the system state at run time. This
will list out all the available service group contexts, service
contexts, operation contexts, etc.</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>