You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by de...@apache.org on 2005/09/23 06:33:50 UTC

svn commit: r291073 [1/2] - in /webservices/axis2/trunk/archive/java/scratch/Axis2Contribution: ./ JMX/ JMX/Axis2Console/ JMX/Axis2Console/images/ JMX/Axis2Console/src/ JMX/Axis2Console/src/org/ JMX/Axis2Console/src/org/apache/ JMX/Axis2Console/src/org...

Author: deepal
Date: Thu Sep 22 21:33:22 2005
New Revision: 291073

URL: http://svn.apache.org/viewcvs?rev=291073&view=rev
Log:
Google SC-JMX package for Axis2 , committing latest update (Chathuras' update) 

Added:
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/build.xml
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/images/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/images/asf-logo.gif   (with props)
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/images/axis.jpg   (with props)
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Axis2Console.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Exporter.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Importer.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Login.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/ModuleAgent.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/OperationAgent.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/ServiceAgent.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/TransportInAgent.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/TransportOutAgent.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/web.xml
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/ReadMe_JMX.txt
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/build.xml
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/apache/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/apache/axis2/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/apache/axis2/management/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/apache/axis2/management/manager/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/apache/axis2/management/manager/JMXAdmin.class   (with props)
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/apache/axis2/management/manager/JMXAdmin.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/apache/axis2/management/manager/JMXManager.class   (with props)
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/apache/axis2/management/manager/JMXManager.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/apache/axis2/management/mbeans/
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/apache/axis2/management/mbeans/Axis2Manager.class   (with props)
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/management/src/org/apache/axis2/management/mbeans/Axis2Manager.java
    webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/RSS/

Added: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/build.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/build.xml?rev=291073&view=auto
==============================================================================
--- webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/build.xml (added)
+++ webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/build.xml Thu Sep 22 21:33:22 2005
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!-- build file for lesson 1 -->
+
+<project name="tutorial" default="build" basedir=".">
+	<target name="build">
+		
+		<property name="deploydir" value="E:\Tomcat\jakarta-tomcat-5.5.8\webapps"/>
+
+		<javac srcdir="WEB-INF\lib\" includes="**/*.java" />
+
+		<jar jarfile="WEB-INF\lib\axis2console.jar" basedir="WEB-INF\lib\" includes="**/*.class" />
+
+		<jar jarfile="axis2console.war" basedir="." includes="**/*.jar, WEB-INF\web.xml, images\*.*" />
+
+		<copy todir="${deploydir}">
+			<fileset file="axis2console.war" /> 
+		</copy>
+
+
+	</target>
+</project>

Added: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/images/asf-logo.gif
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/images/asf-logo.gif?rev=291073&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/images/asf-logo.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/images/axis.jpg
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/images/axis.jpg?rev=291073&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/images/axis.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Axis2Console.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Axis2Console.java?rev=291073&view=auto
==============================================================================
--- webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Axis2Console.java (added)
+++ webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Axis2Console.java Thu Sep 22 21:33:22 2005
@@ -0,0 +1,235 @@
+package org.apache.axis2.console.main;
+
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.util.StringTokenizer;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import javax.management.ObjectName;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+
+public class Axis2Console extends HttpServlet{
+
+	PrintWriter writer = null;
+	private MBeanServerConnection mbsc = null;
+	private ObjectName axis2MBeanName = null;
+
+	public void init(ServletConfig config) throws ServletException{
+
+	}
+
+	public void doGet(HttpServletRequest request, HttpServletResponse response)
+		throws ServletException, IOException{
+
+			writer = response.getWriter();
+
+			response.setContentType("text/html");
+			response.setHeader("Cache-Control", "no-store");
+
+			PrintWriter out = response.getWriter();
+
+			String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n";
+
+			out.println(docType +
+						"<html>\n" +
+						"<head><title>Axis2Console</title></head>\n" +
+						"<body>");
+
+
+
+			process(request);
+
+			out.println("</body></html>");
+
+	}
+
+
+	public void process(HttpServletRequest request){
+
+		echo("<table width=\"100%\"><tr><td><img src= \"images/asf-logo.gif\" /></td></tr><tr><td align=\"center\"><img src = \"images/axis.jpg\" /></tr><tr><td align=\"center\"><h1>Management Console</h1></tr>");
+
+		try {
+
+			HttpSession session = request.getSession(false);
+			String host = session.getAttribute("host").toString();
+			String port = session.getAttribute("port").toString();
+			JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+host+":"+port+"/axis2");
+			JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
+			mbsc = jmxc.getMBeanServerConnection();
+			axis2MBeanName = new ObjectName("Axis2:type=management.Manager");
+
+			String process = request.getParameter("process");
+			if(process != null) {
+				if(process.equals("parameters")) {
+					processParameters(request);
+				}else if(process.equals("module")) {
+					processModules(request);
+				}else if(process.equals("service")) {
+					processServices(request);
+				}
+			}
+
+			echo("<tr><td><a href=\"importer\">Import Configuration</a> | " +
+				"<a href=\"exporter\">Export Configuration</a> | " +
+				"<a href=\"login\">Log out</a></td></tr>");
+
+			/*
+			echo("<tr><td><hr /><table><tr><td><form action=\"importer\" method=\"get\">");
+			echo("<input type=\"submit\" value=\"Import configuration\" />");
+			echo("</form></td>");
+			echo("<td><form action=\"exporter\" method=\"get\">");
+			echo("<input type=\"submit\" value=\"Export configuration\" /></form></td></tr></table></td></tr>");
+			*/
+
+			displayParameters();
+			displayTransportIns();
+			displayTransportOuts();
+			displayModules();
+			displayServices();
+
+			jmxc.close();
+
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			echo("<tr><td><hr />Exception occured.\n" + e.getMessage() + "</td></tr>");
+		}
+
+	}
+
+	  private void displayParameters() throws Exception {
+			// display global parameters
+			echo("<tr><td><hr /><h2>Axis2 Parameters</h2></td></tr>");
+			echo("<tr><td><form action=\"axis2console\" method=\"get\"><table width=\"50%\">");
+			echo("<input name=\"process\" type=\"hidden\" value=\"parameters\" />");
+			String[] parameters = (String[])mbsc.getAttribute(axis2MBeanName, "globalParameters");
+			for(int i=0; i<parameters.length; i++) {
+				StringTokenizer tokens = new StringTokenizer(parameters[i], ":");
+				String name = tokens.nextToken();
+				String value = tokens.nextToken();
+				echo("<tr><td>"+name+"</td><td>:<input name=\""+name+"\" type=\"text\" value=\""+value+"\" size=\"25\"/></td></tr>");
+			}
+			echo("<tr><td></td><td><input type=\"submit\" value=\"Apply\" /></td></tr>");
+			echo("</table></form></td></tr>");
+	  }
+
+	  private void displayTransportIns() throws Exception {
+			echo("<tr><td><hr /><h2>Transport Ins</h2></td></tr>");
+			echo("<tr><td><table width=\"30%\">");
+			String[] transportIns = (String[])mbsc.getAttribute(axis2MBeanName, "transportIns");
+			for(int i=0; i<transportIns.length; i++) {
+				echo("<tr><td>"+transportIns[i]+
+						"<td><form action=\"transportin\" method=\"get\"><input name=\"transportIn\" type=\"hidden\" value=\""+transportIns[i]+"\"/><input type=\"submit\" value=\"Edit\" /></form></td></tr>");
+			}
+			echo("</table></td></tr>");
+	  }
+
+	private void displayTransportOuts() throws Exception {
+			echo("<tr><td><hr /><h2>Transport Outs</h2></td></tr>");
+			echo("<tr><td><table width=\"30%\">");
+			String[] transportOuts = (String[])mbsc.getAttribute(axis2MBeanName, "transportOuts");
+			for(int i=0; i<transportOuts.length; i++) {
+				echo("<tr><td>"+transportOuts[i]+
+						"<td><form action=\"transportout\" method=\"get\"><input name=\"transportOut\" type=\"hidden\" value=\""+transportOuts[i]+"\"/><input type=\"submit\" value=\"Edit\" /></form></td></tr>");
+			}
+			echo("</table></td></tr>");
+	}
+
+	private void displayModules() throws Exception {
+		echo("<tr><td><hr /><h2>Modules</h2></td></tr>");
+		echo("<tr><td><table width=\"30%\">");
+		String[] modules = (String[])mbsc.getAttribute(axis2MBeanName, "modules");
+		if(modules != null) {
+			for(int i=0; i<modules.length; i++) {
+
+				String[] m_params = {modules[i]};
+				String[] m_sign = {"java.lang.String"};
+				Boolean engaged = (Boolean)mbsc.invoke(axis2MBeanName, "isEngagedGlobally", m_params, m_sign);
+
+				String op = "Engage";
+				if(engaged.booleanValue())
+					op = "Disengage";
+
+				echo("<tr><td>"+modules[i]+
+						"</td><td><form action=\"axis2console\" method=\"get\"><input name=\"process\" type=\"hidden\" value=\"module\" /><input name=\"module\" type=\"hidden\" value=\""+modules[i]+"\"/><input name=\"operation\" type=\"hidden\" value=\""+op+"\"/><input type=\"submit\" value=\""+op+"\" /></form></td>"+
+						"<td><form action=\"module\" method=\"get\"><input name=\"module\" type=\"hidden\" value=\""+modules[i]+"\"/><input type=\"submit\" value=\"Edit\" /></form></td></tr>");
+			}
+		} else {
+			echo("<tr><td>No modules are deployed.</td></tr>");
+		}
+
+		echo("</table></td></tr>");
+	}
+
+	private void displayServices() throws Exception {
+		echo("<tr><td><hr /><h2>Services</h2></td></tr>");
+		echo("<tr><td><table width=\"30%\">");
+		String[] services = (String[])mbsc.getAttribute(axis2MBeanName, "services");
+		if(services != null) {
+			for(int i=0; i<services.length; i++) {
+				echo("<tr><td>"+services[i]+
+						"</td><td><form action=\"axis2console\" method=\"get\"><input name=\"process\" type=\"hidden\" value=\"service\"/><input name=\"service\" type=\"hidden\" value=\""+services[i]+"\"/><input name=\"operation\" type=\"hidden\" value=\"deactivate\"/><input type=\"submit\" value=\"Remove\" /></form></td>"+
+						"<td><form action=\"service\" method=\"get\"><input name=\"service\" type=\"hidden\" value=\""+services[i]+"\"/><input type=\"submit\" value=\"Edit\" /></form></td></tr>");
+			}
+		} else {
+			echo("<tr><td>No services are deployed.</td></tr>");
+		}
+
+	}
+
+	private void processParameters(HttpServletRequest request) throws Exception {
+		String[] parameters = (String[])mbsc.getAttribute(axis2MBeanName, "globalParameters");
+		for(int i=0; i<parameters.length; i++) {
+			StringTokenizer tokens = new StringTokenizer(parameters[i], ":");
+			String name = tokens.nextToken();
+			String value = tokens.nextToken();
+
+			String[] params = {name, request.getParameter(name)};
+			String[] sign = {"java.lang.String", "java.lang.String"};
+			mbsc.invoke(axis2MBeanName, "editGlobalParameter", params, sign);
+		}
+	}
+
+	private void processModules(HttpServletRequest request) throws Exception {
+		String module = request.getParameter("module");
+		String operation = request.getParameter("operation");
+
+		String[] params = {module};
+		String[] sign = {"java.lang.String"};
+
+		if(operation.equals("Engage")){
+			mbsc.invoke(axis2MBeanName, "engageModuleGlobally", params, sign);
+		}
+		else if(operation.equals("Disengage")){
+			mbsc.invoke(axis2MBeanName, "disengageModuleGlobally", params, sign);
+		}
+	}
+
+	private void processServices(HttpServletRequest request) throws Exception {
+		String service = request.getParameter("service");
+		String operation = request.getParameter("operation");
+
+		String[] params = {service};
+		String[] sign = {"java.lang.String"};
+
+		if(operation.equals("activate")){
+			mbsc.invoke(axis2MBeanName, "activateService", params, sign);
+		}
+		else if(operation.equals("deactivate")){
+			mbsc.invoke(axis2MBeanName, "removeService", params, sign);
+		}
+	}
+
+	private void echo(String info){
+	writer.println("<p>" + info + "</p>");
+	}
+
+}
\ No newline at end of file

Added: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Exporter.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Exporter.java?rev=291073&view=auto
==============================================================================
--- webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Exporter.java (added)
+++ webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Exporter.java Thu Sep 22 21:33:22 2005
@@ -0,0 +1,352 @@
+package org.apache.axis2.console.main;
+
+import java.io.PrintWriter;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.StringTokenizer;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Text;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import javax.management.ObjectName;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+
+public class Exporter extends HttpServlet{
+
+	PrintWriter writer = null;
+	private ObjectName axis2MBeanName = null;
+	private MBeanServerConnection mbsc = null;
+
+	public void init(ServletConfig config) throws ServletException{
+
+	}
+
+	public void doGet(HttpServletRequest request, HttpServletResponse response)
+		throws ServletException, IOException{
+
+			writer = response.getWriter();
+
+			response.setContentType("text/html");
+			response.setHeader("Cache-Control", "no-store");
+
+			PrintWriter out = response.getWriter();
+
+			String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n";
+
+			out.println(docType +
+						"<html>\n" +
+						"<head><title>Axis2Console - Exporter</title></head>\n" +
+						"<body>");
+
+
+
+			process(request);
+
+			out.println("</body></html>");
+	}
+
+	private void process(HttpServletRequest req) {
+
+		echo("<table width=\"100%\"><tr><td><img src= \"images/asf-logo.gif\" /></td></tr><tr><td align=\"center\"><img src = \"images/axis.jpg\" /></tr><tr><td align=\"center\"><h1>Management Console</h1></tr>");
+		echo("<tr><td><a href=\"axis2console\">Axis2Console - Home</a></td></tr>");
+		echo("<tr><td><hr /><h1>Axis2 - Configuration Exporter</h1></td></tr>");
+
+		try {
+
+			if(req.getParameter("process") != null) {
+
+				HttpSession session = req.getSession(false);
+				String host = session.getAttribute("host").toString();
+				String port = session.getAttribute("port").toString();
+				JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+host+":"+port+"/axis2");
+				JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
+				mbsc = jmxc.getMBeanServerConnection();
+				axis2MBeanName = new ObjectName("Axis2:type=management.Manager");
+
+				DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+				DocumentBuilder builder = factory.newDocumentBuilder();
+				Document doc = builder.newDocument();
+
+				Element root = doc.createElement("axis2");
+				doc.appendChild(root);
+
+				echo("<tr><td><h2>Progress Report</h2></td></tr>");
+				echo("<tr><td><h3>Remote server</h3><p>IP address: "+host+"</p><p>Port: "+port+"</p>");
+
+				processParameters(doc, root);
+
+				processModules(doc, root);
+
+				processTransportIns(doc, root);
+
+				processTransportOuts(doc, root);
+
+				processServices(doc, root);
+
+				String fileName = req.getParameter("file_name");
+				writeToFile(doc, fileName);
+
+				echo("</tr></td>");
+				echo("</table>");
+
+			} else {
+
+				echo("<tr><td><form action=\"exporter\" method=\"get\">"+
+					"<p>Export to file: <input type=\"text\" name=\"file_name\" /><p>"+
+					"<input type=\"hidden\" name=\"process\" value=\"export\" />"+
+					"<input type=\"submit\" value=\"Export\" /></form></td></tr></table>");
+
+			}
+
+		}catch(Exception e) {
+			echo("<tr><td><hr />Exception occured.\n" + e.getMessage() + "</td></tr>");
+		}
+	}
+
+	 private void echo(String info){
+		writer.println("<p>" + info + "</p>");
+	 }
+
+	 private void writeToFile(Document doc, String fileName) throws Exception{
+
+		 Transformer t = TransformerFactory.newInstance().newTransformer();
+		 t.setOutputProperty("indent", "yes");
+		 t.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(fileName)));
+
+	 }
+
+	 private void processParameters(Document doc, Element root) throws Exception {
+
+		echo("<h3>Axis2 Parameters</h3>");
+		Element gp = doc.createElement("globalparameters");
+		root.appendChild(gp);
+
+		String[] parameters = (String[])mbsc.getAttribute(axis2MBeanName, "globalParameters");
+		echo("Retrieved global parameters from the remote server.");
+
+		for(int i=0; i<parameters.length; i++) {
+			StringTokenizer tokens = new StringTokenizer(parameters[i], ":");
+			String name = tokens.nextToken();
+			String value = tokens.nextToken();
+
+			Element p = doc.createElement("parameter");
+			p.setAttribute("name", name);
+			Text v = doc.createTextNode(value);
+			p.appendChild(v);
+			gp.appendChild(p);
+
+			echo("Exported parameter: " + name + " value: " + value + ".");
+		}
+	}
+
+	private void processModules(Document doc, Element root) throws Exception {
+
+		echo("<h3>Modules</h3>");
+		String[] modules = (String[])mbsc.getAttribute(axis2MBeanName, "modules");
+		echo("Retrieved module information from the remote server.");
+
+		for(int i=0; i<modules.length; i++) {
+
+			Element m = doc.createElement("module");
+			m.setAttribute("name", modules[i]);
+
+			String[] params = {modules[i]};
+			String[] sign = {"java.lang.String"};
+			Boolean engaged = (Boolean)mbsc.invoke(axis2MBeanName, "isEngagedGlobally", params, sign);
+			String sEngaged = "false";
+			if(engaged.booleanValue())
+				sEngaged = "true";
+			Element e = doc.createElement("engaged");
+			Text val = doc.createTextNode(sEngaged);
+			e.appendChild(val);
+			m.appendChild(e);
+
+			String[] p_parameters = (String[])mbsc.invoke(axis2MBeanName, "getModuleParameters", params, sign);
+
+			for(int k=0; k<p_parameters.length; k++) {
+				StringTokenizer tokens = new StringTokenizer(p_parameters[k], ":");
+				String name = tokens.nextToken();
+				String value = tokens.nextToken();
+
+				Element p = doc.createElement("parameter");
+				p.setAttribute("name", name);
+				Text v = doc.createTextNode(value);
+				p.appendChild(v);
+				m.appendChild(p);
+			}
+
+			root.appendChild(m);
+			echo("Exported module configuration of module: " + modules[i]);
+		}
+	}
+
+	private void processTransportIns(Document doc, Element root) throws Exception {
+
+		echo("<h3>TransportIns</h3>");
+		String[] transportIns = (String[])mbsc.getAttribute(axis2MBeanName, "transportIns");
+		echo("Retrieved TransportIn information from the remote server.");
+
+		for(int i=0; i<transportIns.length; i++) {
+
+			Element t = doc.createElement("transportIn");
+			t.setAttribute("name", transportIns[i]);
+
+			String[] params = {transportIns[i]};
+			String[] sign = {"java.lang.String"};
+			String[] p_parameters = (String[])mbsc.invoke(axis2MBeanName, "getTransportInParameters", params, sign);
+
+			for(int k=0; k<p_parameters.length; k++) {
+				StringTokenizer tokens = new StringTokenizer(p_parameters[k], ":");
+				String name = tokens.nextToken();
+				String value = tokens.nextToken();
+
+				Element p = doc.createElement("parameter");
+				p.setAttribute("name", name);
+				Text v = doc.createTextNode(value);
+				p.appendChild(v);
+				t.appendChild(p);
+			}
+
+			root.appendChild(t);
+			echo("Exported TransportIn configuration of TransportIn: " + transportIns[i]);
+		}
+	}
+
+	private void processTransportOuts(Document doc, Element root) throws Exception {
+
+		echo("<h3>TransportOuts</h3>");
+		String[] transportOuts = (String[])mbsc.getAttribute(axis2MBeanName, "transportOuts");
+		echo("Retrieved TransportOut information from the remote server.");
+
+		for(int i=0; i<transportOuts.length; i++) {
+
+			Element t = doc.createElement("transportOut");
+			t.setAttribute("name", transportOuts[i]);
+
+			String[] params = {transportOuts[i]};
+			String[] sign = {"java.lang.String"};
+			String[] p_parameters = (String[])mbsc.invoke(axis2MBeanName, "getTransportOutParameters", params, sign);
+
+			for(int k=0; k<p_parameters.length; k++) {
+				StringTokenizer tokens = new StringTokenizer(p_parameters[k], ":");
+				String name = tokens.nextToken();
+				String value = tokens.nextToken();
+
+				Element p = doc.createElement("parameter");
+				p.setAttribute("name", name);
+				Text v = doc.createTextNode(value);
+				p.appendChild(v);
+				t.appendChild(p);
+			}
+
+			root.appendChild(t);
+			echo("Exported TransportOut configuration of TransportOut: " + transportOuts[i]);
+		}
+	}
+
+	private void processServices(Document doc, Element root) throws Exception {
+
+		echo("<h3>Services</h3>");
+		String[] services = (String[])mbsc.getAttribute(axis2MBeanName, "services");
+		echo("Retrieved service information from the remote server.");
+
+		for(int i=0; i<services.length; i++) {
+
+			Element s = doc.createElement("service");
+			s.setAttribute("name", services[i]);
+
+			String[] params = {services[i]};
+			String[] sign = {"java.lang.String"};
+			String[] p_parameters = (String[])mbsc.invoke(axis2MBeanName, "getServiceParameters", params, sign);
+
+			for(int k=0; k<p_parameters.length; k++) {
+				StringTokenizer tokens = new StringTokenizer(p_parameters[k], ":");
+				String name = tokens.nextToken();
+				String value = tokens.nextToken();
+
+				Element p = doc.createElement("parameter");
+				p.setAttribute("name", name);
+				Text v = doc.createTextNode(value);
+				p.appendChild(v);
+				s.appendChild(p);
+			}
+
+			String[] params2 = {services[i]};
+			String[] sign2 = {"java.lang.String"};
+			String[] engagedModules = (String[])mbsc.invoke(axis2MBeanName, "getServiceEngagedModules", params2, sign2);
+
+			for(int k=0; k<engagedModules.length; k++) {
+				Element e = doc.createElement("module");
+				Text v = doc.createTextNode(engagedModules[k]);
+				e.appendChild(v);
+				s.appendChild(e);
+			}
+
+			processOperations(services[i], doc, s);
+
+			root.appendChild(s);
+			echo("Exported service configuration of service: " + services[i]);
+
+		}
+	}
+
+	private void processOperations(String service, Document doc, Element root) throws Exception {
+			String[] params = {service};
+			String[] sign = {"java.lang.String"};
+			String[] operations = (String[])mbsc.invoke(axis2MBeanName, "getOperations", params, sign);
+
+			for(int i=0; i<operations.length; i++) {
+
+				Element op = doc.createElement("operation");
+				op.setAttribute("name", operations[i]);
+
+				String[] params2 = {service, operations[i]};
+				String[] sign2 = {"java.lang.String", "java.lang.String"};
+				String[] p_parameters = (String[])mbsc.invoke(axis2MBeanName, "getOperationParameters", params2, sign2);
+
+				for(int k=0; k<p_parameters.length; k++) {
+					StringTokenizer tokens = new StringTokenizer(p_parameters[k], ":");
+					String name = tokens.nextToken();
+					String value = tokens.nextToken();
+
+					Element p = doc.createElement("parameter");
+					p.setAttribute("name", name);
+					Text v = doc.createTextNode(value);
+					p.appendChild(v);
+					op.appendChild(p);
+				}
+
+				String[] params3 = {service, operations[i]};
+				String[] sign3 = {"java.lang.String", "java.lang.String"};
+				String[] engagedModules = (String[])mbsc.invoke(axis2MBeanName, "getOperationEngagedModules", params3, sign3);
+
+				for(int k=0; k<engagedModules.length; k++) {
+					Element e = doc.createElement("module");
+					Text v = doc.createTextNode(engagedModules[k]);
+					e.appendChild(v);
+					op.appendChild(e);
+				}
+
+				root.appendChild(op);
+
+			}
+	}
+}
\ No newline at end of file

Added: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Importer.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Importer.java?rev=291073&view=auto
==============================================================================
--- webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Importer.java (added)
+++ webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Importer.java Thu Sep 22 21:33:22 2005
@@ -0,0 +1,536 @@
+package org.apache.axis2.console.main;
+
+import java.io.PrintWriter;
+import java.io.FileOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Text;
+import org.w3c.dom.NodeList;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import javax.management.ObjectName;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+
+public class Importer extends HttpServlet{
+
+	PrintWriter writer = null;
+	private ObjectName axis2MBeanName = null;
+	private MBeanServerConnection mbsc = null;
+	private ArrayList globallyEngagedModules = new ArrayList();
+
+	public void init(ServletConfig config) throws ServletException{
+
+	}
+
+	public void doGet(HttpServletRequest request, HttpServletResponse response)
+		throws ServletException, IOException{
+
+			writer = response.getWriter();
+
+			response.setContentType("text/html");
+			response.setHeader("Cache-Control", "no-store");
+
+			PrintWriter out = response.getWriter();
+
+			String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n";
+
+			out.println(docType +
+						"<html>\n" +
+						"<head><title>Axis2Console - Importer</title></head>\n" +
+						"<body>");
+
+
+
+			process(request);
+
+			out.println("</body></html>");
+	}
+
+	private void process(HttpServletRequest req) {
+
+		echo("<table width=\"100%\"><tr><td><img src= \"images/asf-logo.gif\" /></td></tr><tr><td align=\"center\"><img src = \"images/axis.jpg\" /></tr><tr><td align=\"center\"><h1>Management Console</h1></tr>");
+		echo("<tr><td><a href=\"axis2console\">Axis2Console - Home</a></td></tr>");
+		echo("<tr><td><hr /><h1>Axis2 - Configuration Importer</h1></td></tr>");
+
+		try {
+
+			if(req.getParameter("process") != null) {
+
+				echo("<tr><td><h2>Progress Report</h2></td></tr><tr><td>");
+
+				HttpSession session = req.getSession(false);
+				String host = session.getAttribute("host").toString();
+				String port = session.getAttribute("port").toString();
+				JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+host+":"+port+"/axis2");
+				JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
+				mbsc = jmxc.getMBeanServerConnection();
+				axis2MBeanName = new ObjectName("Axis2:type=management.Manager");
+
+				DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+				DocumentBuilder builder = factory.newDocumentBuilder();
+
+				String fileName = req.getParameter("file_name");
+				Document doc = builder.parse(new File(fileName));
+
+				Element root = doc.getDocumentElement();
+
+				echo("<h3>Remote server</h3><p>IP address: "+host+"</p><p>Port: "+port+"</p>");
+
+				processParameters(doc, root);
+
+				processModules(doc, root);
+
+				processTransportIns(doc, root);
+
+				processTransportOuts(doc, root);
+
+				processServices(doc, root);
+
+				echo("</tr></td>");
+				echo("</table>");
+
+			} else {
+
+				echo("<tr><td><form action=\"importer\" method=\"get\">"+
+					"<p>Import from file: <input type=\"text\" name=\"file_name\" /><p>"+
+					"<input type=\"hidden\" name=\"process\" value=\"export\" />"+
+					"<input type=\"submit\" value=\"Import\" /></form></td></tr></table>");
+
+			}
+
+		}catch(Exception e) {
+			echo("<tr><td><hr />Exception occured.\n" + e.getMessage() + "</td></tr>");
+		}
+	}
+
+	 private void echo(String info){
+		writer.println("<p>" + info + "</p>");
+	 }
+
+	private void processParameters(Document doc, Element root) throws Exception {
+
+		echo("<h3>Axis2 Parameters</h3>");
+		NodeList gplist = root.getElementsByTagName("globalparameters");
+		Element gp = (Element)gplist.item(0);
+		NodeList plist = gp.getElementsByTagName("parameter");
+
+		for(int i=0; i<plist.getLength(); i++) {
+			Element p = (Element)plist.item(i);
+			String pname = p.getAttribute("name");
+			Text v = (Text)p.getFirstChild();
+			String pvalue = v.getData().trim();
+
+			// check if the parameter is available
+			String[] params1 = {pname};
+			String[] sign1 = {"java.lang.String"};
+			Boolean available = (Boolean)mbsc.invoke(axis2MBeanName, "isGlobalParameter", params1, sign1);
+
+			if(available.booleanValue()) {
+				String[] params2 = {pname, pvalue};
+				String[] sign2 = {"java.lang.String", "java.lang.String"};
+				mbsc.invoke(axis2MBeanName, "editGlobalParameter", params2, sign2);
+				echo("Paramter: "+pname+" set to value: "+pvalue+".");
+
+			} else {
+				echo("Paramter: "+pname+" is not available in the target server.");
+
+				// TO DO: give more options
+
+				String[] params2 = {pname, pvalue};
+				String[] sign2 = {"java.lang.String", "java.lang.String"};
+				mbsc.invoke(axis2MBeanName, "addGlobalParameter", params2, sign2);
+				echo("Added paramter: "+pname+" with value: "+pvalue+".");
+
+			}
+		}
+	}
+
+	private void processModules(Document doc, Element root) throws Exception {
+
+		echo("<h3>Modules</h3>");
+		NodeList mlist = root.getElementsByTagName("module");
+		ArrayList specifiedModules = new ArrayList();
+		for(int i=0; i<mlist.getLength(); i++) {
+			Element m = (Element)mlist.item(i);
+			String moduleName = m.getAttribute("name");
+			specifiedModules.add(moduleName);
+
+			// check if the module is available
+			String[] params1 = {moduleName};
+			String[] sign1 = {"java.lang.String"};
+			Boolean available = (Boolean)mbsc.invoke(axis2MBeanName, "isModuleAvailable", params1, sign1);
+
+			if(available.booleanValue()) {
+
+				// check if the module should be engaged globally
+				NodeList engagedlist = m.getElementsByTagName("engaged");
+				Element engaged = (Element)engagedlist.item(0);
+				Text v = (Text)engaged.getFirstChild();
+				String evalue = v.getData().trim();
+
+				if(evalue.equals("true")) {
+					globallyEngagedModules.add(moduleName);
+				}
+
+				// check if the module is already engaged
+				String[] params2 = {moduleName};
+				String[] sign2 = {"java.lang.String"};
+				Boolean isEngaged = (Boolean)mbsc.invoke(axis2MBeanName, "isEngagedGlobally", params2, sign2);
+
+				if(evalue.equals("true") && isEngaged.booleanValue() == false) {
+					// module should be engaged globally
+					String[] params3 = {moduleName};
+					String[] sign3 = {"java.lang.String"};
+					mbsc.invoke(axis2MBeanName, "engageModuleGlobally", params3, sign3);
+
+				} else if(evalue.equals("false") && isEngaged.booleanValue() == true) {
+					// module should be disengaged globally
+					String[] params3 = {moduleName};
+					String[] sign3 = {"java.lang.String"};
+					mbsc.invoke(axis2MBeanName, "disengageModuleGlobally", params3, sign3);
+
+				}
+
+				// process module parameters
+				NodeList plist = m.getElementsByTagName("parameter");
+
+				for(int k=0; i<plist.getLength(); k++) {
+					Element p = (Element)plist.item(k);
+					String pname = p.getAttribute("name");
+					Text val = (Text)p.getFirstChild();
+					String pvalue = val.getData().trim();
+
+					// check if the parameter is available
+					String[] params4 = {moduleName, pname};
+					String[] sign4 = {"java.lang.String", "java.lang.String"};
+					Boolean ParamAvailable = (Boolean)mbsc.invoke(axis2MBeanName, "isModuleParameter", params4, sign4);
+
+					if(ParamAvailable.booleanValue()) {
+						String[] params5 = {moduleName, pname, pvalue};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "editModuleParameter", params5, sign5);
+					} else {
+
+						// TO DO: give more options
+
+						String[] params5 = {moduleName, pname, pvalue};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "addModuleParameter", params5, sign5);
+					}
+				}
+
+				echo("Module configuration imported to the module: "+ moduleName);
+
+			} else {
+				echo("Module: "+moduleName+" is not available in the target server.");
+
+				// TO DO: specified module is not available in the target server. give options
+
+			}
+		}
+
+		// TO DO: compare all modules available at target server with the specified modules list.
+		// and disengage, remove or keep as it is all unspecified modules
+	}
+
+
+	private void processTransportIns(Document doc, Element root) throws Exception {
+
+		echo("<h3>TransportIns</h3>");
+		NodeList mlist = root.getElementsByTagName("transportIn");
+		for(int i=0; i<mlist.getLength(); i++) {
+			Element t = (Element)mlist.item(i);
+			String transportInName = t.getAttribute("name");
+
+			// check if the transportIn is available
+			String[] params1 = {transportInName};
+			String[] sign1 = {"java.lang.String"};
+			Boolean available = (Boolean)mbsc.invoke(axis2MBeanName, "isTransportInAvailable", params1, sign1);
+
+			if(available.booleanValue()) {
+
+				// process transportIn parameters
+				NodeList plist = t.getElementsByTagName("parameter");
+
+				for(int k=0; k<plist.getLength(); k++) {
+					Element p = (Element)plist.item(k);
+					String pname = p.getAttribute("name");
+					Text val = (Text)p.getFirstChild();
+					String pvalue = val.getData().trim();
+
+					// check if the parameter is available
+					String[] params4 = {transportInName, pname};
+					String[] sign4 = {"java.lang.String", "java.lang.String"};
+					Boolean ParamAvailable = (Boolean)mbsc.invoke(axis2MBeanName, "isTransportInParameter", params4, sign4);
+
+					if(ParamAvailable.booleanValue()) {
+						String[] params5 = {transportInName, pname, pvalue};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "editTransportInParameter", params5, sign5);
+					} else {
+
+						// TO DO: give more options
+
+						String[] params5 = {transportInName, pname, pvalue};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "addTransportInParameter", params5, sign5);
+					}
+				}
+				echo("TranportIn configuration imported to the TransportIn: "+ transportInName);
+
+			} else {
+				echo("TranportIn: "+transportInName+" is not available in the target server.");
+
+				// TO DO: specified transportIn is not available in the target server. give options
+
+			}
+		}
+	}
+
+
+	private void processTransportOuts(Document doc, Element root) throws Exception {
+
+		echo("<h3>TransportOuts</h3>");
+		NodeList mlist = root.getElementsByTagName("transportOut");
+		for(int i=0; i<mlist.getLength(); i++) {
+			Element t = (Element)mlist.item(i);
+			String transportOutName = t.getAttribute("name");
+
+			// check if the transportOut is available
+			String[] params1 = {transportOutName};
+			String[] sign1 = {"java.lang.String"};
+			Boolean available = (Boolean)mbsc.invoke(axis2MBeanName, "isTransportOutAvailable", params1, sign1);
+
+			if(available.booleanValue()) {
+
+				// process transportOut parameters
+				NodeList plist = t.getElementsByTagName("parameter");
+
+				for(int k=0; k<plist.getLength(); k++) {
+					Element p = (Element)plist.item(k);
+					String pname = p.getAttribute("name");
+					Text val = (Text)p.getFirstChild();
+					String pvalue = val.getData().trim();
+
+					// check if the parameter is available
+					String[] params4 = {transportOutName, pname};
+					String[] sign4 = {"java.lang.String", "java.lang.String"};
+					Boolean ParamAvailable = (Boolean)mbsc.invoke(axis2MBeanName, "isTransportOutParameter", params4, sign4);
+
+					if(ParamAvailable.booleanValue()) {
+						String[] params5 = {transportOutName, pname, pvalue};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "editTransportOutParameter", params5, sign5);
+					} else {
+
+						// TO DO: give more options
+
+						String[] params5 = {transportOutName, pname, pvalue};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "addTransportOutParameter", params5, sign5);
+					}
+				}
+				echo("TranportOut configuration imported to the TransportOut: "+ transportOutName);
+
+			} else {
+				echo("TranportOut: "+transportOutName+" is not available in the target server.");
+
+				// TO DO: specified transportOut is not available in the target server. give options
+
+			}
+		}
+	}
+
+
+	private void processServices(Document doc, Element root) throws Exception {
+
+		echo("<h3>Services</h3>");
+		NodeList mlist = root.getElementsByTagName("service");
+		for(int i=0; i<mlist.getLength(); i++) {
+			Element s = (Element)mlist.item(i);
+			String serviceName = s.getAttribute("name");
+
+			// check if the service is available
+			String[] params1 = {serviceName};
+			String[] sign1 = {"java.lang.String"};
+			Boolean available = (Boolean)mbsc.invoke(axis2MBeanName, "isServiceAvailable", params1, sign1);
+
+			if(available.booleanValue()) {
+
+				// process service parameters
+				NodeList plist = s.getElementsByTagName("parameter");
+
+				for(int k=0; k<plist.getLength(); k++) {
+					Element p = (Element)plist.item(k);
+					String pname = p.getAttribute("name");
+					Text val = (Text)p.getFirstChild();
+					String pvalue = val.getData().trim();
+
+					// check if the parameter is available
+					String[] params4 = {serviceName, pname};
+					String[] sign4 = {"java.lang.String", "java.lang.String"};
+					Boolean ParamAvailable = (Boolean)mbsc.invoke(axis2MBeanName, "isServiceParameter", params4, sign4);
+
+					if(ParamAvailable.booleanValue()) {
+						String[] params5 = {serviceName, pname, pvalue};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "editServiceParameter", params5, sign5);
+					} else {
+
+						// TO DO: give more options
+
+						String[] params5 = {serviceName, pname, pvalue};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "addServiceParameter", params5, sign5);
+					}
+				}
+
+				// process modules for this service
+				ArrayList specModulesForService = new ArrayList();
+
+				// engage modules
+				NodeList moduleNodeList = s.getElementsByTagName("module");
+				for(int k=0; k<moduleNodeList.getLength(); k++) {
+					Element m = (Element)moduleNodeList.item(k);
+					Text val = (Text)m.getFirstChild();
+					String mvalue = val.getData().trim();
+					specModulesForService.add(mvalue);
+
+					if(!globallyEngagedModules.contains(mvalue)) {
+						// module is not globally engaged. so we have to engage it to service.
+
+						String[] params5 = {mvalue, serviceName};
+						String[] sign5 = {"java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "engageModuleToService", params5, sign5);
+					}
+				}
+
+				// disengage modules
+				for(int k=0; k<globallyEngagedModules.size(); k++) {
+					String globalModule = (String)globallyEngagedModules.get(k);
+					if(!specModulesForService.contains(globalModule)) {
+						// this globally engaged module is not engaged for this service. so disengage it.
+
+						String[] params5 = {globalModule, serviceName};
+						String[] sign5 = {"java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "disengageModuleFromService", params5, sign5);
+					}
+				}
+
+
+				// process operations
+				processOperations(serviceName, specModulesForService, doc, s);
+
+				echo("Service configuration imported to the Service: "+ serviceName);
+
+			} else {
+				echo("Service: "+serviceName+" is not available in the target server.");
+
+				// TO DO: specified service is not available in the target server. give options
+
+			}
+		}
+	}
+
+
+	private void processOperations(String serviceName, ArrayList serviceModules, Document doc, Element root) throws Exception {
+		NodeList mlist = root.getElementsByTagName("operation");
+		for(int i=0; i<mlist.getLength(); i++) {
+			Element op = (Element)mlist.item(i);
+			String operationName = op.getAttribute("name");
+
+			// check if the operation is available
+			String[] params1 = {serviceName, operationName};
+			String[] sign1 = {"java.lang.String", "java.lang.String"};
+			Boolean available = (Boolean)mbsc.invoke(axis2MBeanName, "isOperationAvailable", params1, sign1);
+
+			if(available.booleanValue()) {
+
+				// process operation parameters
+				NodeList plist = op.getElementsByTagName("parameter");
+
+				for(int k=0; k<plist.getLength(); k++) {
+					Element p = (Element)plist.item(k);
+					String pname = p.getAttribute("name");
+					Text val = (Text)p.getFirstChild();
+					String pvalue = val.getData().trim();
+
+					// check if the parameter is available
+					String[] params4 = {serviceName, operationName, pname};
+					String[] sign4 = {"java.lang.String", "java.lang.String", "java.lang.String"};
+					Boolean ParamAvailable = (Boolean)mbsc.invoke(axis2MBeanName, "isOperationParameter", params4, sign4);
+
+					if(ParamAvailable.booleanValue()) {
+						String[] params5 = {serviceName, operationName, pname, pvalue};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "editOperationParameter", params5, sign5);
+					} else {
+
+						// TO DO: give more options
+
+						String[] params5 = {serviceName, operationName, pname, pvalue};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "addOperationParameter", params5, sign5);
+					}
+				}
+
+				// process modules for this service
+				ArrayList specModulesForOperation = new ArrayList();
+
+				// engage modules
+				NodeList moduleNodeList = op.getElementsByTagName("module");
+				for(int k=0; k<moduleNodeList.getLength(); k++) {
+					Element m = (Element)moduleNodeList.item(k);
+					Text val = (Text)m.getFirstChild();
+					String mvalue = val.getData().trim();
+					specModulesForOperation.add(mvalue);
+
+					if(!serviceModules.contains(mvalue)) {
+						// module is not engaged in service level. so we have to engage it to this operation.
+
+						String[] params5 = {mvalue, serviceName, operationName};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "engageModuleToOperation", params5, sign5);
+					}
+				}
+
+				// disengage modules
+				for(int k=0; k<serviceModules.size(); k++) {
+					String serviceModule = (String)serviceModules.get(k);
+					if(!specModulesForOperation.contains(serviceModule)) {
+						// this service engaged module should not be engaged for this operation. so disengage it.
+
+						String[] params5 = {serviceModule, serviceName, operationName};
+						String[] sign5 = {"java.lang.String", "java.lang.String", "java.lang.String"};
+						mbsc.invoke(axis2MBeanName, "disengageModuleFromOperation", params5, sign5);
+					}
+				}
+
+			} else {
+				// TO DO: specified operation is not available in the target server. give options
+
+			}
+		}
+	}
+}
\ No newline at end of file

Added: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Login.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Login.java?rev=291073&view=auto
==============================================================================
--- webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Login.java (added)
+++ webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/Login.java Thu Sep 22 21:33:22 2005
@@ -0,0 +1,83 @@
+package org.apache.axis2.console.main;
+
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.util.StringTokenizer;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import javax.management.ObjectName;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+
+public class Login extends HttpServlet{
+
+	PrintWriter writer = null;
+
+	public void init(ServletConfig config) throws ServletException{
+
+	}
+
+	public void doGet(HttpServletRequest request, HttpServletResponse response)
+		throws ServletException, IOException{
+
+			HttpSession session = request.getSession(true);
+			session.setAttribute("host", "");
+			session.setAttribute("port", "");
+
+			writer = response.getWriter();
+
+			response.setContentType("text/html");
+			response.setHeader("Cache-Control", "no-store");
+
+			PrintWriter out = response.getWriter();
+
+			String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n";
+
+			out.println(docType +
+						"<html>\n" +
+						"<head><title>Axis2Console</title></head>\n" +
+						"<body>");
+
+
+
+			process(request, response);
+
+			out.println("</body></html>");
+	}
+
+	private void echo(String info){
+		writer.println("<p>" + info + "</p>");
+	}
+
+	private void process(HttpServletRequest request, HttpServletResponse response) {
+
+		try {
+			if(request.getParameter("process") != null) {
+				String host = request.getParameter("host");
+				String port = request.getParameter("port");
+				HttpSession session = request.getSession(true);
+				session.setAttribute("host", host);
+				session.setAttribute("port", port);
+				response.sendRedirect("axis2console");
+			}
+
+			echo("<table width=\"100%\"><tr><td><img src= \"images/asf-logo.gif\" /></td></tr><tr><td align=\"center\"><img src = \"images/axis.jpg\" /></tr><tr><td align=\"center\"><h1>Management Console</h1></tr>");
+			echo("<tr><td><hr /><form action=\"login\" method=\"get\">");
+			echo("<table><tr><td>Host</td><td><input name=\"host\" type=\"text\" /></td></tr>");
+			echo("<tr><td>Port</td><td><input name=\"port\" type=\"text\" /></td></tr>");
+			echo("<input name=\"process\" type=\"hidden\" value=\"connect\"/>");
+			echo("<tr><td></td><td><input type=\"submit\" value=\"Login\" /></td></tr></table></form></td></tr></table>");
+
+		}catch(Exception e) {
+			echo("<tr><td><hr />Exception occured.\n" + e.getMessage() + "</td></tr>");
+		}
+	}
+}
\ No newline at end of file

Added: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/ModuleAgent.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/ModuleAgent.java?rev=291073&view=auto
==============================================================================
--- webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/ModuleAgent.java (added)
+++ webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/ModuleAgent.java Thu Sep 22 21:33:22 2005
@@ -0,0 +1,119 @@
+package org.apache.axis2.console.main;
+
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.util.StringTokenizer;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import javax.management.ObjectName;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+
+public class ModuleAgent extends HttpServlet{
+
+	PrintWriter writer = null;
+	private MBeanServerConnection mbsc = null;
+	private ObjectName axis2MBeanName = null;
+
+	public void init(ServletConfig config) throws ServletException{
+
+	}
+
+	private void echo(String info){
+			writer.println("<p>" + info + "</p>");
+	}
+
+	public void doGet(HttpServletRequest request, HttpServletResponse response)
+		throws ServletException, IOException{
+
+			writer = response.getWriter();
+
+			response.setContentType("text/html");
+			response.setHeader("Cache-Control", "no-store");
+
+			PrintWriter out = response.getWriter();
+
+			String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n";
+
+			out.println(docType +
+						"<html>\n" +
+						"<head><title>Axis2Console - Module Agent</title></head>\n" +
+						"<body>");
+
+			process(request);
+
+			out.println("</body></html>");
+	}
+
+	private void process(HttpServletRequest req) {
+
+		echo("<table width=\"100%\"><tr><td><img src= \"images/asf-logo.gif\" /></td></tr><tr><td align=\"center\"><img src = \"images/axis.jpg\" /></tr><tr><td align=\"center\"><h1>Management Console</h1></tr>");
+		echo("<tr><td><a href=\"axis2console\">Axis2Console - Home</a></td></tr>");
+
+		try {
+
+			String module = req.getParameter("module");
+			echo("<tr><td><hr /><h1>Module: "+module+"</h1></td></tr>");
+
+			HttpSession session = req.getSession(false);
+			String host = session.getAttribute("host").toString();
+			String port = session.getAttribute("port").toString();
+			JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+host+":"+port+"/axis2");
+			JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
+			mbsc = jmxc.getMBeanServerConnection();
+			axis2MBeanName = new ObjectName("Axis2:type=management.Manager");
+
+			if(req.getParameter("process") != null) {
+
+				String[] params = {module};
+				String[] sign = {"java.lang.String"};
+				String[] p_parameters = (String[])mbsc.invoke(axis2MBeanName, "getModuleParameters", params, sign);
+
+				for(int i=0; i<p_parameters.length; i++) {
+					StringTokenizer tokens = new StringTokenizer(p_parameters[i], ":");
+					String name = tokens.nextToken();
+					String value = tokens.nextToken();
+
+					String[] editParams = {module, name, req.getParameter(name)};
+					String[] editSign = {"java.lang.String", "java.lang.String", "java.lang.String"};
+					mbsc.invoke(axis2MBeanName, "editModuleParameter", editParams, editSign);
+				}
+			}
+
+			echo("<tr><td><hr /><h2>Module Parameters</h2></td></tr>");
+
+			String[] params = {module};
+			String[] sign = {"java.lang.String"};
+			String[] parameters = (String[])mbsc.invoke(axis2MBeanName, "getModuleParameters", params, sign);
+
+			if(parameters.length==0) {
+				echo("<tr><td>No parameters found for this module.</td></tr>");
+			}
+			else {
+				echo("<tr><td><form action=\"axis2console\" method=\"get\"><table width=\"50%\">");
+				echo("<input name=\"module\" type=\"hidden\" value=\""+module+"\" />");
+				echo("<input name=\"process\" type=\"hidden\" value=\"true\" />");
+
+				for(int i=0; i<parameters.length; i++) {
+					StringTokenizer tokens = new StringTokenizer(parameters[i], ":");
+					String name = tokens.nextToken();
+					String value = tokens.nextToken();
+					echo("<tr><td>"+name+"</td><td>:<input name=\""+name+"\" type=\"text\" value=\""+value+"\" size=\"25\"/></td></tr>");
+				}
+				echo("<tr><td></td><td><input type=\"submit\" value=\"Apply\" /></td></tr>");
+				echo("</table></form></td></tr>");
+			}
+
+		}catch(Exception e) {
+			echo("<tr><td><hr />Exception occured.\n" + e.getMessage() + "</td></tr>");
+		}
+	}
+}
\ No newline at end of file

Added: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/OperationAgent.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/OperationAgent.java?rev=291073&view=auto
==============================================================================
--- webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/OperationAgent.java (added)
+++ webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/OperationAgent.java Thu Sep 22 21:33:22 2005
@@ -0,0 +1,192 @@
+package org.apache.axis2.console.main;
+
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import javax.management.ObjectName;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+
+public class OperationAgent extends HttpServlet{
+
+	PrintWriter writer = null;
+	private MBeanServerConnection mbsc = null;
+	private ObjectName axis2MBeanName = null;
+
+	public void init(ServletConfig config) throws ServletException{
+
+	}
+
+	private void echo(String info){
+			writer.println("<p>" + info + "</p>");
+	}
+
+	public void doGet(HttpServletRequest request, HttpServletResponse response)
+		throws ServletException, IOException{
+
+			writer = response.getWriter();
+
+			response.setContentType("text/html");
+			response.setHeader("Cache-Control", "no-store");
+
+			PrintWriter out = response.getWriter();
+
+			String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n";
+
+			out.println(docType +
+						"<html>\n" +
+						"<head><title>Axis2Console - Operation Agent</title></head>\n" +
+						"<body>");
+
+			process(request);
+
+			out.println("</body></html>");
+	}
+
+	private void process(HttpServletRequest req) {
+
+		echo("<table width=\"100%\"><tr><td><img src= \"images/asf-logo.gif\" /></td></tr><tr><td align=\"center\"><img src = \"images/axis.jpg\" /></tr><tr><td align=\"center\"><h1>Management Console</h1></tr>");
+
+		try {
+			String service = req.getParameter("service");
+			String op = req.getParameter("operation_name");
+			echo("<tr><td><a href=\"axis2console\">Axis2Console - Home</a> | " +
+				"<a href=\"service?service="+service+"\">Service - "+service+"</a></td></tr>");
+			echo("<tr><td><hr /><h1>Operation: "+op+"</h1></td></tr>");
+
+			HttpSession session = req.getSession(false);
+			String host = session.getAttribute("host").toString();
+			String port = session.getAttribute("port").toString();
+			JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+host+":"+port+"/axis2");
+			JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
+			mbsc = jmxc.getMBeanServerConnection();
+			axis2MBeanName = new ObjectName("Axis2:type=management.Manager");
+
+			String process = req.getParameter("process");
+			if(process != null) {
+				if(process.equals("parameters")) {
+					processParameters(service, op, req);
+				} else if(process.equals("module")) {
+					processModule(service, op, req);
+				}
+			}
+
+
+			displayParameters(service, op);
+			displayModules(service, op);
+
+		}catch(Exception e) {
+			echo("<tr><td><hr />Exception occured.\n" + e.getMessage() + "</td></tr>");
+		}
+	}
+
+	private void processParameters(String service, String op, HttpServletRequest req) throws Exception {
+		String[] params = {service, op};
+		String[] sign = {"java.lang.String", "java.lang.String"};
+		String[] p_parameters = (String[])mbsc.invoke(axis2MBeanName, "getOperationParameters", params, sign);
+
+		for(int i=0; i<p_parameters.length; i++) {
+			StringTokenizer tokens = new StringTokenizer(p_parameters[i], ":");
+			String name = tokens.nextToken();
+			String value = tokens.nextToken();
+
+			String[] editParams = {service, op, name, req.getParameter(name)};
+			String[] editSign = {"java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String"};
+			mbsc.invoke(axis2MBeanName, "editOperationParameter", editParams, editSign);
+		}
+	}
+
+	private void processModule(String service, String op, HttpServletRequest req) throws Exception {
+		String module = req.getParameter("module");
+		String operation = req.getParameter("operation");
+
+		String[] params = {module, service, op};
+		String[] sign = {"java.lang.String", "java.lang.String", "java.lang.String"};
+
+		if(operation.equals("Engage")){
+			mbsc.invoke(axis2MBeanName, "engageModuleToOperation", params, sign);
+		}
+		else if(operation.equals("Disengage")){
+			mbsc.invoke(axis2MBeanName, "disengageModuleFromOperation", params, sign);
+		}
+	}
+
+	private void displayParameters(String service, String op) throws Exception {
+
+		echo("<tr><td><hr /><h2>Operation Parameters</h2></td></tr>");
+
+		String[] params = {service, op};
+		String[] sign = {"java.lang.String", "java.lang.String"};
+		String[] parameters = (String[])mbsc.invoke(axis2MBeanName, "getOperationParameters", params, sign);
+
+		if(parameters.length==0) {
+			echo("<tr><td>No parameters found for this operation.</td></tr>");
+		}
+		else {
+			echo("<tr><td><form action=\"operation\" method=\"get\"><table width=\"50%\">");
+			echo("<input name=\"operation_name\" type=\"hidden\" value=\""+op+"\" />");
+			echo("<input name=\"process\" type=\"hidden\" value=\"true\" />");
+
+			for(int i=0; i<parameters.length; i++) {
+				StringTokenizer tokens = new StringTokenizer(parameters[i], ":");
+				String name = tokens.nextToken();
+				String value = tokens.nextToken();
+				echo("<tr><td>"+name+"</td><td>:<input name=\""+name+"\" type=\"text\" value=\""+value+"\" size=\"25\"/></td></tr>");
+			}
+			echo("<tr><td></td><td><input type=\"submit\" value=\"Apply\" /></td></tr>");
+			echo("</table></form></td></tr>");
+		}
+	}
+
+	private void displayModules(String service, String op) throws Exception {
+
+		String[] modules = (String[])mbsc.getAttribute(axis2MBeanName, "modules");
+		ArrayList disengagedModulesList = new ArrayList();
+
+		echo("<tr><td><hr /><h2>Enagaged modules for the operation</h2></td></tr>");
+		echo("<tr><td><table width=\"30%\">");
+
+		for(int i=0; i<modules.length; i++) {
+
+			String[] m_params = {modules[i], service, op};
+			String[] m_sign = {"java.lang.String", "java.lang.String", "java.lang.String"};
+			Boolean engaged = (Boolean)mbsc.invoke(axis2MBeanName, "isEngagedToOperation", m_params, m_sign);
+
+			if(engaged.booleanValue()) {
+
+				echo("<tr><td>"+modules[i]+
+					"</td><td><form action=\"operation\" method=\"get\"><input name=\"process\" type=\"hidden\" value=\"module\" /><input name=\"module\" type=\"hidden\" value=\""+modules[i]+"\"/><input name=\"service\" type=\"hidden\" value=\""+service+"\"/><input name=\"operation_name\" type=\"hidden\" value=\""+op+"\"/><input name=\"operation\" type=\"hidden\" value=\"Disengage\"/><input type=\"submit\" value=\"Disengage\" /></form></td>"+
+					"<td><form action=\"module\" method=\"get\"><input name=\"module\" type=\"hidden\" value=\""+modules[i]+"\"/><input type=\"submit\" value=\"Edit\" /></form></td></tr>");
+			}
+			else {
+				disengagedModulesList.add(modules[i]);
+			}
+		}
+		echo("</table></td></tr>");
+
+		echo("<tr><td><hr /><h2>Disenagaged modules for the operation</h2></td></tr>");
+		echo("<tr><td><table width=\"30%\">");
+
+		String[] disengagedModules = (String[])disengagedModulesList.toArray(new String[disengagedModulesList.size()]);
+		for(int i=0; i<disengagedModules.length; i++) {
+
+			echo("<tr><td>"+disengagedModules[i]+
+				"</td><td><form action=\"operation\" method=\"get\"><input name=\"process\" type=\"hidden\" value=\"module\" /><input name=\"module\" type=\"hidden\" value=\""+disengagedModules[i]+"\"/><input name=\"operation\" type=\"hidden\" value=\"Engage\"/><input name=\"service\" type=\"hidden\" value=\""+service+"\"/><input name=\"operation_name\" type=\"hidden\" value=\""+op+"\"/><input type=\"submit\" value=\"Engage\" /></form></td>"+
+				"<td><form action=\"module\" method=\"get\"><input name=\"module\" type=\"hidden\" value=\""+disengagedModules[i]+"\"/><input type=\"submit\" value=\"Edit\" /></form></td></tr>");
+
+		}
+		echo("</table></td></tr>");
+	}
+
+}
\ No newline at end of file

Added: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/ServiceAgent.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/ServiceAgent.java?rev=291073&view=auto
==============================================================================
--- webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/ServiceAgent.java (added)
+++ webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/ServiceAgent.java Thu Sep 22 21:33:22 2005
@@ -0,0 +1,238 @@
+package org.apache.axis2.console.main;
+
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import javax.management.ObjectName;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+
+public class ServiceAgent extends HttpServlet{
+
+	PrintWriter writer = null;
+	private MBeanServerConnection mbsc = null;
+	private ObjectName axis2MBeanName = null;
+	private StringBuffer notice = null;
+
+	public void init(ServletConfig config) throws ServletException{
+
+	}
+
+	private void echo(String info){
+			writer.println("<p>" + info + "</p>");
+	}
+
+	public void doGet(HttpServletRequest request, HttpServletResponse response)
+		throws ServletException, IOException{
+
+			writer = response.getWriter();
+
+			response.setContentType("text/html");
+			response.setHeader("Cache-Control", "no-store");
+
+			PrintWriter out = response.getWriter();
+
+			String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n";
+
+			out.println(docType +
+						"<html>\n" +
+						"<head><title>Axis2Console - Service Agent</title></head>\n" +
+						"<body>");
+
+			process(request);
+
+			out.println("</body></html>");
+	}
+
+	private void process(HttpServletRequest req) {
+
+		echo("<table width=\"100%\"><tr><td><img src= \"images/asf-logo.gif\" /></td></tr><tr><td align=\"center\"><img src = \"images/axis.jpg\" /></tr><tr><td align=\"center\"><h1>Management Console</h1></tr>");
+		echo("<tr><td><a href=\"axis2console\">Axis2Console - Home</a></td></tr>");
+
+		try {
+			notice = new StringBuffer();
+			String service = req.getParameter("service");
+
+			echo("<tr><td><hr /><h1>Service: "+service+"</h1></td></tr>");
+
+			HttpSession session = req.getSession(false);
+			String host = session.getAttribute("host").toString();
+			String port = session.getAttribute("port").toString();
+			JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+host+":"+port+"/axis2");
+			JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
+			mbsc = jmxc.getMBeanServerConnection();
+			axis2MBeanName = new ObjectName("Axis2:type=management.Manager");
+
+			String process = req.getParameter("process");
+			if(process != null) {
+				if(process.equals("parameters")) {
+					processParameters(service, req);
+				} else if(process.equals("module")) {
+					processModule(service, req);
+				} else if(process.equals("operation")) {
+					processOperation(service, req);
+				}
+			}
+
+			echo("<tr><td>" + notice + "</td></tr>");
+
+			displayParameters(service);
+			displayModules(service);
+			displayOperations(service);
+
+		}catch(Exception e) {
+			echo("<tr><td><hr />Exception occured.\n" + e.getMessage() + "</td></tr>");
+		}
+	}
+
+	private void processParameters(String service, HttpServletRequest req) throws Exception {
+		String[] params = {service};
+		String[] sign = {"java.lang.String"};
+		String[] p_parameters = (String[])mbsc.invoke(axis2MBeanName, "getServiceParameters", params, sign);
+
+		for(int i=0; i<p_parameters.length; i++) {
+			StringTokenizer tokens = new StringTokenizer(p_parameters[i], ":");
+			String name = tokens.nextToken();
+			String value = tokens.nextToken();
+
+			String[] editParams = {service, name, req.getParameter(name)};
+			String[] editSign = {"java.lang.String", "java.lang.String", "java.lang.String"};
+			String info = (String)mbsc.invoke(axis2MBeanName, "editServiceParameter", editParams, editSign);
+			notice.append("<p>" + info + "</p>");
+		}
+	}
+
+	private void processModule(String service, HttpServletRequest req) throws Exception {
+		String module = req.getParameter("module");
+		String operation = req.getParameter("operation");
+
+		String[] params = {module, service};
+		String[] sign = {"java.lang.String", "java.lang.String"};
+
+		String info = "";
+		if(operation.equals("Engage")){
+			info = (String)mbsc.invoke(axis2MBeanName, "engageModuleToService", params, sign);
+		}
+		else if(operation.equals("Disengage")){
+			info = (String)mbsc.invoke(axis2MBeanName, "disengageModuleFromService", params, sign);
+		}
+		notice.append("<p>" + info + "</p>");
+	}
+
+	private void processOperation(String service, HttpServletRequest req) throws Exception {
+		String op = req.getParameter("operation_name");
+		String operation = req.getParameter("operation");
+
+		String[] params = {service, op};
+		String[] sign = {"java.lang.String", "java.lang.String"};
+
+		if(operation.equals("activate")){
+			mbsc.invoke(axis2MBeanName, "activateOperation", params, sign);
+		}
+		else if(operation.equals("deactivate")){
+			mbsc.invoke(axis2MBeanName, "turnoffOperation", params, sign);
+		}
+	}
+
+	private void displayParameters(String service) throws Exception {
+
+		echo("<tr><td><hr /><h2>Service Parameters</h2></td></tr>");
+
+		String[] params = {service};
+		String[] sign = {"java.lang.String"};
+		String[] parameters = (String[])mbsc.invoke(axis2MBeanName, "getServiceParameters", params, sign);
+
+		if(parameters.length==0) {
+			echo("<tr><td>No parameters found for this service.</td></tr>");
+		}
+		else {
+			echo("<tr><td><form action=\"axis2console\" method=\"get\"><table width=\"50%\">");
+			echo("<input name=\"service\" type=\"hidden\" value=\""+service+"\" />");
+			echo("<input name=\"process\" type=\"hidden\" value=\"parameters\" />");
+
+			for(int i=0; i<parameters.length; i++) {
+				StringTokenizer tokens = new StringTokenizer(parameters[i], ":");
+				String name = tokens.nextToken();
+				String value = tokens.nextToken();
+				echo("<tr><td>"+name+"</td><td>:<input name=\""+name+"\" type=\"text\" value=\""+value+"\" size=\"25\"/></td></tr>");
+			}
+			echo("<tr><td></td><td><input type=\"submit\" value=\"Apply\" /></td></tr>");
+			echo("</table></form></td></tr>");
+		}
+	}
+
+	private void displayModules(String service) throws Exception {
+
+		String[] modules = (String[])mbsc.getAttribute(axis2MBeanName, "modules");
+		ArrayList disengagedModulesList = new ArrayList();
+
+		echo("<tr><td><hr /><h2>Enagaged modules for the service</h2></td></tr>");
+		echo("<tr><td><table width=\"30%\">");
+
+		for(int i=0; i<modules.length; i++) {
+
+			String[] m_params = {modules[i], service};
+			String[] m_sign = {"java.lang.String", "java.lang.String"};
+			Boolean engaged = (Boolean)mbsc.invoke(axis2MBeanName, "isEngagedToService", m_params, m_sign);
+
+			if(engaged.booleanValue()) {
+
+				echo("<tr><td>"+modules[i]+
+					"</td><td><form action=\"service\" method=\"get\"><input name=\"service\" type=\"hidden\" value=\""+service+"\" /><input name=\"process\" type=\"hidden\" value=\"module\" /><input name=\"module\" type=\"hidden\" value=\""+modules[i]+"\"/><input name=\"operation\" type=\"hidden\" value=\"Disengage\"/><input type=\"submit\" value=\"Disengage\" /></form></td>"+
+					"<td><form action=\"module\" method=\"get\"><input name=\"module\" type=\"hidden\" value=\""+modules[i]+"\"/><input type=\"submit\" value=\"Edit\" /></form></td></tr>");
+			}
+			else {
+				disengagedModulesList.add(modules[i]);
+			}
+		}
+		echo("</table></td></tr>");
+
+		echo("<tr><td><hr /><h2>Disenagaged modules for the service</h2></td></tr>");
+		echo("<tr><td><table width=\"30%\">");
+
+		String[] disengagedModules = (String[])disengagedModulesList.toArray(new String[disengagedModulesList.size()]);
+		for(int i=0; i<disengagedModules.length; i++) {
+
+			echo("<tr><td>"+disengagedModules[i]+
+				"</td><td><form action=\"service\" method=\"get\"><input name=\"service\" type=\"hidden\" value=\""+service+"\" /><input name=\"process\" type=\"hidden\" value=\"module\" /><input name=\"module\" type=\"hidden\" value=\""+disengagedModules[i]+"\"/><input name=\"operation\" type=\"hidden\" value=\"Engage\"/><input type=\"submit\" value=\"Engage\" /></form></td>"+
+				"<td><form action=\"module\" method=\"get\"><input name=\"module\" type=\"hidden\" value=\""+disengagedModules[i]+"\"/><input type=\"submit\" value=\"Edit\" /></form></td></tr>");
+
+		}
+		echo("</table></td></tr>");
+	}
+
+	private void displayOperations(String service) throws Exception {
+
+		String[] m_params = {service};
+		String[] m_sign = {"java.lang.String"};
+		String[] ops = (String[])mbsc.invoke(axis2MBeanName, "getOperations", m_params, m_sign);
+
+		echo("<tr><td><hr /><h2>Operations</h2></td></tr>");
+		echo("<tr><td><table width=\"30%\">");
+
+		if(ops != null) {
+			for(int i=0; i<ops.length; i++) {
+
+				echo("<tr><td>"+ops[i]+
+					"</td><td><form action=\"service\" method=\"get\"><input name=\"service\" type=\"hidden\" value=\""+service+"\" /><input name=\"process\" type=\"hidden\" value=\"operation\" /><input name=\"operation_name\" type=\"hidden\" value=\""+ops[i]+"\"/><input name=\"operation\" type=\"hidden\" value=\"deactivate\"/><input type=\"submit\" value=\"Turn off\" /></form></td>"+
+					"<td><form action=\"operation\" method=\"get\"><input name=\"service\" type=\"hidden\" value=\""+service+"\"/><input name=\"operation_name\" type=\"hidden\" value=\""+ops[i]+"\"/><input type=\"submit\" value=\"Edit\" /></form></td></tr>");
+
+			}
+		} else {
+			echo("<tr><td>No operations are activated for the service</td></tr>");
+		}
+
+		echo("</table></td></tr>");
+	}
+}
\ No newline at end of file

Added: webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/TransportInAgent.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/TransportInAgent.java?rev=291073&view=auto
==============================================================================
--- webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/TransportInAgent.java (added)
+++ webservices/axis2/trunk/archive/java/scratch/Axis2Contribution/JMX/Axis2Console/src/org/apache/axis2/console/main/TransportInAgent.java Thu Sep 22 21:33:22 2005
@@ -0,0 +1,117 @@
+package org.apache.axis2.console.main;
+
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.util.StringTokenizer;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import javax.management.ObjectName;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+
+public class TransportInAgent extends HttpServlet{
+
+	PrintWriter writer = null;
+
+	public void init(ServletConfig config) throws ServletException{
+
+	}
+
+	private void echo(String info){
+			writer.println("<p>" + info + "</p>");
+	}
+
+	public void doGet(HttpServletRequest request, HttpServletResponse response)
+		throws ServletException, IOException{
+
+			writer = response.getWriter();
+
+			response.setContentType("text/html");
+			response.setHeader("Cache-Control", "no-store");
+
+			PrintWriter out = response.getWriter();
+
+			String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n";
+
+			out.println(docType +
+						"<html>\n" +
+						"<head><title>Axis2Console - TransportIn Agent</title></head>\n" +
+						"<body>");
+
+			process(request);
+
+			out.println("</body></html>");
+	}
+
+	private void process(HttpServletRequest req) {
+
+		echo("<table width=\"100%\"><tr><td><img src= \"images/asf-logo.gif\" /></td></tr><tr><td align=\"center\"><img src = \"images/axis.jpg\" /></tr><tr><td align=\"center\"><h1>Management Console</h1></tr>");
+		echo("<tr><td><a href=\"axis2console\">Axis2Console - Home</a></td></tr>");
+
+		try {
+
+			String transportIn = req.getParameter("transportIn");
+			echo("<tr><td><hr /><h1>Transport: "+transportIn+"</h1></td></tr>");
+
+			HttpSession session = req.getSession(false);
+			String host = session.getAttribute("host").toString();
+			String port = session.getAttribute("port").toString();
+			JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+host+":"+port+"/axis2");
+			JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
+			MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
+			ObjectName axis2MBeanName = new ObjectName("Axis2:type=management.Manager");
+
+			if(req.getParameter("process") != null) {
+
+				String[] params = {transportIn};
+				String[] sign = {"java.lang.String"};
+				String[] p_parameters = (String[])mbsc.invoke(axis2MBeanName, "getTransportInParameters", params, sign);
+
+				for(int i=0; i<p_parameters.length; i++) {
+					StringTokenizer tokens = new StringTokenizer(p_parameters[i], ":");
+					String name = tokens.nextToken();
+					String value = tokens.nextToken();
+
+					String[] editParams = {transportIn, name, req.getParameter(name)};
+					String[] editSign = {"java.lang.String", "java.lang.String", "java.lang.String"};
+					mbsc.invoke(axis2MBeanName, "editTransportInParameter", editParams, editSign);
+				}
+			}
+
+			echo("<tr><td><hr /><h2>Tansport Parameters</h2></td></tr>");
+
+			String[] params = {transportIn};
+			String[] sign = {"java.lang.String"};
+			String[] parameters = (String[])mbsc.invoke(axis2MBeanName, "getTransportInParameters", params, sign);
+
+			if(parameters.length==0) {
+				echo("<tr><td>No parameters found for this transport.</td></tr>");
+			}
+			else {
+				echo("<tr><td><form action=\"transportin\" method=\"get\"><table width=\"50%\">");
+				echo("<input name=\"transportIn\" type=\"hidden\" value=\""+transportIn+"\" />");
+				echo("<input name=\"process\" type=\"hidden\" value=\"true\" />");
+
+				for(int i=0; i<parameters.length; i++) {
+					StringTokenizer tokens = new StringTokenizer(parameters[i], ":");
+					String name = tokens.nextToken();
+					String value = tokens.nextToken();
+					echo("<tr><td>"+name+"</td><td>:<input name=\""+name+"\" type=\"text\" value=\""+value+"\" size=\"25\"/></td></tr>");
+				}
+				echo("<tr><td></td><td><input type=\"submit\" value=\"Apply\" /></td></tr>");
+				echo("</table></form></td></tr>");
+			}
+
+		}catch(Exception e) {
+			echo("<tr><td><hr />Exception occured.\n" + e.getMessage() + "</td></tr>");
+		}
+	}
+}
\ No newline at end of file