<!-- saved from url=(0022)http://internet.e-mail -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Axis2 administartion guide</title>
</head>
<body>
<p><h3>Introduction </h3>
<p>Axis2 web administration module provides a way to configure axis2 dynamically. 
Its 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>

 <p><h4><a name="_Toc96698076"></a>Loging into administartion site</h4>
<p>From axis2 index page you can go to administration page by following 
Axis2 Administration link, then logging page will appear asking for a user 
name and a password , the default username is 'admin' (without quotes) and default
password is 'axis2' (without quotes).
 You can change those two values by changing following two parameters in server.xml as required.  
<p align="left"><strong><img src="images/parameters.jpg"></strong></p>
<p align="left"><strong><img src="images/adminloging.jpg" ></strong></p>
</p>
<p>If the login succeed you will be see as shown below. This is where you can view the 
configuration and the state of the running system and dynamically configure it. </p>
 <p align="left"><strong><img src="images/admin.jpg" ></strong></p>
 
<h3>Administration Options</h3>
<ul>
<b>System components</b>
<li><a href="#heading1">List available services</a></li>
<li><a href="#avmodules">List available modules</a></li>
<li><a href="#globalmodules">List globally engaged modules</a></li>
<li><a href="#phases">View available phases</a></li>
<br>
<b>Execution chains</b>
<li><a href="#globalchains">Global chanins</a></li>
<li><a href="#operationchains">Operation specific chains</a></li>
<br>
<b>Other</b>
<li><a href="#engaginmodule">Engage module</a></li>
</ul> 


<h3><a name="heading1"></a>List Available services</h3>
 <p>The functionality of the 'List Available Services' option is almost same 
	as the functionality of the axis to main page where it displayes the list of 
	deployed services. But as an additional feature, if there are any
  modules engaged globally, to services or to operations those details
	 will be displayed here. </p>
<p align="left"><strong><img src="images/adminmain.jpg" ></strong></p>


<h3><a name="avmodules"></a>List Available modules</h3>

	 <p>To view the available modules in the "repository/modules" you just have
	  to click the 'Available Modules' then it will show you all the available modules 
		in the system and those modules can be engaged dynamically. </p>

		<p align="left"><strong><img src="images/modules.jpg" ></strong></p>
		<br>
	<h3><a name="globalmodules"></a>List Globally engaged modules</h3>
		<p>From the globally engaged modules you can see the globally engaged 
		modules if any , if a module was engaged globally then the 
		handlers that belong to that module will be executed irrespective of the service. 
		The 'Globally Engaged Modules' option lists the above list of modules.
		</p>
	<br>
	<h3><a name="phases"></a>View available phases</h3>

		<p>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 those two levels of phases is that, in the case of
		system predefined phases, the phases will be invoked irrespective of the irrespective of the services.
		When the dispatcher finds the operation then user defined phase list will be invoked. 
		It should be noted that the module developers and service writers are really required to 
		have a good understanding of phases and phase ordering.</p>
		<img src="images/viewphases.jpg" >
		<br>

		<h3><a name="globalchains"></a>View Global chanins</h3>
		<p>The most interesting feature of axis2 web admin module is that it provide a very basic 
		way of viewing the global phase list and handlers inside the phases depending on 
		both phase and handler orders. This kind of information is extreamly useful in debugging 
		the system, because there is no way to list out the handlers in the 
		global chains except this. And if you engage a new module the new handlers 
		will be added to the global chains and those will be displayed in this page.</p> 
		
		<p align="left"><strong><img src="images/globalchain.jpg" ></strong></p>
		<br>
		<h3><a name="operationchains"></a>View operation specific chains</h3>
		<p>The 'Operation Specific Chains' can be used to view the handlers corresponding
		to a given service in the same order as there in the real execution chain.</p>
		
		<p align="left"><strong><img src="images/serviceHandlers.jpg" ></strong></p>
		<br>
		
		<h3><a name="engaginmodule"></a>Engaging modules</h3>
<p>Modules can be engaged either globally, to a service or to an operation 
depending on the module implementation. If the module was designed to 
engage the handlers globally then handlers in the module can be included in any phase in 
the system. It can be either system predefined or user defined phase.</P>  
<p>In there other hand if the module was implemented in such a way that is going
 to be deployed to a service or to an operation then the module canNOT be included in 
 any of system predefined phases. So that it can only be included in user defined phases. </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="left"><strong><img src="images/moduleengage.jpg" ></strong></p>
		<p>&nbsp;</p>	

</body>
</html>
