<!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 - 


Apache Axis2 Web Administrator's Guide</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" />
        <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="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">
            <strong>Web Administrator's Guide</strong>
          </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. --><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>Contents<a name="Contents"></a></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>Introduction<a name="Introduction"></a></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>Log on to the Administration Site<a name="Log_on_to_the_Administration_Site"></a></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>Administration Options<a name="Administration_Options"></a></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>Apache Axis2 Web Application Home Page<a name="Apache_Axis2_Web_Application_Home_Page"></a></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>Upload Services<a name="Upload_Services"></a></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>Available Services<a name="Available_Services"></a></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>Available Service Groups<a name="Available_Service_Groups"></a></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>Available Modules<a name="Available_Modules"></a></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>Globally Engaged Modules<a name="Globally_Engaged_Modules"></a></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>Available Phases<a name="Available_Phases"></a></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>Global Chains<a name="Global_Chains"></a></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>Operation Specific Chains<a name="Operation_Specific_Chains"></a></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>Engaging Modules<a name="Engaging_Modules"></a></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>Deactivate Service<a name="Deactivate_Service"></a></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>Activate Service<a name="Activate_Service"></a></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>Edit Service Parameters<a name="Edit_Service_Parameters"></a></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>View Hierarchy<a name="View_Hierarchy"></a></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 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>
