Index: Axis_Management_module/management/xdocs/management.html
===================================================================
--- Axis_Management_module/management/xdocs/management.html	(revision 384160)
+++ Axis_Management_module/management/xdocs/management.html	(working copy)
@@ -11,7 +11,7 @@
 		<h2>Introduction</h2>
 		
 		<p align="left">Axis2 - Management Interface wraps manageable components of Axis2 and provides interfaces to manage remote Axis2 engines using management applications.
-		Currently it only provides web services interface. But it can be extended to support other interfaces like JMX. It also provides a web based management console
+		It exposes the management functionalities using web services and JMX.&nbsp; It also provides a web based management console
 		to monitor and configure remote Axis2 engines.</p>
 		
 		<h2>Building and installing the management interface</h2>
@@ -37,6 +37,7 @@
 			<li>Copy "management.aar" to &quot;axis2\WEB-INF\services&quot; directory of the extracted directory structure..</li>
 			<li>Add a new phase called "monitorPhase" to all flows in the &quot;axis2\WEB-INF\conf\axis2.xml&quot; file.</li>
 			<li>Deploy "axis2console.war" in a servlet container.</li>
+			<li>Make the Axis2 jars accessible from axis2console classes as it uses Axis2 as a web services client. In Tomcat, this can be done by copying the jar files in "webapps\axis2\WEB-INF\lib" to the "shared\lib" directory.</li>
 			<li>Restart Axis2.</li>
 		</ul>
 		
@@ -45,5 +46,13 @@
 		This will bring up the login screen of the management console. Type the address of the remote Axis2 engine and click "Login". This will display the configuration 
 		of the remote engine and provides methods to configure it.</p>
 		
+		<h2>JMX Support</h2>
+		
+		<p>Axis2 Management Subsystem exposes its interface using JMX for the compatibility with JMX based management applications.
+		JVM running Axis2 should be JMX enabled in order to use the JMX interface. After that, JMX management applications can connect to the JVM
+		and manage Axis2 using exposed MBeans.</p>
+		
+		<ul
+		
 	</body>
 </html>
\ No newline at end of file
Index: Axis_Management_module/management/maven.xml
===================================================================
--- Axis_Management_module/management/maven.xml	(revision 384160)
+++ Axis_Management_module/management/maven.xml	(working copy)
@@ -3,19 +3,20 @@
 
 	<jar jarfile="target/management.jar" basedir="target/classes">
 		<include name="org/apache/axis2/management/core/**/*" /> 
+		<include name="org/apache/axis2/management/interfaces/jmx/**/*" />
 	</jar>
 
 
 	<mkdir dir="target/classes/META-INF" />
 	<copy file="resources/management-services/services.xml" tofile="target/classes/META-INF/services.xml" />
-	<jar jarfile="target/management.aar" basedir="target/classes">
+	<jar jarfile="target/management.aar" basedir="target/classes"> 
 		<include name="org/apache/axis2/management/interfaces/ws/**/*" /> 
 		<include name="META-INF/services.xml" />
 	</jar>
 
 	<copy file="resources/management-module/module.xml" tofile="target/classes/META-INF/module.xml" />
 	<jar jarfile="target/management.mar" basedir="target/classes">
-		<include name="org/apache/axis2/management/invoker/**/*" /> 
+		<include name="org/apache/axis2/management/invoker/**/*" />  
 		<include name="META-INF/module.xml" />
 	</jar>
 
Index: Axis_Management_module/management/src/org/apache/axis2/management/console/web/stubs/AxisServiceStatsStub.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/console/web/stubs/AxisServiceStatsStub.java	(revision 384160)
+++ Axis_Management_module/management/src/org/apache/axis2/management/console/web/stubs/AxisServiceStatsStub.java	(working copy)
@@ -18,6 +18,7 @@
 	
 	public void setServiceToMonitor(String serviceName) {
 		
+		System.out.println("INFO: stub setServiceToMonitor invoked.");
 		OMElement method = getMethod("setServiceToMonitor", new String[]{serviceName});
 		invoke(targetEPR, method);
 	}
Index: Axis_Management_module/management/src/org/apache/axis2/management/console/web/Error.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/console/web/Error.java	(revision 384160)
+++ Axis_Management_module/management/src/org/apache/axis2/management/console/web/Error.java	(working copy)
@@ -50,10 +50,10 @@
 		echo("<tr><td><h1>Error</h1>" +
 				"<p>An error was occured while performing the operation. Please check if you have performed following steps." +
 				"<ul>" +
-					"<li>management.mar module is deployed in the \"modules\" directory.</li><br /><br />" +
-					"<li>dmservices.aar is deployed in the \"services\" directory.</li><br /><br />" +
-					"<li>dm.jar is deployed in the \"lib\" directory.</li><br /><br />" +
-					"<li>Axis2 jars are accessible from the Axis2Console servlet. Axis2Console uses Axis2 jars as a web services client. Therefore those jars should be placed in \"shared\\lib\" directory or \"webapps\\axis2web\\WEB-INF\\lib\" directory if you are using Tomcat. Consult the documentation for other servlet containers.</li><br /><br />" +
+					"<li>management.mar module is deployed in the \"axis2\\WEB-INF\\modules\" directory.</li><br /><br />" +
+					"<li>management.aar is deployed in the \"axis2\\WEB-INF\\services\" directory.</li><br /><br />" +
+					"<li>management.jar is deployed in the \"axis2\\WEB-INF\\lib\" directory.</li><br /><br />" +
+					"<li>Axis2 jars are accessible from the Axis2Console servlet. Axis2Console uses Axis2 jars as a web services client. Therefore those jars should be placed in \"shared\\lib\" directory or \"webapps\\axis2console\\WEB-INF\\lib\" directory if you are using Tomcat. Consult the documentation for other servlet containers.</li><br /><br />" +
 					"<li>The host address is supplied correctly in the Login screen. Host address is the URL of Axis2 directory in the format \"http://&ltip-address&gt:&ltport&gt/axis2\". For example if you are running Tomcat on port 8080 in localhost, the host address is \"http://localhost:8080/axis2\".</li><br /><br />" +
 				"</ul>" +
 				"<br />" +
Index: Axis_Management_module/management/src/org/apache/axis2/management/console/web/Axis2DynamicStatsConsole.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/console/web/Axis2DynamicStatsConsole.java	(revision 384160)
+++ Axis_Management_module/management/src/org/apache/axis2/management/console/web/Axis2DynamicStatsConsole.java	(working copy)
@@ -180,9 +180,11 @@
 	
 	private void monitorService(HttpServletRequest request) {
 		
+		System.out.println("INFO: monitor service invoked.");
 		if(request.getParameter("level").equals("service")) {
 			String service = request.getParameter("service");
 			
+			System.out.println("INFO: Service monitor setting..");
 			if(service != null) {
 				axisServiceStatsStub.setServiceToMonitor(service);
 			}
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AxisOperationStats.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AxisOperationStats.java	(revision 384160)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AxisOperationStats.java	(working copy)
@@ -32,7 +32,7 @@
 	}
 	
 
-	public void setOperationToMonitor(OMElement element) throws XMLStreamException {
+	public OMElement setOperationToMonitor(OMElement element) throws XMLStreamException {
 		
 		String[] params = getParameters(element);
 		
@@ -45,6 +45,8 @@
 		try {
 			dynamicStatsManager.getMonitoredService(params[0]).setOperationToMonitor(params[1]);
 		} catch(AxisFault af) {System.out.println("===== EXCEPTION: " + af.getMessage() + "=====");}
+		
+		return packValue("Successfully completed the operation.");
 	}
 	
 	
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AxisServiceStats.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AxisServiceStats.java	(revision 384160)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AxisServiceStats.java	(working copy)
@@ -32,12 +32,15 @@
 	}
 	
 	
-	public void setServiceToMonitor(OMElement element) throws XMLStreamException {
+	public OMElement setServiceToMonitor(OMElement element) throws XMLStreamException {
 		
+		System.out.println("INFO: AxisServiceStats.setServiceToMonitor invoked.");
 		String[] params = getParameters(element);
 		
 		DynamicStatsManager dynamicStatsManager = (DynamicStatsManager)configContext.getProperty("dynamic_stats");
 		dynamicStatsManager.setServiceToMonitor(params[0]);
+		
+		return packValue("Successfully completed the operation.");
 	}
 		
 	
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AbstractDMService.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AbstractDMService.java	(revision 384160)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AbstractDMService.java	(working copy)
@@ -1,5 +1,6 @@
 package org.apache.axis2.management.interfaces.ws;
 
+//import org.apache.axis2.management.interfaces.AbstractManagemetInterface;
 import org.apache.axis2.management.core.managers.GlobalManager;
 import org.apache.axis2.management.core.managers.ModuleManager;
 import org.apache.axis2.management.core.managers.TransportManager;
@@ -22,54 +23,14 @@
 
 import javax.xml.stream.XMLStreamException;
 
-public class AbstractDMService {
+public class AbstractDMService extends AbstractManagementInterface {
 	
 	
-	private MessageContext msgContext = null;
-	private ConfigurationContext configContext = null;
-
-	
 	public void init(MessageContext context) {
-		msgContext = context;
-		configContext = context.getConfigurationContext();
+		super.init(context.getConfigurationContext());
 	}
 	
-	
-	public GlobalManager getGlobalManager() {
-		return (GlobalManager)configContext.getProperty("global_manager");
-	}
-	
-	
-	public ModuleManager getModuleManager() {
-		return (ModuleManager)configContext.getProperty("module_manager");
-	}
-	
-	
-	public TransportManager getTransportManager() {
-		return (TransportManager)configContext.getProperty("transport_manager");
-	}
-	
-	
-	public ServiceGroupManager getServiceGroupManager() {
-		return (ServiceGroupManager)configContext.getProperty("servicegroup_manager");
-	}
-	
-	
-	public ServiceManager getServiceManager() {
-		return (ServiceManager)configContext.getProperty("service_manager");
-	}
-	
-	
-	public OperationManager getOperationManager() {
-		return (OperationManager)configContext.getProperty("operation_manager");
-	}
-	
-	
-	public DynamicStatsManager getDynamicStatsManager() {
-		return (DynamicStatsManager)configContext.getProperty("dynamic_stats");
-	}
 
-
 	public String[] getParameters(OMElement element) {
 
 		element.build();
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AxisModules.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AxisModules.java	(revision 384160)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/ws/AxisModules.java	(working copy)
@@ -72,9 +72,15 @@
 		String[] params = getParameters(element);
 		
 		ModuleManager moduleManager = getModuleManager();
-		String result = moduleManager.isEngagedGlobally(params[0]);
+		boolean engaged = moduleManager.isEngagedGlobally(params[0]);
 
-		return packValue(result);
+		OMElement result;
+		if(engaged)
+			result = packValue("TRUE");
+		else
+			result = packValue("FALSE");
+
+		return result;
 	}
 	
 	
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisModulesMBean.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisModulesMBean.java	(revision 0)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisModulesMBean.java	(revision 0)
@@ -0,0 +1,42 @@
+
+package org.apache.axis2.management.interfaces.jmx;
+
+
+public class AxisModulesMBean extends AbstractManagementInterface {
+
+	
+	public boolean isEngagedGlobally(String moduleName) {
+		return getModuleManager().isEngagedGlobally(moduleName);
+	}
+	
+	
+	public String[] getEngagedServices(String moduleName) {
+		return getModuleManager().getEngagedServices(moduleName);
+	}
+	
+	
+	public String[] getEngagedOperations(String moduleName) {
+		return getModuleManager().getEngagedOperations(moduleName);
+	}	
+
+
+	public String[] getModuleParameters(String moduleName) {
+		return getModuleManager().getModuleParameters(moduleName);
+	}
+
+
+	public boolean isModuleParameter(String moduleName, String paramName) {
+		return getModuleManager().isModuleParameter(moduleName, paramName);
+	}
+
+
+	public void addModuleParameter(String moduleName, String name, String value) {
+		getModuleManager().addModuleParameter(moduleName, name, value);
+	}
+
+
+	public String editModuleParameter(String moduleName, String parameterName, String value) {
+		return getModuleManager().editModuleParameter(moduleName, parameterName, value);
+	}
+
+}
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AbstractManagementInterface.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AbstractManagementInterface.java	(revision 0)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AbstractManagementInterface.java	(revision 0)
@@ -0,0 +1,59 @@
+
+package org.apache.axis2.management.interfaces.jmx;
+
+import org.apache.axis2.management.core.managers.GlobalManager;
+import org.apache.axis2.management.core.managers.ModuleManager;
+import org.apache.axis2.management.core.managers.TransportManager;
+import org.apache.axis2.management.core.managers.ServiceGroupManager;
+import org.apache.axis2.management.core.managers.ServiceManager;
+import org.apache.axis2.management.core.managers.OperationManager;
+import org.apache.axis2.management.core.managers.DynamicStatsManager;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ConfigurationContext;
+
+public class AbstractManagementInterface {
+	
+	private ConfigurationContext configContext = null;
+
+	
+	public void init(ConfigurationContext configContext) {
+		this.configContext = configContext;
+	}
+	
+	
+	public GlobalManager getGlobalManager() {
+		return (GlobalManager)configContext.getProperty("global_manager");
+	}
+	
+	
+	public ModuleManager getModuleManager() {
+		return (ModuleManager)configContext.getProperty("module_manager");
+	}
+	
+	
+	public TransportManager getTransportManager() {
+		return (TransportManager)configContext.getProperty("transport_manager");
+	}
+	
+	
+	public ServiceGroupManager getServiceGroupManager() {
+		return (ServiceGroupManager)configContext.getProperty("servicegroup_manager");
+	}
+	
+	
+	public ServiceManager getServiceManager() {
+		return (ServiceManager)configContext.getProperty("service_manager");
+	}
+	
+	
+	public OperationManager getOperationManager() {
+		return (OperationManager)configContext.getProperty("operation_manager");
+	}
+	
+	
+	public DynamicStatsManager getDynamicStatsManager() {
+		return (DynamicStatsManager)configContext.getProperty("dynamic_stats");
+	}
+	
+}
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/DynamicStatsManagerMBean.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/DynamicStatsManagerMBean.java	(revision 0)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/DynamicStatsManagerMBean.java	(revision 0)
@@ -0,0 +1,62 @@
+
+package org.apache.axis2.management.interfaces.jmx;
+
+public class DynamicStatsManagerMBean extends AbstractManagementInterface {
+
+
+	public int getInMessages() {
+		return getDynamicStatsManager().getInMessages();
+	}
+	
+
+	public void clearInMessages() {
+		getDynamicStatsManager().clearInMessages();
+	}
+	
+	
+	public int getOutMessages() {
+		return getDynamicStatsManager().getOutMessages();
+	}
+	
+
+	public void clearOutMessages() {
+		getDynamicStatsManager().clearOutMessages();
+	}
+	
+	
+	public int getFaultInMessages() {
+		return getDynamicStatsManager().getFaultInMessages();
+	}
+	
+
+	public void clearFaultInMessages() {
+		getDynamicStatsManager().clearFaultInMessages();
+	}
+	
+	
+	public int getFaultOutMessages() {
+		return getDynamicStatsManager().getFaultOutMessages();
+	}
+	
+
+	public void clearFaultOutMessages() {
+		getDynamicStatsManager().clearFaultOutMessages();
+	}
+	
+	
+	/*
+	public HashMap getMonitoredServices() {
+		return serviceStatsMap;
+	}
+	*/
+
+
+	public void setServiceToMonitor(String serviceName) {
+		getDynamicStatsManager().setServiceToMonitor(serviceName);	
+	}
+	
+	
+	public boolean isServiceMonitoring(String serviceName) {
+		return getDynamicStatsManager().isServiceMonitoring(serviceName);
+	}
+}
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisOperationStatsMBean.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisOperationStatsMBean.java	(revision 0)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisOperationStatsMBean.java	(revision 0)
@@ -0,0 +1,67 @@
+
+package org.apache.axis2.management.interfaces.jmx;
+
+import org.apache.axis2.management.core.utils.ServiceStats;
+import org.apache.axis2.management.core.utils.OperationStats;
+
+import org.apache.axis2.AxisFault;
+
+
+public class AxisOperationStatsMBean extends AbstractManagementInterface {
+	
+	
+	public int getInMessages(String serviceName, String operationName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		OperationStats operationStats = serviceStats.getMonitoredOperation(operationName);
+		return operationStats.getInMessages();
+	}
+	
+
+	public void clearInMessages(String serviceName, String operationName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		OperationStats operationStats = serviceStats.getMonitoredOperation(operationName);
+		operationStats.clearInMessages();
+	}
+	
+	
+	public int getOutMessages(String serviceName, String operationName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		OperationStats operationStats = serviceStats.getMonitoredOperation(operationName);
+		return operationStats.getOutMessages();
+	}
+	
+
+	public void clearOutMessages(String serviceName, String operationName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		OperationStats operationStats = serviceStats.getMonitoredOperation(operationName);
+		operationStats.clearOutMessages();
+	}
+	
+	
+	public int getFaultInMessages(String serviceName, String operationName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		OperationStats operationStats = serviceStats.getMonitoredOperation(operationName);
+		return operationStats.getFaultInMessages();
+	}
+	
+
+	public void clearFaultInMessages(String serviceName, String operationName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		OperationStats operationStats = serviceStats.getMonitoredOperation(operationName);
+		operationStats.clearFaultInMessages();
+	}
+	
+	
+	public int getFaultOutMessages(String serviceName, String operationName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		OperationStats operationStats = serviceStats.getMonitoredOperation(operationName);
+		return operationStats.getFaultOutMessages();
+	}
+	
+
+	public void clearFaultOutMessages(String serviceName, String operationName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		OperationStats operationStats = serviceStats.getMonitoredOperation(operationName);
+		operationStats.clearFaultOutMessages();
+	}
+}
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisServiceStatsMBean.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisServiceStatsMBean.java	(revision 0)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisServiceStatsMBean.java	(revision 0)
@@ -0,0 +1,64 @@
+
+package org.apache.axis2.management.interfaces.jmx;
+
+import org.apache.axis2.management.core.utils.ServiceStats;
+
+import org.apache.axis2.AxisFault;
+
+
+public class AxisServiceStatsMBean extends AbstractManagementInterface {
+	
+	
+	public int getInMessages(String serviceName) throws AxisFault {		
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		return serviceStats.getInMessages();
+	}
+	
+
+	public void clearInMessages(String serviceName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		serviceStats.clearInMessages();
+	}
+	
+	
+	public int getOutMessages(String serviceName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		return serviceStats.getOutMessages();
+	}
+	
+
+	public void clearOutMessages(String serviceName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		serviceStats.clearOutMessages();
+	}
+	
+	
+	public int getFaultInMessages(String serviceName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		return serviceStats.getFaultInMessages();
+	}
+	
+
+	public void clearFaultInMessages(String serviceName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		serviceStats.clearFaultInMessages();
+	}
+	
+	
+	public int getFaultOutMessages(String serviceName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		return serviceStats.getFaultOutMessages();
+	}
+	
+
+	public void clearFaultOutMessages(String serviceName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		serviceStats.clearFaultOutMessages();
+	}
+	
+	
+	public void setOperationToMonitor(String serviceName, String operationName) throws AxisFault {
+		ServiceStats serviceStats = getDynamicStatsManager().getMonitoredService(serviceName);
+		serviceStats.setOperationToMonitor(operationName);
+	}
+}
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisTransportsMBean.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisTransportsMBean.java	(revision 0)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisTransportsMBean.java	(revision 0)
@@ -0,0 +1,48 @@
+
+package org.apache.axis2.management.interfaces.jmx;
+
+
+public class AxisTransportsMBean extends AbstractManagementInterface {
+
+
+	public String[] getTransportInParameters(String transportInName) {
+		return getTransportManager().getTransportInParameters(transportInName);
+	}
+
+
+	public boolean isTransportInParameter(String transportInName, String paramName) {
+		return getTransportManager().isTransportInParameter(transportInName, paramName);
+	}
+
+
+	public void addTransportInParameter(String transportInName, String name, String value) {
+		getTransportManager().addTransportInParameter(transportInName, name, value);
+	}
+
+
+	public String editTransportInParameter(String transportInName, String parameterName, String value) {
+		return getTransportManager().editTransportInParameter(transportInName, parameterName, value);
+	}
+
+
+	public String[] getTransportOutParameters(String transportOutName) {
+		return getTransportManager().getTransportOutParameters(transportOutName);
+	}
+
+
+	public boolean isTransportOutParameter(String transportOutName, String paramName) {
+		return getTransportManager().isTransportOutParameter(transportOutName, paramName);
+	}
+
+
+	public void addTransportOutParameter(String transportOutName, String name, String value) {
+		getTransportManager().addTransportOutParameter(transportOutName, name, value);
+	}
+
+
+	public String editTransportOutParameter(String transportOutName, String parameterName, String value) {
+		return getTransportManager().editTransportOutParameter(transportOutName, parameterName, value);
+	}
+
+
+}
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisServiceGroupsMBean.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisServiceGroupsMBean.java	(revision 0)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisServiceGroupsMBean.java	(revision 0)
@@ -0,0 +1,23 @@
+
+package org.apache.axis2.management.interfaces.jmx;
+
+
+public class AxisServiceGroupsMBean extends AbstractManagementInterface {
+	
+	
+	public String[] getServices(String serviceGroupName) {
+		return getServiceGroupManager().getServices(serviceGroupName);
+	}
+
+	
+	// Modules
+	
+	public String[] getServiceGroupEngagedModules(String serviceGroupName) {
+		return getServiceGroupManager().getServiceGroupEngagedModules(serviceGroupName);
+	}
+	
+	
+	public String engageModuleToServiceGroup(String moduleName, String serviceGroupName) {
+		return getServiceGroupManager().engageModuleToServiceGroup(moduleName, serviceGroupName);
+	}
+}
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisGlobalsMBean.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisGlobalsMBean.java	(revision 0)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisGlobalsMBean.java	(revision 0)
@@ -0,0 +1,111 @@
+
+package org.apache.axis2.management.interfaces.jmx;
+
+//import org.apache.axis2.management.interfaces.AbstractManagemetInterface;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.engine.AxisConfiguration;
+
+
+public class AxisGlobalsMBean extends AbstractManagementInterface {
+
+
+	public boolean isGlobalParameter(String paramName) {
+		return getGlobalManager().isGlobalParameter(paramName);
+	}
+
+
+	public String[] getGlobalParameters(){
+		return getGlobalManager().getGlobalParameters();
+	}
+
+
+	public String addGlobalParameter(String name, String value) {
+		return getGlobalManager().addGlobalParameter(name, value);
+	}
+
+
+	public String editGlobalParameter(String name, String value) {
+		return getGlobalManager().editGlobalParameter(name, value);
+	}
+	
+	
+	// Services
+	
+	public String[] getServices() {
+		return getGlobalManager().getServices();
+	}
+
+	
+	public String[] getFaultyServices() {
+		return getGlobalManager().getFaultyServices();
+	}
+
+
+	public boolean isServiceAvailable(String serviceName) {
+		return getGlobalManager().isServiceAvailable(serviceName);
+	}
+
+
+	public String removeService(String serviceName) {
+		return getGlobalManager().removeService(serviceName);
+	}
+	
+	
+	// ServiceGroups
+	
+	public String[] getServiceGroups() {
+		return getGlobalManager().getServiceGroups();
+	}
+	
+	
+	// Modules
+	
+	public boolean isModuleAvailable(String moduleName) {
+		return getGlobalManager().isModuleAvailable(moduleName);
+	}
+
+
+	public String[] getModules() {
+		return getGlobalManager().getModules();
+	}
+
+
+	public String[] getFaultyModules() {
+		return getGlobalManager().getFaultyModules();
+	}
+
+
+	public String[] getGloballyEngagedModules() {
+		return getGlobalManager().getGloballyEngagedModules();
+	}
+	
+	
+	public String engageModuleGlobally(String moduleName) {
+		return getGlobalManager().engageModuleGlobally(moduleName);
+	}
+
+	
+	// Transports
+	
+	public String[] getTransportIns(){
+		return getGlobalManager().getTransportIns();
+	}
+
+
+	public String[] getTransportOuts(){
+		return getGlobalManager().getTransportOuts();
+	}
+
+
+	public boolean isTransportInAvailable(String transportInName) {
+		return getGlobalManager().isTransportInAvailable(transportInName);
+	}
+
+
+	public boolean isTransportOutAvailable(String transportOutName) {
+		return getGlobalManager().isTransportOutAvailable(transportOutName);
+	}
+
+}
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisOperationsMBean.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisOperationsMBean.java	(revision 0)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisOperationsMBean.java	(revision 0)
@@ -0,0 +1,42 @@
+
+package org.apache.axis2.management.interfaces.jmx;
+
+
+public class AxisOperationsMBean extends AbstractManagementInterface {
+	
+
+	public String[] getOperationParameters(String serviceName, String operationName){
+		return getOperationManager().getOperationParameters(serviceName, operationName);
+	}
+
+
+	public boolean isOperationParameter(String serviceName, String operationName, String paramName) {
+		return getOperationManager().isOperationParameter(serviceName, operationName, paramName);
+	}
+
+
+	public void addOperationParameter(String serviceName, String operationName, String name, String value) {
+		getOperationManager().addOperationParameter(serviceName, operationName, name, value);
+	}
+
+
+	public String editOperationParameter(String serviceName, String operationName, String parameterName, String value) {
+		return getOperationManager().editOperationParameter(serviceName, operationName, parameterName, value);
+	}
+
+	
+	// Modules
+	
+	public String[] getOperationEngagedModules(String serviceName, String opName) {
+		return getOperationManager().getOperationEngagedModules(serviceName, opName);
+	}
+	
+	
+	public String engageModuleToOperation(String moduleName, String serviceName, String operationName) {
+		return getOperationManager().engageModuleToOperation(moduleName, serviceName, operationName);
+	}
+
+}
+
+
+	
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisServicesMBean.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisServicesMBean.java	(revision 0)
+++ Axis_Management_module/management/src/org/apache/axis2/management/interfaces/jmx/AxisServicesMBean.java	(revision 0)
@@ -0,0 +1,51 @@
+
+package org.apache.axis2.management.interfaces.jmx;
+
+
+public class AxisServicesMBean extends AbstractManagementInterface {
+
+
+	public String[] getServiceParameters(String serviceName) {
+		return getServiceManager().getServiceParameters(serviceName);
+	}
+
+
+	public boolean isServiceParameter(String serviceName, String paramName) {
+		return getServiceManager().isServiceParameter(serviceName, paramName);
+	}
+
+
+	public void addServiceParameter(String serviceName, String name, String value) {
+		getServiceManager().addServiceParameter(serviceName, name, value);
+	}
+
+
+	public String editServiceParameter(String serviceName, String parameterName, String value) {
+		return getServiceManager().editServiceParameter(serviceName, parameterName, value);
+	}
+	
+	
+	// Operations
+	
+	public String[] getOperations(String serviceName) {
+		return getServiceManager().getOperations(serviceName);
+	}
+	
+	
+	public boolean isOperationAvailable(String serviceName, String operationName) {
+		return getServiceManager().isOperationAvailable(serviceName, operationName);
+	}
+	
+	
+	// Modules
+	
+	public String[] getServiceEngagedModules(String serviceName) {
+		return getServiceManager().getServiceEngagedModules(serviceName);
+	}
+	
+	
+	public String engageModuleToService(String moduleName, String serviceName) {
+		return getServiceManager().engageModuleToService(moduleName, serviceName);
+	}
+
+}
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/core/utils/ServiceStats.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/core/utils/ServiceStats.java	(revision 384160)
+++ Axis_Management_module/management/src/org/apache/axis2/management/core/utils/ServiceStats.java	(working copy)
@@ -23,11 +23,12 @@
 	
 	
 	public int getInMessages() {
+		System.out.println("INFO: Returning in messages.");
 		return inMessages;
 	}
 	
 
-	public void clearInMessages() {
+	public void clearInMessages() { 
 		inMessages = 0;
 	}
 	
@@ -46,7 +47,6 @@
 		return inFaultMessages;
 	}
 	
-
 	public void clearFaultInMessages() {
 		inFaultMessages = 0;
 	}
@@ -68,6 +68,8 @@
 	
 	
 	public void updateStats(MessageContext msgContext) {
+		
+		System.out.println("INFO: Updating service stats.");
 		// monitor service level requests
 		if(msgContext.getFLOW() == MessageContext.IN_FLOW) {
 			inMessages++;
Index: Axis_Management_module/management/src/org/apache/axis2/management/core/utils/JMXUtil.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/core/utils/JMXUtil.java	(revision 0)
+++ Axis_Management_module/management/src/org/apache/axis2/management/core/utils/JMXUtil.java	(revision 0)
@@ -0,0 +1,106 @@
+package org.apache.axis2.management.core.utils;
+
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.AxisFault;
+
+import java.rmi.registry.LocateRegistry;
+import java.util.Map;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+
+
+/**
+ * JMXManager manages everything related to registering and publishing MBeans. It is not aware about
+ * the MBeans it is going to publish. Instead it provides a set of methods to register and publish any
+ * object as an MBean. Currently only JMXAdmin uses this to publish MBeans. But this can be used by any module
+ * to publish objects for management. This is a singleton class and the users should use the "getJMXManager"
+ * factory method to obtain an instance of this.
+ *
+ */
+public class JMXUtil {
+
+	private Object registry = null;
+	private Method registerComponent = null;
+
+	
+	public JMXUtil() throws AxisFault{
+
+		try{
+			System.out.println("Initializing MBeanServer...");
+			initModeler();
+
+		}catch(Exception e){
+			throw AxisFault.makeFault(e);
+		}
+
+	}
+
+
+	/**
+	 * This method initializes the modeler registry. An MBeanServer is created if it was not alrady
+	 * created.
+	 *
+	 * @throws AxisFault
+     */
+	public boolean initModeler() throws Exception{
+
+		Class registryClass = null;
+		
+		try {
+			registryClass = Class.forName("org.apache.commons.modeler.Registry");
+		} catch (ClassNotFoundException e) {
+			System.out.println("Couldn't find Apache commons.modeler package.\nJMX support is not activated.");
+			registry = null;
+			throw new Exception("Couldn't find Apache commons.modeler package.");
+		}
+
+		try {
+			Class[] getRegistryArgs = new Class[]{Object.class, Object.class,};
+			Method getRegistry = registryClass.getMethod("getRegistry", getRegistryArgs);
+			Object[] getRegistryOptions = new Object[]{null, null};
+			registry = getRegistry.invoke(null, getRegistryOptions);
+
+			Class[] registerComponentArgs = new Class[]{Object.class, String.class, String.class};
+			registerComponent = registryClass.getMethod("registerComponent", registerComponentArgs);
+
+		} catch (IllegalAccessException e) {
+			throw e;
+		} catch (IllegalArgumentException e) {
+			throw e;
+		} catch (InvocationTargetException e) {
+			throw e;
+		} catch (NoSuchMethodException e) {
+			throw e;
+		}
+
+		return true;
+	}
+
+
+	/**
+	 * This method is used to register MBeans. It registers any object provided to it as an MBean.
+	 * All public fields and methods of the object will be exposed for management.
+	 *
+	 * @param mbean
+	 * @param mbeanName
+	 * @throws AxisFault
+     */
+	public boolean registerMBean(Object mbean, String mbeanName, String context) throws Exception{
+
+			if (registry != null) {
+				Object args[] = new Object[]{mbean, mbeanName, context};
+				try {
+					registerComponent.invoke(registry, args);
+				} catch (Exception e) {
+					throw new Exception("Couldn't register MBean.");
+				} 
+				
+				return true;
+			} else {
+				return false;
+			}
+	}
+}
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/core/admin/DMAdmin.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/core/admin/DMAdmin.java	(revision 384160)
+++ Axis_Management_module/management/src/org/apache/axis2/management/core/admin/DMAdmin.java	(working copy)
@@ -3,6 +3,7 @@
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.AxisFault;
 
+import org.apache.axis2.management.core.utils.JMXUtil;
 import org.apache.axis2.management.core.managers.GlobalManager;
 import org.apache.axis2.management.core.managers.ModuleManager;
 import org.apache.axis2.management.core.managers.TransportManager;
@@ -11,6 +12,8 @@
 import org.apache.axis2.management.core.managers.OperationManager;
 import org.apache.axis2.management.core.managers.DynamicStatsManager;
 
+import org.apache.axis2.management.interfaces.jmx.*;
+
 public class DMAdmin {
 
 	public void initManagement(ConfigurationContext configContext) {
@@ -39,7 +42,55 @@
 		configContext.setProperty("dynamic_stats", dynamicStatsManager);
 		
 		System.out.println("Initiating management objects completed.");
-
+		
+		try {
+			initJMX(configContext);
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
 	}
-
+	
+	
+	public void initJMX(ConfigurationContext configContext) throws Exception {
+		
+		System.out.println("Initializing JMX interface...");
+		
+		JMXUtil jmxUtil = new JMXUtil();
+		
+		AxisGlobalsMBean axisGlobalsMBean = new AxisGlobalsMBean();
+		axisGlobalsMBean.init(configContext);
+		jmxUtil.registerMBean(axisGlobalsMBean, "Axis2:name=org.apache.axis2.management.AxisGlobalsMBean", "AxisGlobals");
+		
+		AxisModulesMBean axisModulesMBean = new AxisModulesMBean();
+		axisModulesMBean.init(configContext);
+		jmxUtil.registerMBean(axisModulesMBean, "Axis2:name=org.apache.axis2.management.AxisModulesMBean", "AxisModules");
+		
+		AxisTransportsMBean axisTransportsMBean = new AxisTransportsMBean();
+		axisTransportsMBean.init(configContext);
+		jmxUtil.registerMBean(axisTransportsMBean, "Axis2:name=org.apache.axis2.management.AxisTransportsMBean", "AxisTransports");
+		
+		AxisServiceGroupsMBean axisServiceGroupsMBean = new AxisServiceGroupsMBean();
+		axisServiceGroupsMBean.init(configContext);
+		jmxUtil.registerMBean(axisServiceGroupsMBean, "Axis2:name=org.apache.axis2.management.AxisServiceGroupsMBean", "AxisServiceGroups");
+		
+		AxisServicesMBean axisServicesMBean = new AxisServicesMBean();
+		axisServicesMBean.init(configContext);
+		jmxUtil.registerMBean(axisServicesMBean, "Axis2:name=org.apache.axis2.management.AxisServicesMBean", "AxisServices");
+		
+		AxisOperationsMBean axisOperationsMBean = new AxisOperationsMBean();
+		axisOperationsMBean.init(configContext);
+		jmxUtil.registerMBean(axisOperationsMBean, "Axis2:name=org.apache.axis2.management.AxisOperationsMBean", "AxisOperations");
+		
+		DynamicStatsManagerMBean dynamicStatsManagerMBean = new DynamicStatsManagerMBean();
+		dynamicStatsManagerMBean.init(configContext);
+		jmxUtil.registerMBean(dynamicStatsManagerMBean, "Axis2:name=org.apache.axis2.management.AxisGlbalStatsMBean", "AxisGlobalStats");
+		
+		AxisServiceStatsMBean axisServiceStatsMBean = new AxisServiceStatsMBean();
+		axisServiceStatsMBean.init(configContext);
+		jmxUtil.registerMBean(axisServiceStatsMBean, "Axis2:name=org.apache.axis2.management.AxisServiceStatsMBean", "AxisServiceStats");
+		
+		AxisOperationStatsMBean axisOperationStatsMBean = new AxisOperationStatsMBean();
+		axisOperationStatsMBean.init(configContext);
+		jmxUtil.registerMBean(axisOperationStatsMBean, "Axis2:name=org.apache.axis2.management.AxisOperationStatsMBean", "AxisOperationStats");	
+	}
 }
\ No newline at end of file
Index: Axis_Management_module/management/src/org/apache/axis2/management/core/managers/ModuleManager.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/core/managers/ModuleManager.java	(revision 384160)
+++ Axis_Management_module/management/src/org/apache/axis2/management/core/managers/ModuleManager.java	(working copy)
@@ -34,12 +34,12 @@
 	}
 	
 	
-	public String isEngagedGlobally(String moduleName) {
+	public boolean isEngagedGlobally(String moduleName) {
 		
-		String result = "FALSE";
+		boolean result = false;
 		Collection engagedModuleCollection = axisConfig.getEngagedModules();
 		if(engagedModuleCollection.contains(new QName(moduleName))) {
-			result = "TRUE";
+			result = true;
 		}
 		
 		return result;
@@ -50,7 +50,7 @@
 		
 		ArrayList engagedServicesList = new ArrayList();
 		
-		if(isEngagedGlobally(moduleName).equals("FALSE")) {
+		if(isEngagedGlobally(moduleName)) {
 			HashMap serviceMap = axisConfig.getServices();
 			if(serviceMap!=null && !serviceMap.isEmpty()) {
 				Collection serviceCollection = serviceMap.values();
Index: Axis_Management_module/management/src/org/apache/axis2/management/core/managers/DynamicStatsManager.java
===================================================================
--- Axis_Management_module/management/src/org/apache/axis2/management/core/managers/DynamicStatsManager.java	(revision 384160)
+++ Axis_Management_module/management/src/org/apache/axis2/management/core/managers/DynamicStatsManager.java	(working copy)
@@ -130,9 +130,11 @@
 
 	public void setServiceToMonitor(String serviceName) {
 		
+		System.out.println("INFO: Setting service to monitor.");
 		ServiceStats serviceStats = new ServiceStats();
 
 		if(!serviceStatsMap.containsKey(serviceName)) {
+			System.out.println("INFO: Service not already monitoring.");
 			serviceStatsMap.put(serviceName, serviceStats);
 		}	
 	}
@@ -140,9 +142,12 @@
 	
 	public ServiceStats getMonitoredService(String serviceName) throws AxisFault {
 		
+		System.out.println("INFO: Getting monitored service.");
+		
 		ServiceStats serviceStats = (ServiceStats)serviceStatsMap.get(serviceName);
 
 		if(serviceStats == null) {
+			System.out.println("INFO: Service Not monitored.");
 			throw new AxisFault("Service not monitored.");
 		} 
 














