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